diff options
Diffstat (limited to 'day2/invids2.TXT')
| -rw-r--r-- | day2/invids2.TXT | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/day2/invids2.TXT b/day2/invids2.TXT new file mode 100644 index 0000000..a4a031e --- /dev/null +++ b/day2/invids2.TXT @@ -0,0 +1,58 @@ +\START92\
+\COMMENT=Single file dated Thu Dec 4 00:09:27 20
+\NAME=invids2
+\FILE=day2.invids2.92f
+(str)
+Func
+Local start,end,dims,dime,startn,endn,starte,ende,startne,endne,i,j,t,result,dime0,dims0,end0,start0,seen
+
+inString(str,"-")\->\i
+left(str,i-1)\->\start0
+right(str,dim(str)-i)\->\end0
+
+0\->\result
+dim(start0)\->\dims0
+dim(end0)\->\dime0
+{}\->\seen
+For j,2,dime0
+ mod(dims0,j)\->\i
+ If i\!=\0 Then
+ string(10^(floor(log(expr(start0))+j-i)))\->\start
+ dim(start)\->\dims
+ Else
+ start0\->\start
+ dims0\->\dims
+ EndIf
+ mod(dime0,j)\->\i
+ If i\!=\0 Then
+ string(10^(floor(log(expr(end0)))-i+1)-1)\->\end
+ dim(end)\->\dime
+ Else
+ end0\->\end
+ dime0\->\dime
+ EndIf
+
+ left(start,dims/j)\->\startn
+ left(end,dime/j)\->\endn
+ expr(startn)\->\startne
+ expr(endn)\->\endne
+ expr(start)\->\starte
+ expr(end)\->\ende
+
+ \(C)\ skip if end < last invalid
+ If expr(end)\>=\expr(startn&startn) Then
+
+ For i,startne,endne
+ string(i)\->\t
+ expr(repeats(t,j))\->\t
+ If t\>=\starte and t\<=\ende and ?contains(seen,t) Then
+ augment(seen,{t})\->\seen
+ result+t\->\result
+ EndIf
+ EndFor
+ EndIf
+EndFor
+Return result
+EndFunc
+
+\STOP92\
|
