diff options
| author | Andreas Grois <andi@grois.info> | 2025-12-04 00:13:00 +0100 |
|---|---|---|
| committer | Andreas Grois <andi@grois.info> | 2025-12-04 00:13:00 +0100 |
| commit | 1edd26243bde242f0de78c947c94cf3d73e6070b (patch) | |
| tree | 6ff0f51ecabc4fcf96f1b5428dbec492a4638429 /day2/invids2.TXT | |
| parent | fd5a331808b6bec13ca4a7cdeee192da6c456184 (diff) | |
Day2
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\
|
