From 1edd26243bde242f0de78c947c94cf3d73e6070b Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Thu, 4 Dec 2025 00:13:00 +0100 Subject: Day2 --- day2/contains.TXT | 17 +++++++++++++++ day2/day2.contains.92f | Bin 0 -> 182 bytes day2/day2.invids.92f | Bin 0 -> 840 bytes day2/day2.invids2.92f | Bin 0 -> 952 bytes day2/day2.part1.92f | Bin 0 -> 357 bytes day2/day2.part2.92f | Bin 0 -> 358 bytes day2/day2.repeats.92f | Bin 0 -> 253 bytes day2/invids.TXT | 53 ++++++++++++++++++++++++++++++++++++++++++++ day2/invids2.TXT | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ day2/part1.TXT | 24 ++++++++++++++++++++ day2/part2.TXT | 24 ++++++++++++++++++++ day2/repeats.TXT | 24 ++++++++++++++++++++ 12 files changed, 200 insertions(+) create mode 100644 day2/contains.TXT create mode 100644 day2/day2.contains.92f create mode 100644 day2/day2.invids.92f create mode 100644 day2/day2.invids2.92f create mode 100644 day2/day2.part1.92f create mode 100644 day2/day2.part2.92f create mode 100644 day2/day2.repeats.92f create mode 100644 day2/invids.TXT create mode 100644 day2/invids2.TXT create mode 100644 day2/part1.TXT create mode 100644 day2/part2.TXT create mode 100644 day2/repeats.TXT (limited to 'day2') diff --git a/day2/contains.TXT b/day2/contains.TXT new file mode 100644 index 0000000..9e9acad --- /dev/null +++ b/day2/contains.TXT @@ -0,0 +1,17 @@ +\START92\ +\COMMENT=Single file dated Thu Dec 4 00:09:21 20 +\NAME=contains +\FILE=day2.contains.92f +(list,value) +Func +Local i +For i,1,dim(list) + If list[i]=value Then + Return true + EndIf +EndFor +Return false + +EndFunc + +\STOP92\ diff --git a/day2/day2.contains.92f b/day2/day2.contains.92f new file mode 100644 index 0000000..1841e97 Binary files /dev/null and b/day2/day2.contains.92f differ diff --git a/day2/day2.invids.92f b/day2/day2.invids.92f new file mode 100644 index 0000000..7de16ed Binary files /dev/null and b/day2/day2.invids.92f differ diff --git a/day2/day2.invids2.92f b/day2/day2.invids2.92f new file mode 100644 index 0000000..e19ab40 Binary files /dev/null and b/day2/day2.invids2.92f differ diff --git a/day2/day2.part1.92f b/day2/day2.part1.92f new file mode 100644 index 0000000..0952f5b Binary files /dev/null and b/day2/day2.part1.92f differ diff --git a/day2/day2.part2.92f b/day2/day2.part2.92f new file mode 100644 index 0000000..c50a464 Binary files /dev/null and b/day2/day2.part2.92f differ diff --git a/day2/day2.repeats.92f b/day2/day2.repeats.92f new file mode 100644 index 0000000..fe575f1 Binary files /dev/null and b/day2/day2.repeats.92f differ diff --git a/day2/invids.TXT b/day2/invids.TXT new file mode 100644 index 0000000..4661847 --- /dev/null +++ b/day2/invids.TXT @@ -0,0 +1,53 @@ +\START92\ +\COMMENT=Single file dated Wed Dec 3 21:00:18 20 +\NAME=invids +\FILE=day2.invids.92f +(str) +Func +Local start,end,dims,dime,startn,endn,starte,ende,startne,endne,i,t,result + +inString(str,"-")\->\i +left(str,i-1)\->\start +right(str,dim(str)-i)\->\end + +0\->\result +dim(start)\->\dims +dim(end)\->\dime +\(C)\ any uneven character id is valid +If mod(dims,2)=1 Then + string(10^(floor(log(expr(start))+1)))\->\start + dim(start)\->\dims +EndIf +If mod(dime,2)=1 Then + string(10^(floor(log(expr(end))))-1)\->\end + dim(end)\->\dime +EndIf + + +If dims=dime and mod(dims,2)=1 Then + Return 0 +EndIf + +left(start,dims/2)\->\startn +left(end,dime/2)\->\endn +expr(startn)\->\startne +expr(endn)\->\endne +expr(start)\->\starte +expr(end)\->\ende + +\(C)\ skip if end < last invalid +If expr(end)\t + expr(t&t)\->\t + If t\>=\starte and t\<=\ende Then + result+t\->\result + EndIf +EndFor +Return result +EndFunc + +\STOP92\ 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\ diff --git a/day2/part1.TXT b/day2/part1.TXT new file mode 100644 index 0000000..82b0cda --- /dev/null +++ b/day2/part1.TXT @@ -0,0 +1,24 @@ +\START92\ +\COMMENT=Single file dated Wed Dec 3 21:00:53 20 +\NAME=part1 +\FILE=day2.part1.92f +(str) +Func +Local p1,p2,dimstr,curr,result +0\->\result +1\->\p1 +dim(str)\->\dimstr + +While p1\p2 + If p2\<=\0 Then + dimstr+1\->\p2 + EndIf + mid(str,p1,p2-p1)\->\curr + p2+1\->\p1 + result+invids(curr)\->\result +EndWhile +Return result +EndFunc + +\STOP92\ diff --git a/day2/part2.TXT b/day2/part2.TXT new file mode 100644 index 0000000..3c606bc --- /dev/null +++ b/day2/part2.TXT @@ -0,0 +1,24 @@ +\START92\ +\COMMENT=Single file dated Thu Dec 4 00:10:11 20 +\NAME=part2 +\FILE=day2.part2.92f +(str) +Func +Local p1,p2,dimstr,curr,result +0\->\result +1\->\p1 +dim(str)\->\dimstr + +While p1\p2 + If p2\<=\0 Then + dimstr+1\->\p2 + EndIf + mid(str,p1,p2-p1)\->\curr + p2+1\->\p1 + result+invids2(curr)\->\result +EndWhile +Return result +EndFunc + +\STOP92\ diff --git a/day2/repeats.TXT b/day2/repeats.TXT new file mode 100644 index 0000000..89bc52c --- /dev/null +++ b/day2/repeats.TXT @@ -0,0 +1,24 @@ +\START92\ +\COMMENT=Single file dated Thu Dec 4 00:10:23 20 +\NAME=repeats +\FILE=day2.repeats.92f +(s,i) +Func +Local j,t +If i=1 Then + Return s +ElseIf i=2 Then + Return s&s +ElseIf i=3 Then + Return s&s&s +ElseIf mod(i,2)=1 Then + floor(i/2)\->\j + repeats(s,j)\->\t + Return t&t&s +EndIf +repeats(s,i/2)\->\t +Return t&t + +EndFunc + +\STOP92\ -- cgit v1.2.3