Compare commits

...

23 Commits

Author SHA1 Message Date
Patrick Michl
bdfb7e1ff3 add solutions for day 22,23,24 and 25 2021-12-25 06:46:42 +01:00
Patrick Michl
3f9df3ee38 solve day 21 2021-12-21 21:38:12 +01:00
Patrick Michl
028097d209 solutions for day 16, 17, 18 19, 20 2021-12-20 22:12:26 +01:00
Patrick Michl
9b26d17786 solve 14 and 15 2021-12-15 08:35:43 +01:00
Patrick Michl
0ed2beea43 solve day 13 2021-12-13 08:35:12 +01:00
1e43c1d1b2 solve day 12 2021-12-12 07:06:12 +01:00
21ebe11abb solve day 11 2021-12-11 07:03:27 +01:00
Patrick Michl
7789002a2e cleanup day 10 a bit 2021-12-10 15:27:27 +01:00
5094014b93 solve day 10 2021-12-10 06:58:20 +01:00
Patrick Michl
1bf812ce9d solve and cleanup day9 2021-12-09 07:22:03 +01:00
bbd18bcfd0 day 8 p1 2021-12-09 06:52:32 +01:00
Patrick Michl
81abf00d17 puh part2 day 8 2021-12-08 07:42:24 +01:00
812abb8562 day 8 p1 2021-12-08 06:40:56 +01:00
14a148f454 day 7 2021-12-07 06:48:26 +01:00
Patrick Michl
0fc3fcc67b clean up day 6 and add "precompilation" function that runs part once to precompile the function and then times the compiled result 2021-12-06 07:41:20 +01:00
Patrick Michl
9174bfc690 fix my stupidity and refactor p1 to use generic solution 2021-12-06 07:02:23 +01:00
da41491861 day 6 p1 2021-12-06 06:52:26 +01:00
594bc3f198 day 5 2021-12-05 07:03:33 +01:00
2af544717c day 4 2021-12-04 08:21:24 +01:00
Patrick Michl
8bfc4fec97 use subsript :D 2021-12-03 10:11:38 +01:00
Patrick Michl
40682f6cb6 optimize day 3 2021-12-03 09:26:46 +01:00
7d2923a6bc day 3 2021-12-03 07:13:24 +01:00
6e5155d169 solution day 2 2021-12-02 06:26:00 +01:00
49 changed files with 6965 additions and 2 deletions

18
aoc.jl
View File

@@ -35,15 +35,29 @@ end
function _run_parts(day)
input = _input(day)
if "precompile" ARGS
@info "precompilation is on"
end
if isdefined(Main, :p1)
p1_res = @time Main.p1(_input(day))
if "precompile" ARGS
i = copy(input)
Main.p1(i)
end
i = copy(input)
p1_res = @time Main.p1(i)
@info "Part 1: $p1_res"
else
@info "p1() not defined. skipping..."
end
if isdefined(Main, :p2)
p2_res = @time Main.p2(_input(day))
if "precompile" ARGS
i = copy(input)
Main.p2(i)
end
i = copy(input)
p2_res = @time Main.p2(i)
@info "Part 2: $p2_res"
else
@info "p2() not defined. skipping..."

102
data/day_10.txt Normal file
View File

@@ -0,0 +1,102 @@
([({<(({<[(<([{}<>])<(()<>){<>[]}>>[[{<>{}}[<>{}]][(<>[])<{}<>>]]){[{{[][]}[[]{}]}({{}[]}[{}<>])]({({}{})
([{{[(<{[{{<[{{}[]}{(){}}]{[{}{})([]())}>}(({{{}}{<>{}}}{(()[])(()<>)}){<<{}()><[][]>>})}(<<<(<
((<[[<([[({{[([]{})([][])]{({}())(()}}}({[[][]](()<>)}(<[]{}>[[]{}]))}<[[{()<>}<[][]>]]{{{
{{[{{<[{[[(<((<>())(<><>))<<()[]>>>)<<<(<><>)[()()]><([])<[]>>>{{({}()){[][]}}<[[]]>}>]]<[
[<{(<{<<[[[[(<{}()>{{}()})[[()()]<{}()>]]{{<<><>>({}<>)}(([]{})[{}<>]}}]{{({[]<>}{[][]})<[<>[]]<{}()>>}[{
<<{<{<<{<<[(([<>()][<>{}])[<()<>>{()[]}])[<({})<<>[]>><<[][]>[[]<>]>]]>>((<<<(<>[])[{}{}]>[<[]{}>({})]>>)<
<[[[(<{[{((<{(()[])[{}<>]}([[][]][()<>])>[(<[]())<<><>>){({}{}){<>[]}}]))}]}>{<([<<[<(()<>)
({{{<<<{({[{[<()[]>({}())]{<{}()>({}{})}}]{([(<>)<[]<>>]{([]<>)(()())})(<<<><>>{{}{}}>[({}{})<()
{{<<[<[{<(({{({}<>)<<>()>}{{{}<>}}}{<({}())({}<>)>([<><>]{()[]})}))<[<{<[]{}>([][])}((<>())({}[]
[[<([({<<<<{<{<><>}{()<>}>}>{(([[]{}>[{}()])[[[][]]])(<[[]<>](())>(<()[]>({}<>)))}>{<[<{{}{}}
<<<[[(<[<<<{([{}[]]<[][]>){{(){}}[<>{}]}}><([{<><>}<[]()>]<[[]()]<{}{}>>)>>{(<[[(){}]](<<>()>[<><>]
<<[<[<{[<[(<[<()[]>]{[{}[]][[]<>]}>)[{{[()()]{{}()}}{{<>}{{}<>}}}<{(()[]]{[]<>}}([<>()]<[]()>)>]]><{{<
([([(<([((<{<[[][]](()[])}{<[]()>[<>[]]}}{({(){}}[{}[]]){{<>[]}[()[]]}}>[<({[]()}<()<>>)(<[]{}>([])
<<{{([<<[{({[<{}[]>{()()}](<<>()>)}[[<()<>>{{}{}}]((<>[]){[][]})])([{((){}){[]{}}>{[{}{}]<()<>>}
[(<[[<{({{{{{{<>()}([]{})}([()()])}([[()()]([])](<<>()>({}[])))}[{[[()[]][()()]]{[{}<>]}}<{({}())<[]{}>}<<<>[
[({{{[(<{[[(<[<>[]]<[]()>>{{[]<>}})]<{([[]<>]([][])){{()()}{{}{}}}}>]}{{{[<({}())>(([]()){
<({([<[([<<(<<<>{}>>[{<>[]}])>><<<(((){})[<>{}])<(()[])<{}<>>>>>([[[()][()]]])>]{<([<{[]<>}[{}<>]>]<{[()
[([[{<({(([[{{{}<>)[[]()]}(({}<>)[{}{}])]]<<{({}<>)(()())}>{[[(){}]({}[])]<{{}{}}>}>)<{([[
<(<<[{<<((<(<{<>[]}>[([]{}){<><>}])[{([]<>)(<>[])}(<()[]><[]<>>)]>))><[(<[([<>[]]<<>[]>){<()()}<{}>}
<{{<([<{[{({({<><>}({}()))<({}<>)<(){}>>}[(<(){}>[{}<>])<(<>[])([]())>])}[[{({()<>}({}<>)){(<>())<{}
[[(<({{<(({[{<()[]>{()[]}}]<[<()[]>{<>[]}]{{()[]}[{}{}]}>}(({({}<>)[[]{}]}[[[]()](()<>}])({{{}{}}}
({<<[[[<<[(<([()()]{(){}})>)]((([<()><(){}>]<{[]<>}[[]]>)<(<[]<>>(<>[]))>)({[(<><>)[<>]]{<()
{[((<{{{<(<<{{()()}}<({}<>)<[]<>>>}{{<(){}><<>[]>}{[<>{}]<()<>>}}>{<[([])<(){}>]><{[()<>](<>{})
({([{<<(<{[[{[{}()][()[]]}([()[]]((){}))]<([<><>}{{}<>}){<[]<>>(<>[])}>]}[<[({(){}}(<>()))]>]><<({({<>{}
[<{([<{({{<[<<()[]>[(){}]>{{{}()}(<>[])}]>[{((<>{})<{}{}>){<{}[]>}}[(([]<>)(<>[])){({}())[{}<>]}]]}<[[[{{}()}
([{{({{{[(<(({<>{}}<[]<>>))((<<><>>){<{}>{<><>}})><<[([][]){{}()}]([[]<>])><({()<>}[[]{}])<({
(([[<[[[([<<(<<>()>{(){}})<([]())<<>[]>>>{[<<><>>[[]]]}>])({({[<[]{}>]<[(){}][[]()]>}([<[]()>[()
(<[[<[({(({[{[[]()][[]()]}]}(<[(()<>)[<>]]{(()())[<>{}]}><{([]{}){{}()}}>)))})({[[<[[<<>()>(()())]{<()[]
[[([<<[[<<<((((){}){{}[]}){<{}<>><{}{}>}){{<{}[]>[<>[]]}(<{}>(()()))}>[(<(<>{}){{}()}>(([])<()>)}<(<<>()>)<{[
{({{[[({{{{<({[]()}<[][]>)>}{(({[][]}[()<>])<<[]{}><[]()>>)<([[]](()()))[{[]<>}(()[])]>}}}}((
{[(([({[[(<{([[]][[]<>])<<<><>>[{}{}]>}{<({}{}>{{}()}>{(<>{})[[]<>]}}>)((([{{}()}({}[])])[[{<>{}}]([()()])]
[[{(((<(<<<((((){})[()()])<[()()]{[]<>}>)>><<{([[]{}])}>[{({<>{}})((<>{})<[][]>)}({([][])[<
{({{<[<{(([[<<<>{}><()<>>>{(()())([][])}]{{{(){}}[()<>]}(<<><>>{[][]})}]{[<[[]{}]<{}()>>((<><>)(()()))]<(<()<
<[({(<[{(<([<<<><>>>{{()[]}<[]>}]<[(<>{})({}<>)]((()[]){[]{}})>)<<[[()()]]{<[]<>>(()())}>>}<[{([<>()]<(
<([<{[(((<((<{[]<>}<[]<>>>{<(){}>}))([[{<><>}{<>{}}]])>)(([[[({}())<<><>>][<<>[]>(<>())]]<<<<>{})[[]
<{<{[(<<[<<{{{()<>}(()[])}((()[]){(){}})}>[{({<>()}[[]<>])[{{}()}<()[]>]}{([()<>][[]{}]][[{}<>][(){}]
{([[{<({{[[{<<{}{}>{[]}}[(()<>){{}<>}]}(({[][]}{[]<>})[(<>)[()()]])]](<(<{()()}[<>]><[<>()]>
({<[[([{[{({[<()()>[<>{}]]{[<>[]]<{}<>>}})}[([<{[]}<<>{}>>[([]<>)]][[([]())<<><>>]])]]}])]{<([({[(
{{{{[[[{[[{(({[]()})){{(()[])<[]<>>}{<()[]>(<>())}}}]<{{<[<><>][{}()]>}[<{[][]}(<>[])>({[]()}
[<{{([(<<{[<[[{}()]]<{{}<>}<[]()>>>[<<()<>>[<>[]]>]][[{<<>()>[(){}]}[<{}>{{}{}}]](((()>{{}}){[[]<>][
[(<((({(<{<(({[]{}}(<><>))({{}()}{{}<>}))[<[<>()][[]()]><{{}[]}([][])>]>((<[[][]]>({{}()}<[]
<[{{<[({{<(<<<{}<>>{(){}}>{{<><>}{{}()}}){([{}[]](()[]))[{{}<>}[<><>]]})(<[[{}<>]{(){}}]<{()[]}[<><>]
<<({{[(({<{{{((){})<()()>}{[<>{}]{{}<>>}}{({()<>})[([][])<{}[]>]}}[{{{()<>}<[]()>}[<[]{}>{[]{}}]}[[[()[]]][({
{{[[([([[{<<{[[][]]}>{<<<><>>{()[]}>{[{}()][{}{}]}}>}][[<([{<>[]}{<>()}]{{()<>}({}[])>)(<<[]{}>{[]<>}
[[(<<{<[<[[<({<>[]}([]<>)}{<()()>}>]]{{<([(){}]{<>()})<[[]()][(){}]>><{<[]()>[<><>]}{(<>[])(()[])}>}}>[{
<([{{<<{<({[<[{}<>][{}()]>[[()[]]{{}{}}]]<({[]<>}([][]))([(){}](()<>))>}<<({<><>}<<>()>)>>){[[([()<>]<{}
{<<[[[[{<(<[[(()())<(){}>](<()[]><[]<>>)]<(<()[]>[<>[]])(<{}[]>({}{}))>><{(([]{})[<>()])<<{}[]>>}>)<({<{{}{}}
<(({{([{{<([({()()}{{}{}})({[]<>}{<>[]})][(({}()){[]{}})({[]{}})]){<([<>]{<><>})[{{}[]}]><[
[[{<<<<[<(<<<<[][]>(<>()]>{[<>()]{(){}}}>>{[<<{}()><<>()>><{[]()}{{}[]}>]<(<{}[]><<>()>)({[][]}([]{
{[([(([[{{{[{{<>[]}}(<[]{}>)]>(((<{}{}><(){}>)([[]{}]))(<[{}{}]{{}()}>{[[][]][(){}]}))}}]](<(((<{<<
<{{([[((({{[[[[]<>]<<>{}>][{()<>}{(){}}]]}[<<<[]<>><<>[]>>>]}<{[(<<>[]>(<>{}))[<{}()>(<><>)]]([{{}[]}{{}[
[<[[{{([<<<{{[(){}](<>[])]<<(){}>{{}[]}>}<[{()<>}{<>[]}][<{}>[[]]]>>{[[({}())]<<<><>>>][({{}[]}
[[(<[{[(({{[<<<><>><{}()>>{({}[])<<>{}>}}}}[[[<[()()]<{}()>><((){})(()[])>]]{[{{<><>}<()[]>}[({}<>)<[][]>
({{[[<([<[{<[([]<>){[][]}]<((){})<<>[]>>><<<{}<>>[()<>]><{<>{}}{<>[]}>>]](([[(()<>){(){}}]<[<><>][{}{
{([([<{([{[[[{[][]}<()[]>]](<<<><>>>{<<>()>({})})]}[(<<[{}[]][[]()]>[<[]<>>([]<>)]>)<{[<()(
<(({[[<{{{[({(<>){{}[]}}[({}()){[][]}])[[{()()}<[][]>][<()<>>([]<>)]])}{[<[(<>{}){()}][(()()){[]<>}]>(([
[<<[[<([([[[([[]<>]<<>{}}){<[]{}>[{}<>]}]((({}{})){{[]<>}([][])})](([((){}){{}{}}]){({{}[]}<{
[[{{<{[<<[({<<()()>[[]<>]>[(()<>){()()}]}[<<{}<>>([]())>{<()[]>[{}<>]}])]><[{{{{[]<>}(<>())}[(()())([
{<([{{(<<{([{<()()>{<>[]}}]{((()[])([]()))})}>{(<({<{}<>>}{[[][]](<>[])})><{<[<>]>[{()[]}{()[]}]}{{
({(<{<{[{<{{([()[]]([]{}))[(()){[]{}}]}({{[][]}([][])})}<<<(<>[])[[]{}]>{[<>()](()())}><<[
{[[<[<<[[{({{{[][]}<[]()>}}([{[][]}(()<>)][[<>()](()[])]))}([[({{}<>}(()[])){{[]()}(<>{})}][{
<{[({{[{[[[<<({}[])<()>>(({}{})[[]()])>]<({(()<>)]<[()[]]>)[(((){})){((){}){<>[]}}]>]]}][{[[[(<
(<(<{(<{{[{{{[<><>][[]]}}{(((){})[<>{}])}}{{{<[]()><(){}>}(<[]>{()()})}[<([]<>)>]}]}[<((({(){}}<
{<(((([[{{[<{[()[]]{<>[]}}[<{}<>>{()()}]>](([<[]{}>[{}{}]]{{()[]}{(){}}})<{({}[])[{}<>]}({<>[]}({}()))>
[<<(<({[[<{([[<>{}]<{}<>>]{{<>{}}[[][]]})<(<(){}>{[]{}}){([]())[()()]}>}[<({<><>}[<>{}])[(<>())[<>{}]]
(<{<{[[<(((<[{<>()}<{}()>]><[[[]{}]]({(){}}{<>()})>){<<[[]()]{<>[]}>>[[<<>[]><{}[]>][{[]{}}
({[{(([[([[[[{()[]}]][{[()]}({[][]}([][]))]](<{<{}[]>((){})}{[()<>]<{}[]>}>[(([][]){[]<>})[(<>()
{[{((<{<{[<[{[<><>](()())}]>(<(<()()>)>{(([])<[]()>)<<()<>>[<>[]]>})]([<([<>[]](<><>))((<><>))>])}
<[<[[<<<{[[{((<>{})[<>()]){[<>[]]<{}<>>}}(<[(){}]{{}()}>{({}{}){{}{}}})]]([[[[()()](()[])][{(){}}(()()
([{<[{<{<{<<<(())[<>()]>[<<><>>]>(<[<><>]<{}<>>><{{}{}}[()[]>>)>[<[[<>()][[]{}]]<[()()][<>[]]>>(<({}[])<{
{[[{<{<<<(<[<(()())[<>[]]><[()[]]>>[<[(){}]<<>[]>>{<{}{}>[()<>]}]>)>>><<<[(<[<{}()>[<>()]]
(<[[(({<<[((<(<>())>[[[]()]([])])<{[<>()]{<>[]}}[<<>[]>]>)(<<[<>{}]<[]()>>>[{{[]{}}<()<>>}{(
{{<<[<<<[[{{{<<>()>(<>())}[<<>()><[]<>>]}<(<<>()>{(){}}){<<>()>}>}[<{(<>[]){{}<>}}[{(){}}[(){}]]>{
([{<(<[{[([(<{{}[]}((){})>[<<>()>[()[]]])]({<([][]){{}<>}>})){[{({[]{}}([]<>))<[[]<>]>}]}]}[<[{[<[<>
(<{{([<<<{([[<()>([]<>)]<[[]{}]>]){({<<>()><<>()>}[[[]<>><[]>])<{([])[[]<>]}<<<>{}>{[]()}>>}}><[(({{{}()}
<{<<[[([(<(({[<>{}]<<>[]>}[([][])[[]()]])[{<<>[]}{[]()}}{[()()]([][])}])>[(<({<>[]}<(){}>)<<()<>>[[][]]
((<([[[<<{{[<(()())>]}}[{<<{{}{}}{()[]}>{{<>{}}}>{([[]{}][()<>])({(){}}<<>[]>)]}{<<<<>()>><<(){}>{{}[]}
[<<<{<{[[{{<<[[]](()[])>{({}{})[{}()]}>[([{}]([]())){(()[])<{}<>>}]){[{{[]}[[]]}<{[]{}}<()()>>]}
[[(<((<{[<<[[[(){}]<()()>]{(<><>)[<>[]]}]>((<{()<>}[<>[]]>((()())<{}[]>)))>[([<<{}<>>({}[])>((()<>){[][
[<(<(({[{<<<[({}[])[[]()]]>{<<<><>>[()()]><[[]()]{<><>})}>[[<([])(<>)>{[(){}](<>{})}][{[[]()][{}<>]}<
([<{[{((<[([({{}[]}[{}[]])<{[]{}}<<><>>>]{<(<>{})[<><>]>({[][]}<()<>>)})[<(<{}[]>({}{})){{[]()}}>(
[<[<({<({((<[{[]<>}({}{})](<{}()>{[]()})>{{[[][]][()()]}([[]()]([]{}))}){[<[[]()]>[<[]()>{()<>}]]})}<[[{{<[]
<{[[[[[{(<((<{[]{}}({}[]]>(<()[]>))){[({<>[]}{{}()})<[[][]]<[]<>>>][{{()[]}(()<>)}{(<>{})<[]<>>}]}>({[([
[(([[<[{<[[<{{()<>}[<>()]}(({}()){()<>})>]]<[{{{()[]}{<><>})[{[][]}]}]>>[[[{[{()<>}[<>()]]({
([[([([<{{((([<><>]){[<>{}](()[])}){<<<>()>[{}()]>})[[<[{}()]([]{})>]]}{[{{([]()){(){}}}(<{}{}>)}{[<
{{{{(<[(<(<[{([][])[<>()]}<{{}()}>][<(<><>)<[]<>>>{{<><>}[()()]>]>([({[]()}(()[]))[({}[])((){}
<[<<<<({<[[{(<{}()>[[]])}]{<([{}()]>{<{}<>>[[]<>]}><(([]()){[][]})[(<>()){<>[]}]>}]({{<<()<>>(<>())>[({}
[{(<<([[{(<{<[()[]][<>]>[{<>[]}<()[]>]}>[([{[]<>}{()<>}])({(<>())}{<{}[]>{[]()}})]){([[<[]<>>{{}{}}]([[]{}][[
<[(<<<<<<{{([[<>()]{{}()}]<({}[])({}<>)>){{[[]<>]({}[])}}}({<(<>())(<>())><([]){[]<>}>})}{{(<({}{}
[[<[{{<<<([[<{<><>}<()<>>>{{()}({}{})}]{[<{}[]>{[]{}}][{<><>}(<><>)]}](({<<>()>})[<<[][]>[<>()
[[{<{((<((<([<[]<>>(<>())])(<[{}[]][()<>}>(((){}){[]()}))>[{(<<>[]>{<><>}){<(){}>}}[<(()[]){()}>]]){(({{{}[]}
(({{{[{([<[<[{()()}][(()[])(<>())]>{{<[]<>>{[]()}}{[<>[]]<{}()>}}]<([{()()}<(){}>]{[<>[]}<()<>>})>>([<<{{}[]
{<<({<[({{{(<({}{})<[]()>><({}[]){()[]}>)(((()<>)<{}{}>)({<>()}({}[])>)}{({<{}{}>{(){}}}(<[]{}>{<
<<[<{<<[<{([([{}[]][(){}]){([]())[{}()]}])}>{{([{[()()]<[][]>}[({}[])((){})]]{({[]{}}[[]<>]){(()())({}[]
[[({<{[(({<({<<>{}><[]{}>}[({}()){<>[]}])>})[[<([<[]>[{}<>]][([]{}){[]}])>(<[[<>()}{<>{}}][{()[]
{[<[[[{[<[{{<{{}<>}{<>[]}>{([]<>){{}{}}]}}<{((<>{})[()()]){{<>()}<{}[]>}}<<<<>[]>>{[()[]][{}{}]}>>]{[({{<>()}
[([[<<[([[<[{[<><>][()<>]}[[[]<>]<{}>]](([[]<>]<<>{}>))>(<{<[][]>{{}()}}{[[]()]{<>[]}}>[[<()<>>({}<>)]]
[{<(({<[<[[[[{<>[]}]]([{()<>}<()[]>]([[]<>]<<><>>))][{<{[]}{[][]}>[[<>{}]<[][]]]}<[(<><>)[<
<[[<{<<<(([([[{}{}](()<>)][([]<>)[<>()]])][<<({}())[[][]]>>])<<<[({}<>){()<>}]>[[[(){}][[]]]<<()<>>}]>[<(<<>{
(({{((<{[{({(([]{})<()>>{{{}()}([]<>)}}){<((<>())(())){<()()>([]())}>}}[{(<<<>{}>>[<(){}>{()<>}])}
<[<[(([{<[{(<<<>()>[{}<>]><<<>()>[{}{}]>)<({[]{}}[{}[]])[[()<>]({}<>)]>}<[<{[][]}<[][]>>[<<><>>]][{({}[])
{[{<[([[[[({{[{}{}]{[]()}}<([][])[[][]]>}{({<>()}(<>[]))[({}<>)[<>{}]]})]]]{{{{[[[{}[]](()<>)][

10
data/day_11.txt Normal file
View File

@@ -0,0 +1,10 @@
4781623888
1784156114
3265645122
4371551414
3377154886
7882314455
6421348681
7175424287
5488242184
2448568261

22
data/day_12.txt Normal file
View File

@@ -0,0 +1,22 @@
ax-end
xq-GF
end-xq
im-wg
ax-ie
start-ws
ie-ws
CV-start
ng-wg
ng-ie
GF-ng
ng-av
CV-end
ie-GF
CV-ie
im-xq
start-GF
GF-ws
wg-LY
CV-ws
im-CV
CV-wg

789
data/day_13.txt Normal file
View File

@@ -0,0 +1,789 @@
103,224
624,491
808,688
1076,130
700,26
55,794
119,724
773,809
875,33
922,135
509,260
801,176
1143,85
619,526
1250,138
753,431
1260,654
276,457
637,718
1183,115
284,137
539,757
279,85
1128,474
406,469
1086,170
927,673
310,702
35,796
268,892
202,249
820,878
992,121
339,649
1275,796
1113,290
336,616
522,471
755,764
631,204
241,393
455,546
1165,176
304,276
855,859
582,380
437,9
944,400
199,770
124,473
522,423
167,85
606,493
1158,688
1186,473
981,54
790,507
704,493
788,362
971,201
512,889
758,810
1101,770
325,840
734,873
725,586
416,105
1183,365
1233,725
698,256
418,112
520,507
276,773
634,185
483,693
612,256
651,603
1225,53
1268,759
35,339
311,474
984,592
1237,770
1093,129
755,639
671,278
788,471
430,810
693,231
281,227
454,178
1,54
1290,499
619,407
1081,575
1252,266
1186,421
698,638
1218,561
954,763
692,402
923,532
281,631
222,777
1047,316
1109,215
513,824
771,645
802,640
769,471
42,256
619,80
913,425
340,68
397,833
539,137
1136,654
515,18
507,247
1274,402
970,364
913,362
328,410
775,404
164,16
356,763
545,353
790,506
780,46
378,569
276,437
878,777
159,613
313,137
377,418
134,22
483,14
1207,670
1238,738
528,268
913,761
1009,501
1217,805
865,361
460,801
358,715
857,775
552,842
771,197
627,40
765,577
1071,704
862,638
811,686
219,413
904,425
728,738
1020,588
1240,225
619,78
611,180
610,474
388,135
957,582
194,43
1027,842
917,864
537,770
831,26
1240,669
1034,582
1210,49
1036,282
1217,537
271,100
537,691
584,290
224,618
1111,546
610,26
726,221
1053,509
1295,278
1094,859
725,245
552,52
981,168
448,190
905,64
700,126
132,179
930,648
692,189
659,291
1027,852
984,78
318,121
1026,757
889,385
184,596
746,50
850,93
233,173
234,130
201,679
290,588
510,0
284,869
939,628
147,303
1265,78
445,361
763,477
1250,586
1178,715
282,196
1290,617
719,191
460,93
932,325
529,343
112,829
967,567
43,714
545,541
541,423
612,759
1262,196
473,522
878,117
512,596
182,446
783,529
797,70
768,65
477,270
552,810
373,227
502,682
378,121
430,724
592,565
180,254
145,718
184,298
748,354
127,147
845,400
951,485
393,260
898,357
480,667
541,871
507,199
1267,714
407,406
288,494
152,654
827,14
1028,698
1000,192
549,169
490,211
1111,592
535,404
26,854
372,126
455,859
236,340
716,808
387,532
1101,361
857,119
999,420
276,878
373,417
923,670
92,729
179,703
619,555
455,348
668,266
674,217
1139,880
442,530
1042,2
594,586
890,354
13,757
698,759
268,677
1125,276
314,826
1210,889
207,42
691,78
241,277
42,638
176,82
445,891
315,649
1081,95
880,810
782,268
472,229
2,826
769,23
974,616
898,537
102,674
604,374
415,480
1154,453
1110,14
798,695
562,333
336,809
254,508
412,313
271,221
763,171
883,255
992,773
999,327
818,36
1081,215
974,278
1274,588
808,234
373,477
43,42
552,674
609,816
440,486
1081,679
105,723
281,667
865,96
574,442
290,140
1289,294
338,682
299,264
1268,638
1154,5
42,759
999,474
502,688
35,787
452,400
1116,679
571,684
420,781
1056,396
1309,467
1238,193
1287,204
448,638
418,844
832,82
1053,385
1290,395
1101,768
1027,42
1146,858
768,787
716,674
765,541
504,82
512,471
1206,565
691,80
391,764
1208,514
1,427
23,690
994,212
837,522
1265,750
209,320
952,715
999,687
329,726
1233,85
126,626
117,462
803,143
652,712
142,298
582,50
370,309
20,838
903,488
380,515
681,536
1128,446
291,75
502,206
70,673
233,721
127,81
99,255
765,765
102,871
388,51
612,135
763,723
387,425
639,278
1191,180
728,514
607,869
199,302
699,282
420,354
823,64
527,747
405,64
564,50
35,526
524,334
913,61
542,667
582,722
492,36
765,353
1074,340
840,450
875,400
937,477
2,264
1146,260
1027,714
1101,320
182,474
801,767
1260,381
72,253
195,73
390,497
1056,508
107,275
753,504
699,180
890,540
894,105
509,270
530,249
378,94
50,65
870,486
1029,667
728,840
974,809
803,751
92,354
749,509
1198,206
144,0
290,208
1195,249
470,647
1233,809
801,270
874,793
903,406
310,192
1109,551
806,812
1069,841
1161,158
1044,311
1168,23
542,227
1268,361
1166,446
421,385
782,432
478,82
1034,885
1154,217
216,859
677,497
372,660
806,82
612,704
483,201
820,260
933,418
873,885
744,789
147,143
594,220
45,144
1268,135
699,119
383,221
27,854
328,352
499,880
1298,75
437,317
102,52
1184,432
996,826
448,25
1211,764
987,165
913,133
35,595
271,436
1036,155
1255,624
1287,690
1298,714
492,688
827,693
1129,521
1028,196
1176,388
654,190
967,106
340,364
201,215
59,670
495,606
768,227
576,873
746,844
618,82
1238,253
387,84
50,325
631,690
705,418
937,711
1207,152
152,682
768,829
528,686
716,220
1183,141
277,866
35,487
44,749
798,889
705,476
326,816
1251,224
1310,381
1109,343
1211,255
60,138
1081,103
659,603
214,65
835,703
1290,838
534,645
539,249
1074,50
406,425
209,768
652,182
512,838
316,212
820,16
35,147
985,691
604,65
407,488
811,880
1193,432
937,675
344,416
400,325
1145,168
868,530
769,871
1298,404
134,388
1039,436
1033,812
681,393
517,337
582,844
725,201
1012,187
480,675
654,704
1275,144
115,249
12,588
1028,644
306,220
326,592
671,431
97,431
1146,16
380,648
955,686
604,325
119,842
1086,618
1309,54
562,540
1146,464
996,523
311,327
758,471
92,281
671,655
550,565
125,103
699,404
228,752
1298,371
576,649
552,380
1260,513
821,427
783,141
0,78
683,40
806,826
552,276
371,567
431,0
267,532
1086,808
336,278
372,234
530,46
58,628
12,371
855,546
282,644
938,660
1176,22
995,649
49,476
1238,514
1279,485
539,697
50,513
1190,256
490,235
430,84
18,217
453,215
1103,42
274,164
242,537
884,752
550,329
855,299
100,845
328,526
910,514
933,476
100,49
2,378
301,501
1298,180
939,842
470,298
35,528
746,498
156,453
857,439
564,554
144,777
1165,718
840,695
546,793
749,385
576,201
529,103
835,751
1266,26
1093,577
207,852
1297,757
933,866
841,724
1201,129
199,859
1074,560
335,649
271,794
1125,724
838,229
1183,779
782,686
413,393
765,129
77,725
1146,430
59,224
870,107
656,704
164,270
865,320
181,521
1063,40
229,95
142,392
987,515
838,644
276,9
103,670
790,58
174,240
1298,819
1131,703
435,861
1308,712
782,626
806,147
523,261
979,379
1026,137
591,191
726,540
92,561
400,392
1309,427
728,380
937,417
171,880
1308,182
1218,540
311,119
104,565
201,343
266,583
363,371
397,89
119,714
919,130
142,502
773,691
995,245
1265,816
748,540
1185,103
1072,789
185,170
1020,754
946,626
677,600
93,805
1081,791
633,294
512,840
728,50
771,137
520,506
897,393
1154,565
541,471
1297,137
967,474
499,208
639,879
318,269
629,281
975,649
490,260
545,577
156,5
383,669
913,532
119,164
162,688
1092,793
fold along x=655
fold along y=447
fold along x=327
fold along y=223
fold along x=163
fold along y=111
fold along x=81
fold along y=55
fold along x=40
fold along y=27
fold along y=13
fold along y=6

102
data/day_14.txt Normal file
View File

@@ -0,0 +1,102 @@
HHKONSOSONSVOFCSCNBC
OO -> N
VK -> B
KS -> N
PK -> H
FB -> H
BF -> S
BB -> V
KO -> N
SP -> K
HK -> O
PV -> K
BP -> O
VO -> V
OP -> C
BS -> V
OK -> V
KN -> H
KC -> N
PP -> F
NB -> V
CH -> V
HO -> K
PN -> H
SS -> O
CK -> P
VV -> K
FN -> O
BH -> B
SC -> B
HH -> P
FO -> O
CC -> H
OS -> H
FP -> S
HC -> F
BO -> F
CF -> S
NC -> S
HS -> V
KF -> O
ON -> C
CN -> K
VF -> F
NO -> K
CP -> N
HF -> K
CV -> N
HN -> K
VH -> B
KK -> P
CS -> O
VS -> P
NH -> F
CB -> S
BV -> P
FK -> F
NV -> O
OV -> K
SB -> N
NF -> O
VN -> S
OH -> O
PS -> N
HB -> H
SV -> V
CO -> H
SO -> P
FV -> N
PF -> O
NN -> S
KB -> P
NP -> F
OC -> S
FS -> P
FH -> P
VP -> K
BN -> O
NS -> H
VB -> V
PO -> K
KP -> N
SN -> O
BC -> H
SF -> V
PC -> O
NK -> F
BK -> V
KH -> S
SH -> S
SK -> H
OB -> V
PH -> N
PB -> C
HV -> N
HP -> V
FF -> B
OF -> P
VC -> S
KV -> C
FC -> F

100
data/day_15.txt Normal file
View File

@@ -0,0 +1,100 @@
7715611621811483411121929153345417926121654738244558184333228256741518593939121351941172244538819793
5978192582116933121967117233221363821218169348147142177193168221219699236451313112198933914323123492
3523162115513315258921111444182316618172925755923799136271191151813516522171176112647162541858173363
7931931461145231897547234134741682994126523123999252325119362919742719127391146114344331291116971777
3912157144212332298711374454411326743116179131395281613188171189221945922126933817119198199326455346
2219143418191822913131432991534835872531239119117118416185912111192962531111319326176629318111185111
9116687994992138729148521124241932317616396617951124297314235138854797168842416251775729287611967414
7851151594489117347687963146449123171411231791678721232616848894581346355912616826231169619235952732
2851861191919753472141651266114831227654463284483498521612827841418971981411931436113213396426946112
6712388671398963172123321653869646551586461492219377899341274966231951164199917165932561616983929924
3677326111792395522936119111175266111868435913873231478188182951214919133631271356331241911265195215
2411238217381994191274413116991994522732518981599292983991998111631182731112386631322271192212411843
1924296312792281346181932776933796211556871296835132761484192932264311663412971542122254194197225125
5193911629511224247133119192711512118326922142611261829118422127224838641841967498792466123922241611
3518421332332225373982119933189183848164192326315196127257111819966291868392125511182719699513213126
1243423697719296145178212414496848356131291919119337192521512383952691111818938552679591331194252815
1114134841622115582771529171517131623995521325269361158192181119511123926429217441181915118546111129
3413463671141433362959518115315279211752711714921711141946919111126196926192311117361329611368827123
1372787612785741712553922962223999622392124621931191746293231951121499351641599723992929211182183521
1646324114562413462565234121468141622211633146398136728423519196521422661392274137424189885124111979
8593927754728491812319341327322619591487122534343481851326173126244497617119592817617578171431611211
3544996545112122938226413169257256114389524779177813732798495971419433331931141513863257159222211327
1317112599316491522993299211918262655114758519194159564179393912978824213816415221134382876196791131
2992415411131212997526331872111112996344865592792815133565817171814172837534233288248214812739937128
7399281754443127946141431876481961612345132118851715323452891116597132773351188234354812269914136314
1353222121126771342784863118971948121131151269737693294597543471364852531536931711275612918142912339
1231143322424173511217841979211499894524361726733118828862941949323516193769441834412128333517121219
4153113123817117759341379297738315498194824968743168793739217211372842125911549919617297111441613631
9731976338891216952882213198614419772196764362991958541418412247316741111113414519698991177561491619
1549968122497536224817279413173193149141335731431114111191969373537193295361951832648538349971115651
3141199162911153239685453949619182151714537212236218628247835892234915714197151176914515494168817613
2321634214222164696761674371984136262645585522114118771793891255516343661843273111241429184252481112
1323271335941123627134295288123814147892434111122433863111883333942311312165717429336197351684297515
1799383479828119861997991252537621715111112211243118199888781621163257948541164311576771111337441297
3474558728714311424212121852197696651899775852781115664112735924716128287452112718142116441487711179
1212211282414612598188336251113541918828321262911122168152739929958181711329326391542161816879229457
9369141739122111275981911719178226989791269152711118514211312351951888312115211119912146165111417274
1557942397217218772114458897214197121496239971221799298121731791112838411839164943531148113513822329
2116511928331138153519713938955192461891971295394211113118549975869129341915148999142791221429844338
1216615164189449189844291299217862321339427481291811189889121368125354184186711881158278233714798812
2131462662132519141953391411117681836144434719816111765876594111661972132119291718521288742511921812
1352178182113553243431145717611728111429117626322671124512968719613828222757811142112237112915916411
9111861843583342173156761182486951611273911221233459621981815173222733765922411929621144273182167173
6461614968141185513751845166496129581174136991312882746411333574211232145145411259791494747636513831
8395826326831481781816141231151946694412171233118734118443712934188141261953428112498397283833996953
3224325116954176581173265389433772885221125196135137181681253382516579111971122321919261361455573426
5612711314828933927115772517317242878121717862126961211324793885131324871781627863678621349344985162
9219113183181524712318355994194342313255174114168321236494161659235237996744938323416519175154774368
1455219173629652263128124278132571923466188331613694112619643242969214341411691592236981126229531246
9997212872235551519294812463451816576987351769737341319699248495132218138849526591159541452141311227
9439551788914742428219371619927339189298769319132111753411511544151872351486489786185314584942895521
4623921912121114189211698941781144517423493925244616879259454219595112526216227151411539965913122341
9233881249291833812284319142291868129327632421241354425437738985391254261131535339322529281581561495
6621816747917191382495161833567118397773372129721681832591214252274233112632684542595451911924821133
1961985912891945611341231799388123719733816334154627934522422918536573253556769424412919116426182323
8613914491619713822131419117143163659542154519169992171969135131941141557529457324123161951111765294
4268219915611518484714151351482241221275914371738124149239386327831219359136247361161375174224223839
2417628752221923911251535153892648194748229231761133182371314159657511173541128258975114145282143131
1149132123898111199247912341113411962434312877836882119771691759571972141321747138787951211139182122
8589114128711558917336937119159115193482491549524442733618822133531142619542652131192519259679572118
8417549457115646563131638317315161112292939814589243166226251236828614439212129983319595172328298496
7132261193213112392744229915239441239812134161721522541289116993632721981519211498478878212229136195
5284114931928992331114192299645884318993264292231979919528343172899594924111575491982184914671211943
4138427142832314543311113423227271112997816549131893391237171313241261242672582112128835619821371121
4918821233299337972289281128133411678349812271421157479832992298658193248154113222111521996724714323
9174191481421563857184797521172297912449121127431641255195914981149724121258184197136514813734273234
4112626214511388118211446512388876694313187965929168166814111113382224115821767413172111376427638393
3231154459742912972641231118291138185681466529142819182885451441118191771984959111111623683628161113
5841171953222465917336112439651628888517153249964599148991263916813419222189131513441336935294361738
1816982764214991569342131547714487273197791551197149221141426622298772319696223747144351291172292314
9475574461545913358168363336339111314873371711345178219127111194927223149613171931929322893211152758
4858113211241899116852635135769311112114182724528552311872195867129114349887193381564631182288641431
9742923193935298412422519924115919956189443126116429369399671331114348991891115412454184715126299998
9121814433419188117111757994391996912918393911152421324919462957262487176581182129438199211342711241
9152171557731172939156141661228213792961792411377162925187423286231921473559751361928233131516412191
7288111938512228994743624943311448872522112536176928681443419899213241329198212953522514116811911197
9349832181421346375192594111125921597518122235122992135833853191479358257121815429654613383832118393
5787987676213718162591455312614145484267395142381485479118249352234818169546988191111121531915975846
1593328873913943873678371287612191117251139167998756142661344997618573521246115295381218111199353123
7792811294182231635163292331735316144325221519124512326112978344515322371153671145111948211314111961
2318518221984644229891593834523191322527124556185113492672653928784664122218293847186517161551631851
1112829983141931112651721133161412432143348121156512484214145542131639818492551211129611431998577181
3592613729447389151192925815192425191916611234864255478391561193394996337454189464938128832119348811
1271921732441182191447179913999221292183221141274914288646297111212268851116317378213664353119951955
1952724641973599331362393291821311217123755111853629765725951319311313197419922547371189952219569671
9175174929918626863191261492871635282719323944341514814391991254113352393192263965371316169319756114
7796162132715959911612986171614281934119795141614191521216692472181723351815721531573126767456111621
1929441344612524315169915972256329374194651851188791336975193211635164981382125948798143115991218147
3196918124398432195448219783729332721415743182553947677319291263569111194212214141296123149311195918
3158114419662114389969334121776231616687394316562465952127448362341922599962916219531841316418231911
7689421696457392537729119321129879691967715569123191226313319112314943111466159111416157881113611939
7831513935396926282212738725323211942958912226993621996662133721199282226293728546453712751822771285
2123699211953181196938911293262179311281131944194219219814973246548631519123711749121712622686521314
5191342118926287865138111129119915719811398331646995511667311198221618374236169145912891632927912111
8214442493117223193442175221522611659488871176512331552482329112125141241921222999759248511345262843
1914183724394277228911926796911512739125432271261643511196439716723711131491717732211162514393511298
1119745958685726562282127671296828241734389837168591468985891281128335925991724159212218314375287914
9517519684395161899187861919321914215994991181859919191641351832193212127643354718852685876126577315
3342917922251914252338185581691191842316989111841311466776912683629971312998965551711141287138724241
8176221727998313186834559714891971413547985825489911732617146966111238282644811394895278181837711185

1
data/day_16.txt Normal file
View File

@@ -0,0 +1 @@
020D78804D397973DB5B934D9280CC9F43080286957D9F60923592619D3230047C0109763976295356007365B37539ADE687F333EA8469200B666F5DC84E80232FC2C91B8490041332EB4006C4759775933530052C0119FAA7CB6ED57B9BBFBDC153004B0024299B490E537AFE3DA069EC507800370980F96F924A4F1E0495F691259198031C95AEF587B85B254F49C27AA2640082490F4B0F9802B2CFDA0094D5FB5D626E32B16D300565398DC6AFF600A080371BA12C1900042A37C398490F67BDDB131802928F5A009080351DA1FC441006A3C46C82020084FC1BE07CEA298029A008CCF08E5ED4689FD73BAA4510C009981C20056E2E4FAACA36000A10600D45A8750CC8010989716A299002171E634439200B47001009C749C7591BD7D0431002A4A73029866200F1277D7D8570043123A976AD72FFBD9CC80501A00AE677F5A43D8DB54D5FDECB7C8DEB0C77F8683005FC0109FCE7C89252E72693370545007A29C5B832E017CFF3E6B262126E7298FA1CC4A072E0054F5FBECC06671FE7D2C802359B56A0040245924585400F40313580B9B10031C00A500354009100300081D50028C00C1002C005BA300204008200FB50033F70028001FE60053A7E93957E1D09940209B7195A56BCC75AE7F18D46E273882402CCD006A600084C1D8ED0E8401D8A90BE12CCF2F4C4ADA602013BC401B8C11360880021B1361E4511007609C7B8CA8002DC32200F3AC01698EE2FF8A2C95B42F2DBAEB48A401BC5802737F8460C537F8460CF3D953100625C5A7D766E9CB7A39D8820082F29A9C9C244D6529C589F8C693EA5CD0218043382126492AD732924022CE006AE200DC248471D00010986D17A3547F200CA340149EDC4F67B71399BAEF2A64024B78028200FC778311CC40188AF0DA194CF743CC014E4D5A5AFBB4A4F30C9AC435004E662BB3EF0

1
data/day_17.txt Normal file
View File

@@ -0,0 +1 @@
target area: x=156..202, y=-110..-69

100
data/day_18.txt Normal file
View File

@@ -0,0 +1,100 @@
[[[[4,9],[1,7]],[9,8]],[[7,9],[7,9]]]
[[[1,[1,5]],9],[[[8,0],[8,8]],[[7,2],[4,6]]]]
[[3,7],[[7,[4,6]],[[8,0],[7,8]]]]
[[[[0,1],2],4],[[9,[2,8]],7]]
[[[[9,0],9],7],[[1,0],8]]
[[4,[[1,2],1]],1]
[[[[6,1],[0,2]],[[2,3],4]],[[9,1],8]]
[[[5,9],[1,0]],[[7,0],3]]
[[9,1],[[4,7],[5,[8,6]]]]
[[5,[[3,2],[1,9]]],[[[3,8],9],3]]
[[0,[[5,6],2]],9]
[6,[2,[[4,2],6]]]
[[[[8,2],[9,1]],[9,1]],7]
[9,1]
[[[[9,8],[5,3]],5],[[6,9],[9,[6,8]]]]
[0,[[2,[2,5]],2]]
[[2,6],[[[2,8],1],[[0,2],[0,7]]]]
[[[[7,8],[8,5]],[[3,2],[4,0]]],[2,[[1,0],[2,6]]]]
[[[7,[7,0]],[[1,9],9]],7]
[[[[5,1],[0,9]],4],[[0,[9,7]],[8,[6,8]]]]
[[8,2],[2,[6,0]]]
[[2,6],[[[4,0],6],2]]
[[9,[7,[0,1]]],8]
[[[[3,8],[4,3]],[7,[0,6]]],[[[5,5],[0,4]],[[8,2],0]]]
[[[[9,1],[9,3]],[1,[0,1]]],[[[9,6],8],[9,6]]]
[[[[2,3],[7,1]],[[6,8],6]],[[[6,0],0],0]]
[[7,[[5,0],4]],[[[8,8],[6,2]],[8,2]]]
[[[0,[3,8]],[[0,0],[6,1]]],[[4,5],[[3,9],[5,8]]]]
[4,[[1,[9,6]],[8,2]]]
[[9,[[9,2],3]],[[[5,6],2],[1,[0,9]]]]
[[9,9],[[0,[9,6]],[[8,6],3]]]
[[4,[[8,3],2]],[[[9,9],9],[2,[2,0]]]]
[[[[7,3],[4,2]],7],[4,6]]
[[[2,6],[[4,0],[0,8]]],[[5,0],[3,5]]]
[[[[9,3],[0,3]],[[0,0],[1,1]]],[3,[[8,4],[8,6]]]]
[[[[3,6],8],1],[[4,[4,1]],[[5,1],[3,0]]]]
[[[[8,1],[2,0]],[5,[2,1]]],[[9,[0,0]],[[7,2],[1,0]]]]
[[[6,6],[2,3]],[[7,6],[[9,8],2]]]
[[[0,9],3],[[[9,5],5],[[6,8],[0,4]]]]
[[[0,3],9],[5,[5,[0,5]]]]
[[0,[[9,1],4]],[2,4]]
[[[9,7],[0,[7,8]]],[[[3,3],5],[[0,9],[1,5]]]]
[[0,[[8,0],[5,2]]],[[[1,8],[1,2]],[3,8]]]
[5,[0,[[9,8],9]]]
[[6,[[9,2],[3,5]]],[[[2,3],9],3]]
[1,[1,1]]
[[6,[[0,0],1]],[[7,[4,9]],7]]
[[3,[[3,5],3]],[[[9,9],6],[[5,0],8]]]
[1,5]
[[0,4],[8,7]]
[[7,[[9,2],1]],5]
[[[[6,8],[6,5]],0],4]
[[[4,1],[9,0]],[[[4,3],6],[5,9]]]
[[8,[[1,9],[5,4]]],[[[9,0],4],[5,5]]]
[[0,9],[[[5,5],[7,7]],6]]
[[8,[8,5]],[8,[2,6]]]
[[[[8,4],4],0],[[3,[2,6]],[6,6]]]
[[5,[[5,2],6]],[[[2,3],[5,0]],[[2,9],0]]]
[[[[5,9],6],[[8,9],[5,7]]],[0,[8,[2,5]]]]
[[[[9,0],7],1],2]
[[[9,3],6],[[[6,6],[9,6]],1]]
[[[2,0],[0,[4,6]]],[[[5,7],6],[9,5]]]
[[[3,[4,3]],8],[[[6,3],[0,5]],2]]
[[[[2,8],8],[5,[2,4]]],[[3,7],[2,1]]]
[[1,[[2,7],4]],7]
[[2,[4,[5,9]]],[[[7,0],6],[4,[9,1]]]]
[[[9,[3,5]],[[9,5],[5,2]]],[[2,[4,3]],[[0,5],[1,9]]]]
[[1,[9,0]],[[[0,9],[9,3]],0]]
[[[[7,8],[3,6]],3],[[[2,6],[2,9]],[[1,3],[1,3]]]]
[[[7,[1,4]],[4,7]],[[[0,7],[0,6]],5]]
[[[6,0],[3,[2,3]]],6]
[[0,[3,[1,3]]],[[2,3],9]]
[[[8,6],[0,2]],[[[8,9],[7,0]],9]]
[[[[4,9],6],2],[[[8,9],[1,5]],[9,3]]]
[[[1,5],[6,[2,7]]],[7,[1,7]]]
[5,[3,[9,1]]]
[[[7,5],[1,5]],1]
[2,[[[5,0],[4,0]],[[3,7],5]]]
[[[5,9],1],[[[3,9],4],6]]
[[3,[[5,2],[9,2]]],[4,[[3,6],[8,9]]]]
[[[5,4],[8,8]],1]
[[[[8,9],[5,8]],0],[[9,5],[6,[7,1]]]]
[[[4,[8,8]],[[9,5],4]],3]
[[6,[6,[4,3]]],[[7,[3,9]],[4,8]]]
[[5,[[4,2],[7,3]]],[[[9,0],[0,1]],[[5,8],0]]]
[[[[6,1],6],[9,[0,8]]],[9,9]]
[[4,0],[[[1,4],4],[4,4]]]
[[7,[[0,0],[1,6]]],7]
[[6,3],[5,[[2,7],5]]]
[[1,[7,5]],[0,[4,1]]]
[[[3,7],3],[[3,[0,2]],2]]
[[[0,8],[[7,0],[9,8]]],[[[0,3],4],[[6,0],6]]]
[[[[4,6],[1,7]],[[6,4],[1,5]]],[3,[9,9]]]
[[[2,[1,7]],[9,9]],[[0,[7,8]],[0,[9,6]]]]
[[9,8],[5,[6,[1,8]]]]
[[[7,2],[[0,6],[2,6]]],[[9,[0,4]],[9,[5,8]]]]
[[[8,[6,8]],[[5,5],[9,9]]],[[[2,0],6],[8,1]]]
[[[[0,8],4],[3,4]],[[0,[0,8]],[[7,5],2]]]
[7,[[[3,4],[5,4]],8]]
[[[2,8],[0,2]],6]

136
data/day_19.txt Normal file
View File

@@ -0,0 +1,136 @@
--- scanner 0 ---
404,-588,-901
528,-643,409
-838,591,734
390,-675,-793
-537,-823,-458
-485,-357,347
-345,-311,381
-661,-816,-575
-876,649,763
-618,-824,-621
553,345,-567
474,580,667
-447,-329,318
-584,868,-557
544,-627,-890
564,392,-477
455,729,728
-892,524,684
-689,845,-530
423,-701,434
7,-33,-71
630,319,-379
443,580,662
-789,900,-551
459,-707,401
--- scanner 1 ---
686,422,578
605,423,415
515,917,-361
-336,658,858
95,138,22
-476,619,847
-340,-569,-846
567,-361,727
-460,603,-452
669,-402,600
729,430,532
-500,-761,534
-322,571,750
-466,-666,-811
-429,-592,574
-355,545,-477
703,-491,-529
-328,-685,520
413,935,-424
-391,539,-444
586,-435,557
-364,-763,-893
807,-499,-711
755,-354,-619
553,889,-390
--- scanner 2 ---
649,640,665
682,-795,504
-784,533,-524
-644,584,-595
-588,-843,648
-30,6,44
-674,560,763
500,723,-460
609,671,-379
-555,-800,653
-675,-892,-343
697,-426,-610
578,704,681
493,664,-388
-671,-858,530
-667,343,800
571,-461,-707
-138,-166,112
-889,563,-600
646,-828,498
640,759,510
-630,509,768
-681,-892,-333
673,-379,-804
-742,-814,-386
577,-820,562
--- scanner 3 ---
-589,542,597
605,-692,669
-500,565,-823
-660,373,557
-458,-679,-417
-488,449,543
-626,468,-788
338,-750,-386
528,-832,-391
562,-778,733
-938,-730,414
543,643,-506
-524,371,-870
407,773,750
-104,29,83
378,-903,-323
-778,-728,485
426,699,580
-438,-605,-362
-469,-447,-387
509,732,623
647,635,-688
-868,-804,481
614,-800,639
595,780,-596
--- scanner 4 ---
727,592,562
-293,-554,779
441,611,-461
-714,465,-776
-743,427,-804
-660,-479,-426
832,-632,460
927,-485,-438
408,393,-506
466,436,-512
110,16,151
-258,-428,682
-393,719,612
-211,-452,876
808,-476,-593
-575,615,604
-485,667,467
-680,325,-822
-627,-443,-432
872,-547,-609
833,512,582
807,604,487
839,-516,451
891,-625,532
-652,-548,-490
30,-46,-14

1000
data/day_2.txt Normal file

File diff suppressed because it is too large Load Diff

102
data/day_20.txt Normal file
View File

@@ -0,0 +1,102 @@
##..#.#...##.####..#..###.#.#.#.#.####.#.##.....#####.##..#..#.#.##.......##.##.#.#...#....#.####..#.##.##....###..##.#####.##....##.#.#.#.#....####...##.#......#.#..##......##..#..###.#..####.###...##.#.##.#..##.##..#.#.#..###..##.####.#.#.#..#.##...#..##...##.#####..##.##..#...#..###.#.#...#..#..##...#.#..........#...#...#.#.#.#..#.###..##....####..#######.##.#.....#.#.###...##...###...#.##.##.##..#......#.###...#.#.#.#...##.#.#.##.#..###.#...##...##.......####.##..#.#....#.#####..#..#####.#.....#....#.#.
.##.#...##..##.#..........#####..#.##..######.##..#....#..#####.#.#####.#..#...#..#####..#.......##.
.#.#.#.#####..##.#.###..#.##.##.......#.####.#............#.#....####..#.#####.##.##.#.###..#..##...
.##.#.#...##....#.#..#...........##.#.#..#####...#..##.###..##.###..........#####..##..##.#.####....
##..####.####.###.......#....#.#####.##...#....###...##...###...#...##..####....####..#####..##..###
...###.##.....#......###.#.###..#..###...#.#..#.#######.##..#..#..#..##.##..#####.#####.###...#.###.
##.###.#....##..####.#..#.###.##.#.##..#...#...###.###.#..#..#.#.###.##.#..###.#.###....###.###.....
#.#.##..#.....#.....##....######...#........#.#.#.#.######..#...##.#.######...#.##########..#.###..#
.##.#...##.#......###..####.##.#...#..##.#.####...##..####..#####..##.###.#.###...#.#.######.#.#####
..#..##..#.#.#...####..###.#..#...#..#.#.#.#.###..####.#...#......#..#..####.#...#.#.#......#...#..#
#...###..#.#.###.#.##.##.#.#.#####....#....#.....#####...#..#..#.#####..##.....#..###.#..###.#..#...
..##.#.#..##.#.#...#...#.#.#..#.#.##....#####....#.##...#..#..#.#....###...##..#.#.##.##.#.......#.#
##.##.#######.###.#..#....#..##..#.###.....#.###..#.#..#....#.#..###.##.#.....#.#.#.##.#...#..##.#..
.....#.#.#.#.####.#..####.#....##.###.###...########.#.#....#..##.#.#####...##....##....#.......#.#.
##..#...#..#.#.####..#.#..####.#####.#####.###..#.#####.#..#...##.######.###.#..#.##.#.#..#..#.####.
#.##.##.#.####...#.#.#.#..####.#.#...###...#.#....##...####.#..#####.#.####.#..#.....###.#..#...#.#.
.#..#.##...####...##.####...###..####.##........#.#.##..#..#.##...#....##.#.#..#.#.###...##.......#.
..#..#..#.###.##...###....#.#..#..##..#...###.###...#..#.....#..#.####.#.#.#.##..###...#....##.#.###
###.##....##.#.##..####.#.###...###.###.#####..##.###.....#.#####....#.##..##.#####.##..###....#....
###..#...###..#....#..#.#...#....###.#.####.##..#.#..#.###..#..#.##.#.#.......#...#....#...###..#.##
#...#.#.#...#.####.##.#.#..#...##.....#..##....#..#.##..##.####.#.#.###..##..#.#.#.###.#.#..####..##
.###..###.##..###..#..#.##..#...#.##.#.......####.#..##.#...#.##..#..........##..####..##.###..###..
###.#.#...###..#...#####.####..#..#######.#.#.###.##.###.#.####.##.#####..###.#####.#...####.##..##.
.##..##..##.#...######.###...#.##.##....##.#...##.#####.#...##..#.#...#.#..#.##.#....##.####.#.##.#.
...####..#...#...####.#.#...#...###..#.##...####.#..######.##.....##..#...#...####.###.#..##.##..#..
#.#####.##.##..#..##.#.####..##.#.#...#..####.##..###.####.##.##...#.#...#.#.#####.####.#.###..#..#.
..#.....#..##..#...#####..##.###..##.#..##..##..####.#..#.####.###...#####.#.###.....#..#.####.#.##.
#####....###..##.#.######.#.##..##.#.#####.##########.#...##...###....###.#.....#.....###.#.#.#.##.#
##.....#.###.###.#.##.########....##.##.###...#######..##..#.#.#..#.##..####..#.###.#.###.#.#......#
..##..#...#.#.#.#.###.#..#####.#.#..#......####..#.###..###...##...##.##..#..#..#.##.#..###..##.#.#.
.#.#..#..###.##.#.#...#.#...##...#.###..#.#.##.#....#..####..#.#.##.#..#...##.#.....##...####.....#.
##.#..##...#..##.####.##....##..#####.###...#..######..#....#..#######..#..#.####.#...##.##..##..#..
..##.#.###....#..#.....#..#.#.#.#........#..##.#.#.......####.##...#.#.##.######..##..#....#.#......
.....#....#.#.##...#..######.###.###.##....##.#.##.###.....#..#.#....#####.#..##.#.....#..#.##....##
##.....#.#...####...##.##.#.##.#.##......#.#########.#.##..##...###.##.#..#....#..##.####..#######..
##...#.########.###.#....#...#..##.##.###....##...#####..##.####..##..#..#####.#..######.####...#.#.
##.####..##.#####..#..###...##.......#...#.###.#.#..#..#....#.#..##.....#.#....####.###...#.#..##.#.
#.#.#.#.###..#.#####.#...##...#.###.##..#.#####.....#...#.#.#..#...##....#...####.####.##.#.....####
..###.##.#......#######..#...##..###.##....#....#.#..###...#..###.#.#...#..##...####.###.###..#.#.##
.#..#.#.##..###########.#.#..#.###.######...###.##..#.###..##.#...#.#...###.#.##.##.#..#..#..#.#...#
.#..#.#..##....#....####.#..##....#.###.####..#.##.#.#..###.#.##.#........##.#...###.#.......##.#...
...###.#.#.##.##.##.....#.#.#..#..#.##.#######...##....#.#......##....##.#.####.####.###.#....##..#.
.#.##..#.##.##.####.....##...#..###.###.###..#..##.####..##...#.###.##..##..#####.#..###....###.##.#
#.###...#####.#..#.####...##.#..#...######.....#.#....##.#.#...##....#...........##.##.##.#...######
##..#..##.....##..#.#..##.##.#..#...####.######.......###..#..##.##..##..##..###..##.##.#.#.....#...
#......###..#####..#######.#.#..#.###..##.#..##.##.##.#..###.###..##.##.....#.#..####.#.##...##..###
.##...#..###..##..#.#####.#####.###...#.........#.##.##.###.#.#.#...###.#..###.##.##.#..#..#...###.#
#.###.###.###.#.###.#.##....##..##.......#....##.###.###.#.###..#..###.#.##.##..#.#...######.####..#
..#####.###.##.#..##.##.#..#.###..#.####....#...##.#.......#.#..##.#.......##.##.#######...######.##
#.##...###..#..##.....#.#.##.#..##...##.#####..#...##...#..#.####.#.##.##.#....##.###.#.##..##..#.#.
..#.###.#.##...#..##.#..####.###..#####.##.####.#.##..####.###..##..#...#.##...#.###....####...####.
.###.....###.#....######.#####..#..#..#.#.#..#..#.###.#........##.###...#...##..#..#...#.....#.###.#
..###.##.#.#####.#..########..##..##.#..###.#.##.#....#.###........#....#...#.#...##.#.##..#..##.##.
###.#.#.#...#..##....#.##....##.#######.#.##.#.##....#....###.#.#.....#.##..###..##..#..##..#.#..##.
.#.##..#.##..##.##.##..#.###.#..##.###.#.###.##......##.#...##.##..##...##.#...##.#..#..#.##..#.##..
####..####.###..#..#####...###.#....###.#...##........#.#...#..#.#.###..####.#.#.######...#..##.#.#.
#...#..#.##..#.#.#.#.#...##.#.##..#...#.###.###.#....##.#..##.#.###..##....#.###.#.##..#..##....#...
#.###.#.##.###.#..#...####.#....#..#.#####.#...#.###.##.##.###.###..#...#.#.####..###..........##.#.
##.##.#.###.#.##.####...###.#.###..###...####..#####.###...#.##...###.##..#.####.#.##...#....##.#.##
#....#..##.##.##......##...##.##..#####...#.##.###.##...##..##..###..#..#..#...###.##.#..#..#.#...##
###.####.....#.#....####..#.##.........#....##.....#....##.#..##.##..####..###.####.#...##....##.##.
#.......###.#..####.##..#..##...#....###...##.......##.....###.######.#..#..##..#....#.###.#..##.###
#.###.##..##..##.##...#.........####..####..#..##...##.#..#..#######.###...#......#.##.####.#..##...
#.####...##.#...#.#.###...##...#....#.##.##.####.#.#....###....#...#........##.##..#.#.####..#.#.#..
.#..###.#..#.....##..#..#.###..###.#.##...#.#.....#...#....#.##.#..#.#...#..#.#..###..#.#...###.....
.####....####....#.#.....#..#.#.##........#..#.####.##.##...#.#.####.#..#.##..##..#...#.#.##...#.#.#
#####.#...####.#.####.#...#..#...#.#.##.#..#...##..#.#...##.###.##.#.###.###.#...#..#.###.##.##...#.
#.#....#.###.##..##.##..##.#...#.###....###....###..#.####.###..#.#.##...#..####....#.####...###.#..
.#...#.###.#.####..#.#####...##...#..##........#....#..#.#.##..##.##.#######.#.#.#.##.#.#.#.##..#...
#....#....#.#.##.##.##..###..###.##..#.##.....###.###......#.#....#..#.##......#.###.#..#.#.#.#..###
#####.#####.##...#.#..#..##.####.#......######..####..##.##.##.#.......#...####..#..###.#..##.#.#.#.
#.##...##..##......###...#.#.##...#.#...#..##.###.#..#.##...#.#.#.##.###.##.#####....#...#.....##..#
..##....##..#..##..##...#..#.##.####.##........###..##.##.#.#.##..#..###...#..#...##.#.##.########.#
#...#.#####.###.#....#....#######.###..#..#.#..##..#.###.#.####.##.#..###..#....###.###....###.#..##
.......###.#.#.#..#.#..###...#.##..#..#...#..#....#..#...#.#####.#...##.#.###.###.#..#.##.#..##.....
....#.##...#.##.#.###..#####..#.######.###...###..##.#.#.##.###.##.####..#..#.....#.......#.######.#
##..####......##...##.#..#..#..#..##.#.#..##..####.#.######.#...##..#..#.##.##..###..#..#.#..#..#...
.##.#..#..##.#.##..#..#.#.#...##.##...##.#.########..##..#...#####.....#.#..###.#.##.##.###..#..#.##
..##...#.#..#.#.##.###..#....#..###...#..##....##.#..######..###.#.#####..#.###.##.###..#####...####
#.#..###.##.#...#..###..#.##.##...####.####.#.....##....###..#..#...####.####.###...#..#.#.#.#.##..#
###..##...#.#..##..#...##..###.#.....#...##.###.#..###...###.####..###.#..#.#...##.....#............
.#####..##...##....######...#..###.#.#......#...######.#..#...###.#...#..####.#......##..#..#.#...#.
.#..####.#.#..###..#.#.##.####..#.#....#.####..##...#..#.#.#..###.........##.#.#####...###...#.#..#.
.#.#....#..####..##..#########.#..#.##..###..#..#...###....##.....####...#..#.##....#######.####.##.
##.#.####..#...#..#.##.#..#....##.####..####..###.#.#...#######.#.###..###.###..#.###.##...##.##..#.
.#####.....##.#....##...##...#.#..####.##..#....##.###.#####.##.#.#.#...#...#.#.#.......##..##.##.#.
.##..#.#.###.#.#.#....##.#...#....#...#...#..#######....##.#.#.#####.#.###..#..#...#......#..#.##..#
...##.....#..#.####.###...#####.#.#....##.#.#.#.#...####.####.#..##.#.##.##.###..##...##.....#...###
####.###..###.####..###.##..#.#####.#...##.#..#.#.##.####.#..####..#..##....####.#....#...#.####.#.#
##....##.#.#.##.###..#####.##..##..#..##..##..#.#..###.##.#####...#..#.##.#.####.####..#...##..#..##
#.#..###..##..#..#..####..#..#.#..#.##...###.#.#.#.#...####.#.#...####.##..#.#.#..#.##..##..##.#....
##.#.####....##..##..####.#######..##....######.##.#....#..#...#.#..#.##.#...#.#.#.#.#..###....#.#.#
.##.###..#.###..##...####.###.#.##.###.#...#..#......######.##.##.##.####.##.##....#.#......####.#.#
#..###.####.#...#.###.###.#..##.###..#.#.#####..#.##.##.#.##.##..###.####...####..#..###...#.##.####
#...............#.##.###...#..#..#.##.##.#.##.#.#...#.#....#..#.######..#..#..##....#.##..#..#..#.##
###.###...#...#..#....##.......#.#..#...##...#....#..######..#.....##.####..#....#...##...######..##
..##..#..##.#.##..###.#...............####...##..##......#...#.....#..#....#.#...#.....##..#####..##
#.....##.#.##.###......###.#.##..###....###..#...#..###.#..#..##...#..#.##...#.#...#..#.....##...#.#
..##....#..#.#.#.####..#.#.#....#.#.#.#.##.#..#.#..#..#.#.##.####......##..#...##..#.#.##..#.....#..
.#..##....###.###..##....#####.#....####....#.#.##..#...#.###.##..#.....##........###.###.####..#.#.
.###.##..#..#...#.#.#######.##.#.#.#.#.###.#.#.#.#......#####.###.#.#.#......#.#..#.#.##..#.##.#.#.#

2
data/day_21.txt Normal file
View File

@@ -0,0 +1,2 @@
Player 1 starting position: 7
Player 2 starting position: 8

420
data/day_22.txt Normal file
View File

@@ -0,0 +1,420 @@
on x=-8..38,y=-15..37,z=-49..5
on x=-35..13,y=-26..26,z=-47..-2
on x=-44..9,y=-47..7,z=-18..35
on x=-24..20,y=-46..8,z=-10..38
on x=-32..21,y=-27..18,z=-43..6
on x=-36..18,y=-7..44,z=1..45
on x=-48..2,y=-38..16,z=-45..6
on x=-47..-3,y=-8..42,z=-4..49
on x=-26..25,y=-26..19,z=-37..17
on x=-8..36,y=-48..4,z=-26..19
off x=-22..-6,y=0..11,z=4..18
on x=-5..47,y=-41..12,z=-26..27
off x=10..29,y=2..18,z=-22..-10
on x=-41..4,y=-33..17,z=-43..10
off x=23..39,y=34..43,z=0..18
on x=-22..31,y=-28..17,z=-46..-2
off x=-34..-20,y=10..27,z=-39..-24
on x=-19..34,y=-5..48,z=-36..8
off x=-22..-3,y=6..23,z=-33..-23
on x=-31..14,y=-41..6,z=-42..11
on x=15335..50364,y=23326..35316,z=55710..82802
on x=-45558..-26562,y=-2400..4809,z=63478..81702
on x=-32547..-2093,y=-80247..-60455,z=-38776..-12398
on x=3464..34355,y=-53573..-44765,z=-72270..-45885
on x=-9807..20039,y=-68478..-43761,z=-57797..-44099
on x=40079..61797,y=-61859..-31418,z=38360..45565
on x=62170..82174,y=8028..39169,z=-12590..14034
on x=-38651..-30945,y=27847..31103,z=61105..82258
on x=37522..61641,y=37254..59332,z=-25804..-10671
on x=-60797..-42266,y=-41852..-22898,z=33729..67815
on x=-16830..10919,y=-85429..-52622,z=38655..47942
on x=-79023..-63744,y=-29720..-25509,z=-13690..6232
on x=-4302..17673,y=65726..84939,z=-24802..-1510
on x=51984..58644,y=-50863..-29318,z=-62134..-38340
on x=17315..32243,y=-78736..-61172,z=-48782..-36452
on x=43538..74153,y=-64825..-48158,z=-2168..17349
on x=-88874..-56782,y=31756..39638,z=-6822..22577
on x=-32751..-16062,y=21829..33445,z=-80369..-58366
on x=-53991..-37739,y=24044..41509,z=-63198..-60191
on x=45511..57768,y=-60217..-38779,z=4772..14616
on x=582..26199,y=-84737..-68753,z=-30138..-10832
on x=-76660..-44924,y=-45685..-28606,z=-45497..-26288
on x=-16527..7531,y=71113..90437,z=-31015..963
on x=-45308..-33442,y=-55174..-46890,z=-62805..-38852
on x=-97917..-77721,y=-14020..19196,z=-9834..12916
on x=9547..37293,y=47382..79218,z=-40988..-38084
on x=11900..40311,y=-88398..-73419,z=-16149..17264
on x=-76272..-57431,y=9110..28569,z=-43875..-35650
on x=44316..75678,y=49414..51289,z=-16923..614
on x=-31873..-16382,y=-86726..-59516,z=-35550..-16645
on x=-2001..12126,y=-74226..-66970,z=27937..35348
on x=22600..38219,y=-89770..-65203,z=-2468..27615
on x=-29020..-18296,y=-40849..-28739,z=-76954..-49958
on x=-69947..-45370,y=-26764..-3205,z=-62596..-39633
on x=11106..25350,y=-10816..603,z=61373..88869
on x=-44616..-19892,y=-58959..-34216,z=58473..65795
on x=-8795..947,y=-13768..11224,z=62325..94888
on x=65157..94625,y=13584..36634,z=-19744..409
on x=8842..29765,y=-76600..-64290,z=-53640..-20221
on x=72119..80400,y=-10518..17427,z=-21981..-8210
on x=-5366..6510,y=59148..78095,z=24053..43978
on x=13458..29969,y=54416..76907,z=-41187..-26771
on x=-93261..-60882,y=-24991..-8501,z=12612..18878
on x=-65813..-47821,y=-63936..-49169,z=-19769..7195
on x=-64400..-34269,y=-35835..-33505,z=46829..66233
on x=50461..83244,y=-18960..-12216,z=-50711..-23716
on x=30337..47289,y=13642..33900,z=48160..76508
on x=-8112..10344,y=1355..15516,z=71137..84477
on x=51524..63806,y=17375..48797,z=28977..50170
on x=58448..76178,y=21032..43228,z=-27666..-23037
on x=-72668..-59446,y=31279..44252,z=25311..54211
on x=-27331..-6649,y=-75402..-45015,z=39353..52026
on x=-83915..-52531,y=-56122..-21235,z=-15204..8932
on x=20340..34983,y=13459..45255,z=67208..82734
on x=52204..80044,y=-56662..-21103,z=-6139..5434
on x=48343..56665,y=-66449..-46287,z=9391..32105
on x=18326..43597,y=63443..65306,z=-58929..-19969
on x=-2999..2718,y=-61788..-32532,z=52591..69302
on x=35428..65034,y=-55534..-39929,z=29073..56505
on x=-564..14337,y=73556..93104,z=-1379..20976
on x=-81741..-61409,y=17237..33536,z=44407..50551
on x=-87050..-59613,y=-11189..3245,z=-53237..-24697
on x=34259..54145,y=20441..36300,z=45810..58640
on x=34106..47786,y=61578..84112,z=-12070..1856
on x=20918..24706,y=-79156..-61039,z=-9799..16667
on x=35957..45020,y=29650..58514,z=-64107..-44220
on x=3605..23761,y=-87881..-67369,z=28828..38438
on x=-70621..-52430,y=37486..66736,z=-4981..30
on x=-33825..-12291,y=-44236..-16695,z=61030..69673
on x=-49593..-18848,y=-23981..-11323,z=-79284..-57866
on x=-94854..-58471,y=624..16087,z=-31578..-20200
on x=-56555..-41220,y=-30410..-5416,z=-78098..-48820
on x=-29310..-5333,y=-377..16272,z=-92588..-64906
on x=10354..36468,y=45324..65408,z=31417..60527
on x=28022..48159,y=61268..65663,z=12438..25427
on x=-62602..-33068,y=51567..61033,z=-35345..-28008
on x=59685..96646,y=-17225..7947,z=-21655..-929
on x=2571..26494,y=-34041..-16342,z=-79107..-62634
on x=-69128..-43671,y=37174..57503,z=3638..28066
on x=-67589..-48147,y=-73385..-56850,z=-1860..2972
on x=-13132..7845,y=-45253..-22219,z=73332..87814
on x=14643..27911,y=66417..87671,z=6926..42452
on x=55546..59770,y=-68349..-35183,z=13526..42706
on x=46458..71581,y=-64188..-39183,z=-37594..-5557
on x=52337..87886,y=3073..40107,z=25199..53681
on x=-27570..-18038,y=-89728..-75569,z=-8551..19893
on x=45880..62073,y=-68855..-56920,z=-18677..7736
on x=53736..62220,y=40703..59813,z=23257..45038
on x=-76911..-44696,y=-69813..-45549,z=3081..35367
on x=31747..54285,y=3689..9419,z=49901..76396
on x=41306..59150,y=-61184..-38861,z=29420..47064
on x=-3789..19982,y=-70405..-50781,z=36583..62090
on x=60232..72621,y=28595..58182,z=7302..23655
on x=29066..55476,y=50427..80610,z=17279..37108
on x=-74130..-48051,y=9698..30887,z=-55533..-38019
on x=20776..22496,y=49080..74957,z=-54917..-24479
on x=-42551..-29740,y=-55103..-24976,z=-75473..-58134
on x=-513..10228,y=-61404..-54603,z=-56400..-40844
on x=4767..24714,y=68526..93217,z=-25864..-16813
on x=33270..56249,y=-12736..15165,z=59025..73794
on x=56648..94625,y=4068..28093,z=-26382..-8130
on x=-42182..-28592,y=31930..50414,z=-72371..-46985
on x=35452..53665,y=-40979..-7896,z=50032..72566
on x=20439..46512,y=60602..69683,z=10315..32311
on x=29946..49103,y=60304..85429,z=-6857..15097
on x=-44981..-28124,y=-75770..-62139,z=-41957..-39213
on x=1642..15993,y=-74459..-43849,z=46076..65639
on x=24231..28876,y=-46470..-27532,z=49508..84952
on x=58988..97791,y=-8990..14314,z=-1595..37717
on x=66367..88861,y=-35194..-9267,z=-25451..-17485
on x=-60774..-33099,y=-72195..-51492,z=-36479..-16367
on x=32005..49362,y=30998..48503,z=-63298..-32160
on x=-14142..10186,y=-61898..-51952,z=-59283..-47394
on x=-19407..11513,y=32878..69244,z=55828..80284
on x=45876..77690,y=-58055..-41201,z=-29044..5749
on x=-11468..18864,y=75328..84069,z=-4503..25380
on x=-35711..-29917,y=-32456..-23606,z=-82918..-55517
on x=27301..48443,y=-69479..-34724,z=26664..49480
on x=23315..42528,y=-86791..-57800,z=30250..51456
on x=60965..90946,y=-14685..10468,z=20339..49517
on x=15832..37891,y=-52792..-39704,z=39855..71748
on x=-59280..-47097,y=-39141..-17157,z=33266..47528
on x=-57855..-35283,y=-39073..-13640,z=-80444..-56846
on x=-86133..-58057,y=-27636..-4311,z=-32792..-18848
on x=-444..13278,y=22909..49708,z=58690..72477
on x=-13881..12856,y=36632..69292,z=56982..70686
on x=10985..24603,y=25636..55287,z=-79921..-61711
on x=10776..29554,y=4929..33616,z=-82193..-56014
on x=17025..38285,y=-47077..-14251,z=-77553..-54577
on x=46531..63240,y=-15497..3408,z=56333..68319
on x=-64068..-46550,y=-49066..-35557,z=-59104..-37575
on x=-66587..-39636,y=2921..14996,z=-73004..-58075
on x=-57862..-46129,y=-39458..-13965,z=52019..57063
on x=32195..41584,y=-58378..-45157,z=47203..64230
on x=59743..64863,y=-24800..7,z=47840..51569
on x=-42549..-33653,y=70071..85597,z=-16479..7317
on x=-37353..-26663,y=37926..66858,z=34514..62276
on x=15487..32009,y=-17818..-4587,z=-88133..-63626
on x=39272..60009,y=21713..53410,z=29838..55064
on x=14645..18233,y=70285..80160,z=-45717..-26265
on x=-59969..-38119,y=-32490..-11158,z=-72565..-48356
on x=-37063..-12372,y=34981..61053,z=45674..63318
on x=23505..31659,y=-17878..3435,z=69208..88411
on x=-28414..-11477,y=75258..76840,z=-18186..-298
on x=-49615..-36443,y=47524..71379,z=24823..52483
on x=41128..68342,y=42269..56032,z=13167..49004
on x=-73556..-62069,y=39819..54100,z=10014..26182
on x=11963..29197,y=-16582..13981,z=-94711..-63934
on x=-34689..-25577,y=-197..15669,z=-86772..-64172
on x=3563..21507,y=64920..83056,z=-38937..-25267
on x=61303..75862,y=-22101..-7085,z=30482..64859
on x=12131..33975,y=64409..83656,z=-5563..5502
on x=-17530..-7065,y=18505..53237,z=69195..78103
on x=-10021..16570,y=-55375..-27834,z=-78754..-51628
on x=24827..60557,y=-15264..1953,z=51972..86146
on x=-71187..-34824,y=-44254..-14207,z=-52397..-35707
on x=57352..77735,y=-37604..-15263,z=7507..27978
on x=-23726..-7292,y=-55950..-32850,z=-69245..-57628
on x=-90975..-70535,y=9138..33894,z=-25893..-10071
on x=6070..31408,y=64814..80652,z=22591..57794
on x=8916..26303,y=-95224..-59955,z=-10149..8506
on x=-68641..-46067,y=34429..59881,z=-39031..-32389
on x=-11824..-2711,y=-83201..-74852,z=-14639..7401
on x=-53274..-39232,y=35055..53726,z=30474..57011
on x=7629..42203,y=50468..73063,z=-55094..-36272
on x=70158..83416,y=20571..43112,z=4674..16257
on x=-80368..-57194,y=-4962..11968,z=19404..24821
on x=13369..36182,y=-17233..3448,z=-75917..-71135
on x=64365..90943,y=6390..33440,z=8988..21083
on x=-52699..-21144,y=-38040..-854,z=-68245..-58362
on x=-65094..-37684,y=-51612..-25807,z=-72281..-53830
on x=-79276..-46327,y=-50076..-25744,z=8635..28328
on x=-12990..8865,y=41955..75365,z=-62193..-41527
on x=58354..78654,y=-11122..4884,z=23338..45638
on x=-15424..-6958,y=-81028..-61925,z=-2456..27206
on x=-46208..-42140,y=-24044..-384,z=66095..84101
on x=37816..60739,y=22510..43834,z=38468..66426
on x=33152..40141,y=51888..89118,z=13685..23818
on x=-17317..12870,y=47330..75254,z=46415..68934
on x=-70083..-47556,y=-16559..9186,z=43131..65529
on x=-50028..-37229,y=31881..55480,z=53206..75635
on x=-63924..-52170,y=-9878..11562,z=51524..77943
on x=52578..79541,y=42477..67139,z=1927..20882
on x=12599..36298,y=68728..91625,z=11807..22954
on x=-40614..-12787,y=-85532..-54821,z=23444..39179
on x=-74256..-57498,y=-43085..-23159,z=-31465..-13370
on x=39798..71449,y=48045..59886,z=-2613..24872
on x=-68498..-45090,y=25992..41044,z=34996..70831
on x=-35911..-17641,y=57891..78052,z=-35503..-20182
on x=19600..36506,y=-60275..-34413,z=46970..62424
on x=10445..32543,y=72116..79041,z=-26199..-10783
on x=29792..52526,y=17488..40185,z=-76990..-57136
on x=-15086..-965,y=71043..82224,z=-18100..-6923
on x=-66153..-53596,y=45695..50572,z=15633..27979
on x=-3842..19280,y=-94095..-71467,z=-2671..21892
on x=-20058..-15993,y=75074..85769,z=-4154..29602
on x=63662..82628,y=-44024..-18652,z=-42230..-25693
on x=-25464..-1609,y=-95242..-69652,z=-16402..-1625
on x=-45562..-19451,y=46735..69543,z=42501..55057
on x=-63606..-45182,y=-16688..4854,z=57066..69670
on x=48099..58149,y=-19817..13065,z=58517..61835
on x=60301..78442,y=-31292..-9212,z=-9501..5043
on x=-45997..-32832,y=-71865..-55120,z=5197..9635
off x=7801..18090,y=-9284..9018,z=70611..90782
on x=-12595..18229,y=-95412..-76864,z=-25174..-12583
on x=-77795..-50794,y=26612..36830,z=-57817..-32361
off x=45538..72963,y=-7083..18302,z=-58100..-48077
on x=57536..78656,y=15793..40718,z=-18344..-4567
on x=-17242..-13743,y=19611..29304,z=73728..76397
off x=55644..86166,y=-29938..908,z=31294..50663
off x=37393..52270,y=-7712..7531,z=69523..78383
off x=-957..9043,y=77480..91163,z=-33767..-6820
off x=-63298..-46056,y=-41261..-28461,z=-65194..-36474
off x=-6670..15368,y=64523..98069,z=-13420..-5226
off x=-49582..-30819,y=-1458..18304,z=-81337..-44780
on x=-58160..-41058,y=-33405..-27020,z=53440..60477
on x=-36387..-29527,y=63471..69022,z=24542..35223
off x=-55808..-47012,y=-22908..-13468,z=-66925..-53559
on x=1465..15220,y=45037..58791,z=57533..81180
on x=5172..32790,y=-66253..-52994,z=39031..64718
off x=13197..19510,y=68201..87371,z=-20249..-6899
off x=8166..26390,y=67577..88576,z=-45114..-31391
off x=-58895..-34583,y=-69098..-49904,z=-47979..-14615
off x=-40782..-6576,y=67129..85050,z=-37317..-21437
on x=-39763..-26856,y=7977..24549,z=-75663..-52000
off x=-21464..-6049,y=57481..81630,z=31659..40693
off x=-4254..10435,y=33207..56014,z=55750..69967
on x=12035..31707,y=-62120..-45336,z=-56717..-28839
on x=-65942..-52696,y=-45998..-25934,z=-51194..-32621
off x=-90231..-66833,y=-13323..5602,z=29385..35537
off x=-54405..-24273,y=52292..77711,z=5027..20918
off x=-64432..-51362,y=-47643..-33861,z=-38386..-13148
off x=35485..61206,y=-24743..-300,z=50470..64190
on x=-64616..-44407,y=-64266..-32556,z=14623..38546
on x=22913..41733,y=-69991..-52079,z=-48649..-20477
off x=8685..31733,y=2760..9002,z=74103..76071
on x=35956..60262,y=49169..87126,z=-6572..12137
on x=-43172..-20564,y=-15916..3410,z=55126..75394
off x=46980..55817,y=-59630..-43170,z=-39465..-15197
off x=12335..28938,y=55440..86727,z=22223..31474
off x=-69238..-33811,y=-35451..-11427,z=-68568..-56162
on x=9529..30152,y=-62396..-39190,z=-54970..-41011
off x=-44344..-15201,y=-24778..6622,z=-75251..-63023
off x=-8237..24648,y=-98122..-76129,z=-16626..-11718
off x=56007..68228,y=17457..46813,z=27499..47379
off x=-25536..3313,y=27091..50818,z=-76013..-70562
off x=-867..22452,y=-60444..-40519,z=-71818..-65756
on x=-55629..-48209,y=21944..53526,z=-51930..-33309
on x=-50200..-32080,y=-26886..-8210,z=-73679..-51881
on x=48080..58229,y=42242..66852,z=19778..31076
off x=-29293..-9721,y=30767..43132,z=59998..72415
on x=-3114..5283,y=53598..77422,z=-36834..-25165
off x=-42747..-34862,y=27967..59155,z=46571..59298
on x=24734..41081,y=-68020..-55325,z=25073..44789
on x=60951..73145,y=-40729..-22896,z=-40218..-24980
off x=44699..75378,y=-22976..-725,z=41665..63229
on x=-10258..20788,y=-86210..-64265,z=12003..42342
on x=53947..72320,y=7162..37399,z=-39895..-13029
off x=-39542..-35561,y=56618..75009,z=-48379..-30500
off x=-64968..-43128,y=40418..53482,z=15313..28178
off x=7725..26338,y=-78820..-72695,z=5793..36253
on x=63870..92917,y=-31227..-5907,z=-11799..10524
on x=5051..24106,y=-60601..-34349,z=-70347..-50781
off x=-49242..-30233,y=1032..28964,z=49055..79885
off x=-7682..-1197,y=-2276..3227,z=-83960..-73167
off x=-41142..-19190,y=-8859..-4149,z=69429..86603
off x=-77189..-65526,y=10147..24751,z=6547..18732
off x=61931..87618,y=9150..26031,z=-2891..13845
off x=35442..49448,y=-24212..803,z=62461..69557
off x=-19670..-1028,y=-58834..-44115,z=-67684..-44360
off x=-27003..-6291,y=-90151..-56543,z=-36412..-17679
on x=-61239..-56325,y=-28363..-20980,z=-55652..-30421
off x=-42704..-15950,y=-24945..-8619,z=-85074..-57059
on x=-38301..-22514,y=15426..33207,z=68542..86355
off x=-47333..-40889,y=-23607..-16074,z=-75438..-61498
off x=-41292..-28792,y=-82764..-50053,z=-18368..1547
off x=9879..18027,y=-88040..-55114,z=-31569..-21687
on x=29370..47558,y=-89453..-60476,z=-7077..24097
off x=-61367..-50375,y=-46813..-36824,z=26048..47897
on x=53088..71926,y=33364..61477,z=-32978..-3454
off x=42008..72354,y=29685..47325,z=28537..41099
on x=-12144..-4590,y=-86532..-70213,z=-27908..-18632
on x=45535..66832,y=30184..50465,z=40383..65657
on x=-27137..-3917,y=-82970..-73972,z=-7640..2780
off x=-62516..-34096,y=-69186..-46618,z=-16989..7170
off x=67487..86474,y=2409..32050,z=-57219..-26630
on x=-37510..-23310,y=-1063..24320,z=61094..75764
on x=-82076..-62319,y=-23916..3119,z=31484..59801
on x=-49806..-28744,y=69790..84976,z=-19227..9783
on x=19984..27116,y=-92868..-55692,z=-32604..2749
off x=-33077..-9530,y=29925..49080,z=45757..72939
on x=21129..41298,y=-63064..-48210,z=27986..62228
off x=-29272..-15085,y=-41347..-6680,z=-86541..-54306
on x=-22795..4538,y=-86979..-68617,z=-33571..-16035
on x=37493..54597,y=-12454..3419,z=56314..71570
on x=-82969..-54144,y=-48102..-18977,z=-10241..-6489
on x=-65493..-38452,y=-69069..-38053,z=-18803..11092
off x=-51751..-40206,y=-75215..-47769,z=27129..44917
on x=7855..31889,y=-81272..-59497,z=-52331..-25947
off x=-58537..-47134,y=-27170..3264,z=-77101..-61961
off x=22788..37690,y=-80464..-65932,z=10149..28249
off x=56450..90867,y=23748..45680,z=-16199..-4962
off x=65348..72838,y=19671..42377,z=-32562..-2385
off x=39520..70668,y=-60566..-46164,z=3768..38139
off x=31909..43625,y=34147..58043,z=31955..55216
off x=-35845..-22464,y=34709..48917,z=-76334..-55144
off x=-57710..-22597,y=-89725..-55980,z=455..8523
on x=61232..79103,y=-35590..-17557,z=36396..53914
on x=13364..37325,y=-52392..-24413,z=49963..75907
off x=55123..77795,y=-31348..-5365,z=-35659..-1695
on x=-85690..-73087,y=4545..28216,z=17466..35157
on x=-62978..-36031,y=44126..49517,z=29388..58437
off x=28461..40315,y=-76360..-58542,z=-32869..-2925
off x=-55904..-48803,y=56768..61520,z=-18281..7953
on x=-75152..-64663,y=-27266..-1204,z=-49037..-29471
on x=14996..36802,y=29915..61434,z=-81327..-56940
on x=-26058..-12028,y=4310..10903,z=77438..92107
on x=-85981..-63107,y=2263..21108,z=27866..47309
off x=-23339..-4819,y=-51522..-43086,z=-80984..-57493
on x=-80721..-75279,y=-13399..5890,z=6038..32519
off x=-4839..4185,y=42901..53425,z=52703..69554
off x=-63892..-31605,y=-56660..-42554,z=22041..56754
off x=-61974..-48179,y=-76512..-48649,z=19449..28897
off x=52908..86032,y=-40433..-26401,z=18629..35218
off x=-73770..-61498,y=-22285..-15190,z=15118..47822
on x=-26995..-225,y=36166..64844,z=52253..69697
on x=-40432..-19434,y=28105..55728,z=45417..66440
on x=-36183..-5691,y=2779..35551,z=74466..87231
on x=-24042..-7050,y=-38745..-17947,z=71254..91570
on x=64292..82292,y=8725..38040,z=16406..46007
on x=57881..83142,y=-32026..-25553,z=-12007..9727
off x=-60455..-40678,y=-855..18270,z=-54122..-37486
off x=34796..51886,y=47838..54855,z=-59782..-36447
off x=27962..53686,y=-65713..-39620,z=-39332..-24577
off x=23257..38929,y=68865..81212,z=-2301..7985
off x=-28125..-11560,y=65596..78401,z=6019..27451
off x=-35635..-9089,y=-63378..-32616,z=52224..70756
off x=-51366..-40609,y=42282..59056,z=-53065..-31525
on x=-65517..-53788,y=45653..57602,z=-9739..5684
off x=9928..30886,y=55791..63498,z=39507..58962
on x=20773..33156,y=-66617..-45193,z=-55674..-38600
off x=-19345..15432,y=-49640..-29673,z=45268..77586
off x=-37554..-4675,y=-83671..-65891,z=12746..37002
on x=7340..30039,y=26358..37183,z=-72501..-56224
off x=23682..38691,y=-57390..-41912,z=36898..59852
off x=37320..53907,y=-37056..-30571,z=-68192..-42459
off x=76347..91710,y=-14687..16646,z=-25859..-5873
on x=10847..41288,y=-91590..-58641,z=15651..35606
on x=-3833..3543,y=-29112..-2048,z=69842..91959
off x=69115..95898,y=-25974..-2038,z=-4973..3980
off x=39989..66412,y=-55818..-49092,z=3921..28857
on x=-31644..-6237,y=7358..28925,z=73970..84934
off x=-15542..-4489,y=61337..76684,z=-41765..-29786
off x=-52932..-51838,y=21389..25746,z=49616..71107
off x=-91328..-65484,y=-7351..22080,z=11605..46924
off x=26027..32857,y=58474..78674,z=36221..62891
off x=-26694..-12337,y=56020..70984,z=-50254..-30734
on x=-74728..-50762,y=49755..73800,z=-887..19784
off x=11750..40798,y=5403..34501,z=69392..76971
off x=-39481..-24584,y=-70257..-44782,z=-51748..-21001
on x=-16041..6369,y=-15349..-1878,z=-82221..-72485
on x=-26734..-13763,y=-39372..-13681,z=61820..76267
off x=-3367..7668,y=46321..72714,z=-69036..-53898
on x=-15257..-3788,y=19261..25499,z=-75959..-59000
on x=23102..56887,y=50179..87663,z=-7946..18812
on x=-40390..-20111,y=-33493..-11133,z=-75926..-62093
on x=5722..27917,y=-88605..-65010,z=-9730..6950
on x=-760..25848,y=-43841..-27183,z=-73637..-58524
on x=-11739..10211,y=2568..29021,z=65720..78213
off x=-71222..-55392,y=-13076..5838,z=42985..52804
on x=18279..38683,y=-25545..1289,z=58367..91219
on x=-70367..-62420,y=22678..57526,z=-25443..-2114
off x=52159..80534,y=-35573..-32955,z=-28539..-5813
on x=46209..52888,y=54145..79273,z=8459..31178
on x=-78062..-41769,y=-43142..-26892,z=28495..50400
on x=23299..32235,y=-77803..-61730,z=4898..28371
on x=-17235..14679,y=-61639..-27409,z=-72401..-59482
off x=54590..78944,y=-25301..2668,z=14280..43390
off x=-56259..-38764,y=-70482..-39475,z=-47107..-31976
on x=-45205..-34148,y=-81460..-58216,z=22465..49489
on x=-21779..-9350,y=6017..19432,z=-77323..-70204
on x=58226..72150,y=-61315..-36618,z=-15388..15652
on x=-48752..-28573,y=-67697..-60024,z=-32021..-22511
off x=43704..67741,y=38024..65329,z=8318..33137
on x=-77517..-52505,y=29349..57611,z=-41988..-23676
on x=-27878..-6554,y=-88564..-51459,z=-37415..-29030
off x=67651..85341,y=-31556..-19564,z=-40554..-13758
off x=43857..71515,y=-34759..283,z=36263..60654
on x=-32227..-8515,y=-53304..-39055,z=-74694..-49222
on x=-69040..-42013,y=-81201..-46547,z=-3366..5445
on x=-61411..-46616,y=58820..77348,z=-7626..13600
off x=-41475..-28755,y=27623..55447,z=47265..74316
on x=-75096..-46289,y=23758..44103,z=31640..48277
on x=-54799..-33455,y=39873..75938,z=-43929..-27506
off x=-43241..-22153,y=-27047..-185,z=-74727..-63620
on x=-47646..-22540,y=2352..5448,z=50643..86636
on x=21369..38066,y=-89655..-58838,z=-8317..12371
off x=-20000..1689,y=56945..74646,z=35179..51812
off x=30874..47890,y=-76709..-52956,z=-33033..-4279
off x=-35411..-12807,y=-83057..-59139,z=7854..26851

5
data/day_23.txt Normal file
View File

@@ -0,0 +1,5 @@
#############
#...........#
###C#D#A#B###
#B#A#D#C#
#########

252
data/day_24.txt Normal file
View File

@@ -0,0 +1,252 @@
inp w
mul x 0
add x z
mod x 26
div z 1
add x 10
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 2
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 14
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 13
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 14
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 13
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -13
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 9
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 10
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 15
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -13
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 3
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -7
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 6
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 11
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 5
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 10
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 16
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 13
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 1
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -4
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 6
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -9
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 3
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -13
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 7
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -9
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 9
mul y x
add z y

137
data/day_25.txt Normal file
View File

@@ -0,0 +1,137 @@
>v...>vv>>>...v.>>..>v>vv.v..vv..v>>.v....>v.v>v>vv.v>v..vv...v>..>v...>..>....>.>.vv.v..v.v...vvvv.vv.vv.v>>v..>...>.>.>..>v.>.>..>v.>>.v>
v.v.v.>>>..v.v...v>>v.v.>v..>v>v...>.v..>...v.>.v.v...v.v.v>.v>vv....>.v.>v.v>v.>>........>>..>.>.....vv...>..v..vv>.>...vv.v>>...>vv......
vv...>v...>v>v>..>>v.v.......>>vv>..v.....vv>..v>>....>v.v>v>vv..v.v..>.v.vv...>v...>v>.v...v....>.>.....v.>v.>.>.>.>.>....>.v...>...>.vvv>
.vv>..v.v...>.>...v>.v>v.>>.>.v.vv>.>vvv>vv.>v...>v.v..>.v...>...v.>>vv..v.vv.>vv.>>v....v.v>>.>>vv....>...v.>.>.>>.v>.>..>vv>.....vvv.....
>>v....v..v.>.>..vv.v>..>vv..v.........>v>>...vv>..>...v.>>>v..>v...v...v..v..vvv.>>vvv..>>..>v.v.v.v>.v>v.v>....>>vv.>>.>..v>...v....>..v.
>.>..>.vv.vv>>>vv..v.>>.vv..v>...>..vvv>...v..>>..vv..>v..v..v.v>.v..>>.....>.vv.>.....>..>>..........>.>>>...v.>.>>.v>.v.....v>>vv.v>.....
.>.v..v.>...v>>vv.>.>.>.>v...v.>.v..v.>..v>...>>>..v.>...>v.v>.>..v.vv...>v.v.v.>....>v.vv>...vvv.v....>.v.>.vv>...>.....>.>vvvv.v...v..v>>
.....>>>>...v.vvv.vv.......v..v.>.v>.>>.v.....vvv.v>v.vv...v....>>.>.vv.>..>v....vv...>v.>v..v>.>....v..v>>v..>.>...v..v.v.>..>v..v.v>.v...
.>>..>v.v..v..>.v....v.v..>.v.v>..v.....>>.>v.v.>.>..>.......>>..vv>.vv.v.v..vv....>v>v>...>....v...vv...>.v..v.>..>>.v...>.v...vv...v>>vv>
..>.v..v....vv>.>.v...>v.vv>vvv>.>..>.>.v.v>vv.v..>>>..v....>..vv>v.>v>.>vv.v..v>>.>.v>...v.vvvv>>.>.v....v.......>>.vvvv>.>v>>>>>.>v..>>>v
v>..>vvvv.>v.......>.v>.vv>...v>.>v>>..v.v>v..v>>.>>.>>>vv..>...v...........>..v>.v.v.>....v..v.v>.....v>.v.>....v>>.v>v....v>>v.vv..v..v..
.>.>>>>>.>........>..vvvv.v.>>v>>>.v.>..>.v.v...v>.>.>.v.>..vvv.>.v>..>.>.>....>.v>vvvv>.v.>..v>>>.>.vv>.>>v.vv>v>....v..v>.>vvv...>.>....>
>..>v.>>>vvv...vv>vv>vv..v.>.v...vv.>>.v>>>.v.v>..>.>...v>..>v.v>>>>..>.>v.>>.v>.vv.>vv.>.vv....v>v.vv.v>.vvv>....>.v>.vv>v>>..>.>.......>v
v....>vv.v.......vvvv.>>..>>vvv..>>>v...>v>...>>..>.v...v.vv.v.>v>...vvv.....v.>..>...v..v....>>.>.>v>.v...v.>.v..>v>v..v.>.>.>v.v.>....>.v
v...vv..v>.v.v>>...v..............v>..v>>>..v>....vv...v..>>...vv>...>v>>..vv>vv.....v>..v...>.>.v.....v.v...>.v>..>..>..v..vv...>>.v...>.>
>>vvvv.>...>v.v.v.vv.>.>.>.vv...v>.>.v.>...v>v>.>.vv>vv>v.>.>>....vvv.>v.v..v>v>....>>..>v>..>....vv>......v.>vv.v.v.v.v>>..>.>.v>.v>vv.v..
.v..v>v.v.vv.v.vvv>.v.>v.v..v..v.vv...>>vv.>>..>v.>v.>.....vv.>v..>.v.>.v..>...>v>vv....>.>vvv>..>>..v..v.>>v>v.>>v>.>v..v>...v..v>.v...v>v
>.v.>...>..>vv...vvv.>.v.>.>v...v.....v>>>.v..>..vv...>>>..v.>.>.>.>>>.....>>..>.>.>...>.>>.vv..>.....>..........vvvv.v.vv.vv..v>>.v>...v..
...v>v.>>..>v..>v>v.v..v.>.>.v..>vv>...vvv....v....>>>.v..>..v>>>..v....v.>........>...v>...>>>.>v...v>v>>..>>.>>vv>.vv.>..>>>.v>>.>..v....
v.v.>...v...>v.>>>>>.v.>..>.v.>..>>vvv.>>>v.>vv....>.>..>..vv.>..>v.>.v.v>vv....v>.>.v..>....vv.vv..v.....>.>v>...>........>v...v..v>>v>...
v>.>.>..v>.>>v>...v..v.>.>>.>....v>.>v.v.>v.>.vv.....v>v.>.v......>.>v.v>.v..>.v..v.>v.>vvv>vv.v....v.v>....v>vv...>v>v...>>....>.>.>vv>.>.
.....>....v...v.....>>>.>......v.>>v.v.>..vv>..v..v.v>..v>.>..v>.>vv..vv..v.v>>>v.>>>..>>.>.v.v......v.....v.>...vv>>>.>.>>>.>>vvv..>>v....
.v...v...>.....v>>.........v.>>>v.>.v..>>v>.v.....>.>.....v>.>..v...>..>.vvv.>>.v.>v>..v.>>..>.>v>>>>.>.>v..>>...>v..>>..v.v>..v.>....v...v
.vv.>..v.v>..>v..>.v>>.vvvv>>..v>.v.v>.>v>..>>.>....v.v.>v>...>v>vv>....v..>.>.v.>>.v..v>vv>>.>.v..vv.v.>..>.vv.>v.....v>>.v>.>>>v..v..>.v>
.>.v.>..v.>.v>v.>>.v>>...v>.>v.....v..v.v.v>>>..v>.>>>>....>v.>.>.>.>..v..v.vvvv>>v.v>.>v....>.>.>>.>>.v..v.....v>v.>.>vv>.v.vv>.v.>vv.>v>.
>>..vv.......>v>v.v......>..>..>....v>v..>vv>v..>..>v>.v...v>.>.v..v>v>v>.vv.v>v.>..>..v>v..>...>..v>....v...>v.>...>v.....v>v..vvvv>v>.v>.
.>>v>.v...v.vvvvvv.v>.>.>..>.v...>..v.>>v.>v.>>..v.>>>v>>v.>.>.>v>..vv>vvv.v.>..>.>>v.vv.>>>.>>>.vv.>..>>..>v.v>>>vv.>>>vv>..>.>...>.>>>>>.
.....>..v.>vv>vv.vv>v.>v.v....v>.>.>v......>...v>>>v.>...>.v.>v.v>.v>......>>.....v.>v>>......v..>>.>.v.vvv.>v...>...v.>v>v..>.>.v>..>vv>>>
v...>v...v>>v.v.>>>>...>.v..vv.v.>>..>.>vvv.>..>.v>..>..>vvvv>.>>...>v...>...>.>.>.v>v..>.v>...vvvv>.v>>.>>.v>v>>.v..v...v>......v.vv...v..
.v>>v>.vvvvv>>....v>v....v.>v.vvv>vv..>...>.>.v..>>v..>>.>...>>>...v.v>.>>.>.>.vv.>>.....>..vvv>v..>v..>.....>.v.vv...>>v.v....v....>.v.v.v
v...>.vvvv..>v...>.v...>>.>.v.>>v>...v>..v>>.....>>v....>>>>.v>>.v.v...>.>v..v..v...v..v.v>v>.>..>vv.>.....v>vvvvv..v..>v>>v..>.>v>..>v.>>.
.vv..>>.....v.>.vv>.vv..>.vv...v.v>vv...>v>....>.v....v>v..>..vvvv>.>>...>..>.>.>vv>>.v>.>>vv...>vv.v>...>.>.>>v.vv.v.v>..>v..v>>..v>.vv.v.
v...>>>.>>>v>>...v.>>>>v...v..>.>.>.>.......>v.>....>>.>v>.v...>>vv>v.v...>>.>..v..vvvv>..>>.>>v.........>vv.>>..vv...v>....>v..v>>..>....>
.vv.v...v..vv.v.vvv..v>v>v>>.......>.v>v..>....v.>>>.vvv.v.>.>.>v>>.vv>..>v>.>>.>...>>>..v.>.>.>v....v>>.>.>.>v....v.v..>.v>.>vv.v..>...v.v
>.>.>v.vvv.>>.>>vv...v>.....>>>..>.....vvv.>.v>.>..v>.>.v...v.v>..vv.>>v>vv.>v.v..v.v..vv....>v>>>...v..v>.vv>v.....v.v.v.>.vvv>.v..v>v.>>.
.vv...v>.>.v>.v...>>.v..>v...>v.>>>.v.>.v.>..v.vv.>..>v>vv.>>v>.>vvv.>v>v.>.>.vv.v>>>.v>.v>..>..v..>vv....>>v.vv.>.vv.vvvv>.v.>>.>>>>>...>v
.vv....v>>.>...v....>.vv.v.....v>...>.v>vv.>.v>v>....>...v.v>.>.>.v..>vvv.>>.vvv..v>..v>.....>v>.>v>>>v>>............vv>.>.>>..vv.>..>...vv
....v.v..>v>>.v.v>>>v..v>.>.>>>>...>>..>>.v...v.v.>..v.....>.v.>>>.v.>vv>...>v>>.v.v.>..v.....vvvv...v.v>>..>>.v.v.>>.v.>>.>>.>...>>v....>.
v.>>>.v.....v...>.>.v>..v.vv....>..>>v.v.vv.>.v>.......>>>vv...v.v>.>.v>..v.v.>>...>v>>.>..v...>.v>v..>>...v>>.>.vv...v>.....>>.>>vv.....v>
.v.>vv.>.....>v>.v>.>vv>.v>...>.>>...>.>..>v...vv.>.vv.>vv.v.v.v....v.>>.>>..>v.....>v..>v>.>.>.>.vv....vv.>.v>>....vv.v>...v>..v.>v....vv>
..v.v.vvv>.>.v....v>v....>v...>>v.v>.......>..>.....>>v.>..v>>.v.>>>.>vv.v..v..v...v.v.v.>.>...v.v.....v.>vv>.>..v..v....vv>.>...>..>v.vv>.
>.>.v>.>.>v>v...>v..>.>.vv.vv..>>>.v..>>.v......>>.....v...>>vv>.>>..>.>..v.>.v.>>>.v>v.....>.>v>...>>>>.>v>.>...vv>>.>.vv..v>v.>.vvv>>>..>
.v..>..v>>......>..vv....>v.....vv..v.>v>v>.v...vv>v...>..>.v.......v>v..v.>.>>v>.v.>.>.v>.>>....v...v...>>...v.v..>>>v...v...v.v.>.>.>..>>
...>.>......>>v.vv..v>.v....>...v.>....v>.>.>v>.>.>...>.>.>v.....>>.>.>..>>..v>>>v>>vv.>.v..>.>.v.>.vv>.v....vv.>v>v>v.>..>.....>....>.>>>v
.>......>>.vv..v..vv>v.>...v...>..v>v...v>v>v>..vv>vv....v...>...v>v.>v>>...>..vv....>..>>.v.>..vv...>.>.>.>>...........v.v.>....>.>>..vv..
.......v...>>.>.>vvv.v>..>.v.......>v..>..v..>v>vvv..v.>>v.vv.v.>>>.>v>>.v.vv>>>v.....v.....v.vvv..>vvv.v>v....>v...>>....v.>..>..>.>v...>>
..v...>v>>>v>...>>...v....vvv.v.v.>..vv...>..>v.>.>>.>>>v.v.>.vv>.....v>.>..>>.v>>.>...>.v..>v>......v...>>.>v>......>>>.v>>..>....v>.v>v.v
v.v...>..>..>>...v>>.>..>..v>.>v.>>>vvv.>..>v...>v.v.>.>>.....>.>.>v.......v..v.v>.........>.v.>>.v>>....v.v...v.>v>>vv......v..v.v..vv.v.>
.v.v.>..>..v...>.vvvv>.v>>..>.>.v..v.>>..>.v>....>>v.v.v..vv...v>>v...>...>.>.>>v>v.vv..vv>..v>>>..>.v.......v.>v>v.v..v.>>v>....v>>...>...
v.v...>..v.....v.>...>.>.v.>......v......v>.v>..v.......>>.v..v.v..>v..v...>.>...>.>>>.....vv>.>>.v..v.>vv>vv>..vv.>.>.>.>..>>.>.v....>>>>.
>>v.>>....>.>v..>.v>vvv>.>>>.vv>.>>...vv.v...>>v>>.>vvv..>>.>..vv..v>>..>vv>v.>>.v...vv..v..v>v....>...v.>.v.v>.>vv>..>>vv.>.vv.v>..>.>>...
v>....>.>>..>>vv..v...>v..v>.v...>>.>v>.v.>>v.>.>vvv>.>.....v>.vv.>.v>>.v>v.vv>..vv.vvv>.v>>.....v>.v....>..>..v.vv.v...>......>...v..>..v.
...>>.>v...v>>>.v.v.>v.>v..v.>v.v.>v.>v>...v.v.v>vv>.>>..>.>vv.>.......>.....>>>.v>.>>v>v.>v...>.v..>v...v..vv>.v...v..vv>....>>>.....>v.>>
....v.....vv>>....v...>...v...>.v.v>v>>v..v>.>>.v.>>v>.....>>>.>.....>...>..v......v.....>>>...>>>.v>....>v>.vv>v.vv.>.....v.>v.v>..>...>..
>...>vv..vvv..>..v.>>>.>v.>>..>v...v....>v.v.v>...>>v>.v.>>>....>>..>v.vv...v>.>>..v.v.v.....>>>.v>...>.>vvv...vv.....>...v>..vv.>>..v..v..
.v....>>v.>>>.>.>...>v>.v>..v>.v>.vv..>.>....>.v..v.vv.>.>>.>.v>....>..>.....>.>vv.>.vv..>......vv.v>.v>>>vv>..>.>...vvv.>..vvv.>>....vv.v.
>...>>..>.v..>.v.>..v...v..>>v...v>.>..>..>.vvv..vvv.v>.v..v.>.v.....>.....v.>.v...>.....v.v>v..v.v>...>..>.v..>v.vvv>.v..v>vv...v.>.vvv>>v
.>.v.>>v.v..v.>>>>......>>.v.>..>v.v..>........>.>>>v...v...>...>...v>..>.v...v.vv.v.>v..>v>...>v.....>v..>...>....v>>..v>>v>.v>>>>v...>>.v
vv...v>.>.v.....vv>>v.>.v....>>v>>.>.>.vv.v.v...vv.v.vv>>.>....v>.v.>.v.v.v.v>v..>.v>..v.v>>vvv..v..>.>vv.>..>..>>.>>...>.>v>>vvv..>v....>.
...>>vv.>v..vv.>>..>..v>.v...v>v>...v>...v.vv.>......vv.>>vv.>v>.v>..v>>..v...v>v>v.v.......v.>.>>.....v...>v..>>>.vv>v>..>.>v...>>..vvv.v.
...v..vv>v.>.vv>.>..vv.vv...>v.v.>v>.v.v..v>.v....vv.v.v..>.>>...>v.vv.>...>.v..v>v>>vv.v....>....>vv.>.vv..>.v.>>>v.>..>>v..vv....vv..>>v.
vv.v...v...>>v.v...>.>.......>..>..vv>v....>vv..v....v.>vv.>.>..>v.v.v>..>...v>.>.v..>..v>>vvvv..>v>...>v>.v>>>...v..>.>vv..v>>>....vvv..v.
.>>...vv.>.>v....>v.>>>.>.>.v.>...vv.vv.....vv.v>v....>v.v..>.vv>>>.v.>.v.>v>.v.v>....v.v.v..v.>.vv.v>v.>.v.v>>v>v..v...>..v..vv...>vv>.>v>
>vvv...>.vvv.vv>v.>....>.>>....>>.>.>>v.....>v.v.v.>.v.v>.>v..>.>..v>v...>>>>.>vv>v.vvv.>vv>v....v>>>.v..>.v>vv.......>....vv>>.>>.v..>v..v
.v.vv.>..v.>v.v.vv....>>>..v.v.>>v.>.>...v.v>v>v.>>vv..v.>...vv>.v...v...>...>..>v..v..v.>>v>>..>>>>>.>>.....v.vv..vv.>.vv..>.v>...v>.v.>>v
.v.>.>v.......>v.>>>..>.>>>.v.>.>...vv>v..v..>.v...v.....>.v>.>.>>>v.>.v..v.vv..>.v.vv.>>.v.>...>v>>..v.>......v...>.>..vv.vv>...vvvv.....>
.v.vvv.v>v..v>...v>vv>>>>vv.v>...>.vv.v.>..v>..>....v>v.v....vvvvvv>>..v...>>>vv.....v.>vv.vv.vv>.vv>.>>.>..>......>.>...>.v.v.v.>v.>>..v>.
>v..>vv.....vv.v.v.v>.>v>>vv>>>.vvv..v>...v>...v..>v>v.>...>..v.>v...vv.>v..v>.v.>....v.>.>>..>.v.vv.>..>...vv>v.>.v>vv.>>>vv..>.>>..v..v>.
>..>>v>>>v>.vv.>>.v...v.>.>vvv....v.>.v>>.>...>>.vv.v>.v.vv>v...>..v>...>.>>.v.....v..>..v.v>...vv>v>v...v.>..>v>>v.>.>..v>..>..>..>>v.>.v>
>.>..>>..v>v.v>v.v>..>>...>.vv...>.>>.vv>.....v...vv......>v.v.>.>.v..v.v.v.>>>v.>>>v.v>.v>v.>v..>..vvv.>>>v....>.>v...v..>......v...v...v.
>v>>>>.>v.v.>vv..........>v>vv..v......>..v..v..v.vv....v>v>>>v>v>>..v..>vvvv.>>>v.v..v.v.....>.>..>...vv>>v..v.v.>>v.>...v>vv..v.>.>>>vv>v
..vv...>...>v>....>..>v.>>vvv>.>.v>>..>.>>>>>..>vv>........>v.v.vv..vv>>.vv.>>>v>vv..v>>...v>>>.v...>....>>.>.v.v>.vv..>.>.>v.>..v...v>>>.v
v>.>.v>v>vv..v>.>.>..>>>>...v>.vv>>......v.....>....v.>.>.>..>..>.v......vv.v...v..v.>..>>.v>>.>.>v.v.>....>.v..v.vv.vv>v>>>v>>vv.>>.>.v>..
>..>.>....v>>v...v..>>v....v.>...v>.v>>...v.>v.>..>.v.v>vv.>.v..v.>..v.>vv.>.>.>>.>vvv.>.v.v>>>.vvv.vv...>.v>>vv.v>vv>v.....v..>.>.>>>vv>..
.....v..v.>>.vvv.>.v..v.>v.v.v..v.v..vv..>.v...v.>..>>v>v..v....>>.>..v...vv.v>.v.v>..>.>vv>..>>.vv..v.>v>v...>.v.>...vv..>>v.v>v>>.......v
v.>.v.v.v.v.v...>.v>.v>>v.>.>..>.....>>..>.>.v..>v>.v>vv>>..>.....>.vv..>..>....v>.v.v..v..>>v.....>....v>v>...v..>....>.>v..v..>vv.>.v.>>>
.vv.....>.vv....v.>.v.v.......v.>.vv>>>>..>vv..v.v..v>...>..>..v.v..>..>.v.>.v.>>......>v.>..v..v......>.>...vvv....>>......v>>..>v.>....>.
>v..v....>>>>.>......v>.>>.>v.>...v.v>>.v.vvv...>..v>>..v>v>>>.vv.>>v..vv.v>>>>v..>>>.vv.>>.v>...vv..>>.vvv.>.>>v.....>.>v>.v..v>.>>>..>.>v
v......>.>vv...vvv.>.>v.>v.v....>..vv..>...>>>>.vv>v.>..>.v>..>>...>>>....vv..v.v..v>v>......v...v..vv.....>.>>v.>..>>.>.v.vvvv...v>>>>v..v
.v>vv>>..>>.v.vvv>v.>>v.v.>.>.v.v>>>..>>..vv.....v....v.>.vv..>>v>.v..vv...v>.v.>vv>.v.>v>>>.vvv..>..vv.vvvv..v..v.>..>.v>>.v..>...v>...>>v
>..v.>..v.>v>>vv.>..>>vv.>v.v..v>v>>.v.>>>.>>vv..v.vv.>>>.vv.>...v.>vvv.>>v..v>v>.>v..vv>...>....vvv...v.v>>.v.>..>>v....v>>>....v.....>vvv
.>.>..vvvvv.v....>>.>v..>.>.>.vv.>v....v.vvv>v.....vv.>v>vv...>v>.>..>>>v.v..>v.v..>vv....>...v.>...>>....>.>vv.v>v>.v.vvv.v.>v.v.vvv..v.v.
.v....v>....vv.>vv.>>.v.>v.....>.v.......vv.>.>..vv.>v>....vv..v...>v>.v...v.v..>.>v.v>v>....v>....>>>....v>..v..>..v..>>>....>>v>>.>.>.vv.
..v.>.....>>.v....vv...vv.v.v>.v>>>vv>>v..>v.vv.v>.>>.v>v.v.>..>.>v>...v...>.v>....v>....>>..vv.v>...vv.>.v..>>.v>.>>..>>.>vvv>>..v.>vv..v.
...>vv.>.v...>v.>>>..v>.v>..vv..>v...v....>v...>>>>..>>>>.v.>>...>v.vv.v>>vvv.>.>>.>.>..v>..>>.>v.vvv>..v>.>v>.v.>..v..>vv>....v>....vv.>.>
...>>v.>.vvv>..v..>>.vv....>v.vvv..>v.vvv..vv..v.>...vv..>v.>..>.vv...vv.>..>>.>vv>.v.v.v>...>..v>>>..>>>>..>v>...>.>.v..v...>v>.v.>>.>.v.v
.v.>v>>..>v..>.>>...>..v.v...>>>>v.v....v.>.>>vv..>.>..>.v>......>>>..vvv.....vvv.v>vv....v.>>.v..>..>>.>v.>>v.......v....v>.v...>.>>>.vv.>
>v.v>.....>.>...vv..>v..vv.>>v..vv>>.vv>.>>.>v...v.v..>...v.>v>>v>...v>>>v>>..v.....>..v..>.v...>.>>.>>>.vv>>...v...>v>>.>>v.v....>>>..v...
....v>v...>v>..>.>>......>.vv.>..>>v.v..v>v.>>v>v>.vv.v.>.vv..>..v>........>.>....v..v>.....vv>v>...>.v>>.v.>.>.....>>>....>>>.>..>.v...vvv
.>v.v.>>>.v.v>.v......vv>>v.v...v>>.v>v.v>..>>..>..vv>...>v....v>.>.>..v.v>vv..v>v....vv...v....>>...v>>.v.>>..>vv>.>...>...>..>v...v>>v>>v
>v>..v.v.>.vv.v.>..vv>...v.>..vv.>vv..>..vv..>v..v.vv.>>v..v>>..>vv.>.v>vv>...>..>vv.v>.vv>.>...>v>v.v>...>..>.>.>v.v>>..v.v>>v.vv>.v>.v...
v.>>...>>..vvvv>.v.>>>v>..v>>.>..>.>>.vv.vv.>vvv..>....vv>.vvvvvv.>>....v>...v>.vv>v.vv.v>...>v>.........vv......v>vv.>v.v.v..v>.>..vv.v>v.
v.>..vv...v.>>.v.>>.>.>>v>.>.v.vvv.>.>v>>...vvv>....>>..v>vv..>>v...v>>v.>>vvvv..v.>v.v>v>v..>v.v.v>...vv.>.>..v...>v>..vv>v.>...>...v.>.>.
>>.>.....v..>.........v..>.v>>v...v..>>.v.>.>v.>v>v.>>..>.v...v....>v.v>.>v.v>.>vv>v>vvv.vv.v>....v>vv..>..>.>.....v.v.>vv.v.>..v.v.vv.v.>v
.>>..vvvvv.>v>>.v.v>>.vvvv..v...v.>.vv.v..v>>....v.vv>..>...v..vvv>>>..v.>.>.vv>>.vvv>...v>>..>v...vvvv>>v>..v.>v.>.v.v..vv....>..v..v....v
.v.>..>.v.v..>v...v.>v>..v>>>.vv.v..vv>......>......>.>>..vv.......>...vv.......>....>>..>..v...>..>vvv.....>...>.v>.....>.>....v..>..v>>>.
vv..vv.v..>>..v.>>>.>.>...v.v.>v..>.vv>..v.>vv.>.v...vvv>v...>..v..>>.>v.v.>v.vv.v>v>..vv....>.>...v.>.v...>.>...v.v....>....vv..>.v>>>.vv>
v.>.>......v....v>.>.>v...>.vv...>v.>...>..>.>vv.v..v>vv>..>>.>v...>>>>v..v..v..vv.v...>....v..vv.>>..v>.vvv>.>........>>..v>.>>.v..>..>v.v
..>>>v..v.v...v.....vvv..v.v.>.>.....>...>..>v>...>v>.v.>>>v.v..vvv...v.vvv>v.vv>.vv>.>>>>.>v>.>..v..>.>>>v..v.v>.v>..>.>v.>>.v....vv>>>>>.
vv..>..v>.....v..>v>>..>>..v...>..>..>.v>v.>>.>v>v.v...v>>>.v...v>...>..v.>>v.v...>>v>.v>......v..>.....vvvv..v.vvv...>....v..v.v......v.>>
>>..v.>..v..v>v...v....v....>.v.>.vv....>>.v.vvv.v>>....>>.....>...>vv..>...v...v>.v...v..vv.>.vv>.v..>.>.v..vv.v.>>.vv...v..>vvv>.vv..v>..
v>v.v>>>vvv...v..>>>>>...vvv>.>.v..>v.>>.vv.>.v.>.....>.>..v>..>>.>v>.vvvv....>...v>vvv>..v...v....>>.v.>.>>.v..>.v.v>...vv...v.....v...vv.
.v..>.vv>v..>.>>..v>..>....v.>v....v....>.>v>.v>..>>.>>v>..vv>>...v>.vvvv>v.vv>v>v.>>..vv>v.>.>....v>..>..>v.>..vv...vvv.v>>..>v>.>.>..>>..
....v.>..vvv.>>v...>...v.v..>..v>.>v.v>v>>.>.v...>vv....v.>..>>>v.....>...>vv>.......>v...v.v..vv........>vvv>.v>>..>.v..v.v.vv.>.v...v...>
>.>v..v..v.v>>>..>..v.>.>v..v.v>.vv..>.....>v.>...>.>>v.v.>.v....v..vvv.>.>>v...v>v....>v.>.>.>>.v.vvv...vv>vv...>>v..vv.v.vv.........>.v..
...>>...>>..>vv.vv.v..>.....>v.v..>v..v.v>.>....v..>..v>..>v.v..v.v>.vv>>v.>>...v>.vvv>..vv..>.v>..>vvv>>v.v>.>.v>v......v.....v....>vvv..>
>...>.vv>v.v..v.v...vv..v>v.vv....>>.........v>.v.>.vv.vv.v...>>>.>>>.>vv.>v...>..>..>.v..>>...>v.vv..v>vv...>>.v.v>vv..v.v>vv..vv.>>.v..vv
>>.vv.>.v.>v>.v.v.>.v....v...vvvvv>>...>.>v>..>...>...v.vvv.v..>v>v.>.>v..v.v.vv>.>..v>>.....v.vvv...v>v>...v.>>..>......>.....v...v...v...
...v..>>v..vv.>..>.>.>.v.>....v.v>>.>>>..>...>v.v.vv...>vv.>v.>.v...vvv....v>v.vv..vv..>...vv.v>..v......v>v>>...>>..>v>...>>>>vv..>.v.>.>v
.>.>v...>>.>..>v.v>.vvv>>.v>>...v.v>.v>..>v.>>v....>.v>vvv>....>>.>>>.v>>...>v>..>>>.>....>v...>>.>>.>......>..v....vv>...vv.v>....>>.v....
v..v..>.>>vv..vv>vv..>vvv>v.v.v..v..v.>v>>v>>..........v>>v.vvvv>...>vvv..vv>v...>.v...v.....>v..>>.>..vvv..v>..v..>>>>v.....v..v.>....>>.v
>.>v.>v.......>v>>.>..v.v....>>>.v>v>v..v.>vvv>v>>..>.>...vv>.v>.v>....>.v.>.v...vvv>v..v...>..>.>>v...>.>.......v...v....>vv.>..v.>>.>vv.v
..v>.....>......>>.v..v...>>..vvv.>.>.>....>.v>v..v....v>>.v...>v>..>.>v..v....>...>>.......v.v.v.v...>.>.v..v.>vv...v>.>>.>>...>....v.v.>>
v..>...vv>...>.>.....v..v>...>..>.vv>>v..>vv.vv..>v.v.v>.>>>>.>..>>>>>.vvvvv>>>..>vv.v>.v...v..>v.....vv..vv>>.v.>...v.vv...>.>.....>>vv...
vv>>vv.>v.v..>...v.>....>.>..>>>...>>..>.....>.v.v>.v..vv>....>.....>v.>..>.>v.vv..>v>.....v.vv.>..>..>..v.>v..v.v>v..>.....v.>...>..v.....
.v.>>....>>vvvv>>>..v>>v.>>.......>.vv>v.>vv.v>v.>v.>v..>>.....>v>v.>v>.....v..vvv..vv>.v.vv.vv..vv..>..v>..v.>.v.>>.v.>vv.vv>>...>..>.v.>.
vv.>.>.v>.>...vv>v>.v>.>..>.vv>.>>.v.>.v>...>..v..vv...vv.v>......v>>.v>.>vv.>.v>v.>>vvvvv>vv>.v.>v...>.v>..>.>v.v.v..v.>..........v..>>>.v
>..>.>v>.v>>>.v.v.v..>...>>>...>v.>.>>..>v.>.v...v..v.vv...>>>.v.v>.vv>>vv>..v.v...v.>>..v>vv..vv>>vv.>>>v.v....>..v.v.vv..v.v.>>v.v.vv>>..
..>>v.>.>.>.....>...>.v.>>.v....>vv...>vv.>.v....v.>.>>.>.vv.v>v.......v>.>......v>.>>.vv...v>...>.>...>v>>..vv..>.v...vvv>v>vvvv...>......
>.>.v..v....vv.>.>v.v..vv...vvv...vv..vv.>.>..vv.>.vv>..v>.v>v>v.v>.v......>>.v>vv.v>v.>>.>.>.vv>..vv>....vv>.......>v.>>..>>......v>>...>v
>.>..v.>>.vv.vvvv.v>vv....>.....>.>...vv.>.>..v.>vvv..>v>......>>vv..>v>>..v>..v.v.v>..vvvvvv>v.>>v>..>..v.vv.>..v>>...>..v>>.v>v.....>>v>v
.v.v.....>.vvv......v...>.v>vvv.....v>>....vv..v>v.v.v..v.v.>vv...v..>>v..>v..vvvvvv.v>vvvvvvv>..vv.v.v>.....>v>..v>.....>>.v>.vvv.vv.....>
v>>.vv..>v.>>..v.>.v.v.v.v..>v>v.>.>v.v..v.v>.v.v.v.....>...>.v>.v.>v..v.>vvv...>.v>v.vv.>.>vv>v>v>.....>.v.>vv.v.v>v>vv>v.>..vv>v...v.vv.>
.....v..v....v..v.>>vv.>>..>>>v..>v>.v>v>v>>v>v>.v>.>..vv>..>>>...>>>>..v.v.v>>v....>vv..v.v>.v>.v..v>v.>.v.>.v>v>v.>vvv.v..>..>>.>.......v
>>>vvv.v.v..>>v.v.>...v>>v>.>..v.v>>...v..>>>v.>>vv>>.v>v..>v>v.>.>.......>..v>.v...>.v..vv.>...>.vv...>...v.>.>v..v..v>.v.>>>>.>v....vvvv.
.>..>v>>.>v.>.....>..vv.>.>.v.v>>v.>v..v.v.>vv.vv.>.....v>>....>v>.....v.>vv..>>vvv>v>>.>.vvv.>v.>..>.v.v.v.v...v>v>.>v.....v>v..>>.>>.>v..
v.>>.>v.vvv..v.>>>......vvv.v.v....v>..v>>>.v.>v.>>.>>v.>>..>v...v>..v.v.>...>..v.>.....vv>v.v>v..>>v.>.v>vv.>v.>v.....vv.....vv>v..v.v>..v
v>>.v>.>.>>v>v>v.....>v>.......>..v.vv..v>>.>.>>.vvv>.v>>.>v..vv>v>v>.v.>.vv.>.>.>>v>>.>..v..v>v.v>>v...>>.v.>>..>>..v.>.......>..>vv......
.v..v.>.v>>..v>>v.v...v>.v.v>.....v.v....>>.v.>>v...v..v...>..>.vv.v>v..>.v>.....>....v...>.>.>....v..>vv.v.>......>v>...>.v.>......>..>...
...v>.>...v...vvv>>.>.......v>...>.>..vvv.>>....>.v..v>.>v.vv>v..>>.>.v>.v>v..v...v...>v.vvvv..>>..v>v>v..v>>...v........>.v..v....>>>>..vv
.v..>v.vvvv>......vv>vv....v..>v>>v.v.>v.v...v..v>.v.>...>.>.>>>...>>vv.>...>>..>v>.>vv.>.>v..v..v.>>v...vv.v.v>..>>.v...>v.vv>>.>v.v...>.v
.>v.>.>..v...>>v>.>.vv...>..vv.v...>>.v>v...>..>.>>>...>>....>v>v>v.>..vv..>...>v.vv..v.v.v..>>.....v>vv..>v.>>.v>.v.vvv.>>.>.>..v..>.v>.v.
.>>.>v...>vv.>>>..vvvvv.v.v..>.>>>vv.........>..>vvv...>>.>>....>>v.v...v>..v>v..>.>..v..>>..v>>vv........v>...vvv...>v..v.vv.>......>.>..v
v..v.v>.vvv.>>>>>......v>>v..>>.>..>.....vv>.v>>..>.vv..>.v.v>v>v..>...>v>>vv>v..>>v..v.v..vv>vv...>..v.>v>v>.>.>>>v....v.......v>..v...v>.
>>vv.v..v..>.vv.>v......>v..v.>v.v..vvvv...vv>v>..v>v>>..>.>..vv.>..>..>.v>>>vv.>.....v>v>...v>.>.>.v.>>.v.>vv>vv...v.vvv>v..>.v>vv..v..>.v
..>.....>>v..>vv.>>..v.......v.....v..>v>...>v>.........>>.v..v>>v.vv.>v>>>...v>v....>vv.vv..v.v..>v>..>.....>>>.v.v.v.vv>v....vvv.v.v>..>>
..v.v..>..>v>>.v>...>...>>v>>...>.v.v....v...>.>.vvv>..>.v..v>>v>vvv>.>....>v.>....>.v..v....>......>...>.>vv...v>>>..>>..v.>>>>.v.v>vv>.v.

1000
data/day_3.txt Normal file

File diff suppressed because it is too large Load Diff

601
data/day_4.txt Normal file
View File

@@ -0,0 +1,601 @@
23,30,70,61,79,49,19,37,64,48,72,34,69,53,15,74,89,38,46,36,28,32,45,2,39,58,11,62,97,40,14,87,96,94,91,92,80,99,6,31,57,98,65,10,33,63,42,17,47,66,26,22,73,27,7,0,55,8,56,29,86,25,4,12,51,60,35,50,5,75,95,44,16,93,21,3,24,52,77,76,43,41,9,84,67,71,83,88,59,68,85,82,1,18,13,78,20,90,81,54
50 98 65 14 47
0 22 3 83 46
87 93 81 84 58
40 35 28 74 48
45 99 59 37 64
85 66 90 32 88
95 6 4 74 27
1 10 70 41 92
54 36 42 9 39
60 99 31 67 16
4 44 66 10 58
33 64 93 42 46
19 63 6 83 54
60 51 76 8 30
71 49 73 7 55
17 67 52 61 98
46 5 4 51 76
73 59 74 8 33
48 96 20 26 15
55 19 86 29 43
20 75 12 67 41
89 36 65 66 92
40 19 1 0 28
99 61 85 58 50
44 72 57 35 86
69 87 27 59 33
47 34 60 93 9
71 84 46 24 96
15 91 5 61 19
57 78 55 31 8
19 10 1 81 96
27 71 2 52 56
15 22 48 82 34
64 47 42 49 51
26 72 61 12 57
71 94 40 34 26
12 80 57 38 55
4 56 11 73 49
75 60 61 9 50
91 70 23 1 90
39 86 30 73 38
6 53 58 14 36
85 12 75 88 5
0 29 41 21 15
47 66 59 54 1
99 97 50 17 60
36 13 29 80 32
49 85 75 71 15
10 79 41 61 66
68 57 55 74 98
68 33 87 89 59
96 35 76 78 55
4 63 51 10 65
58 38 22 54 9
66 18 37 60 6
43 86 50 23 77
10 42 19 61 2
40 29 20 84 0
70 59 96 80 57
76 12 39 36 6
73 43 92 37 99
36 42 10 77 87
3 57 4 20 35
18 7 46 91 11
17 98 8 53 61
22 37 89 51 9
71 6 72 87 32
13 79 86 53 98
16 2 93 48 38
63 82 66 61 69
73 90 85 54 65
9 66 28 5 63
91 50 70 59 80
95 68 92 72 67
69 88 36 43 53
36 81 66 78 90
2 25 94 82 55
34 45 1 14 37
13 4 70 48 75
67 73 32 18 91
33 93 71 48 47
8 79 69 53 82
5 31 80 45 37
67 77 41 56 97
65 46 62 42 81
67 70 59 24 88
84 11 29 52 78
4 39 12 90 2
44 3 10 75 89
30 93 22 14 8
79 60 98 99 49
23 26 86 91 38
77 45 95 66 75
81 42 85 21 3
40 37 65 20 50
12 54 0 86 52
15 56 29 39 94
66 79 14 65 26
3 4 59 60 40
47 48 19 13 85
32 44 69 90 21
35 8 1 59 56
72 71 84 18 11
96 38 23 37 79
92 20 33 94 17
1 94 42 21 82
92 60 9 32 38
71 3 37 77 18
89 16 74 76 2
83 30 28 11 70
94 3 1 71 87
6 66 19 76 28
10 86 22 62 2
67 0 31 46 27
8 33 43 92 29
35 90 8 30 27
67 60 82 68 1
5 29 93 44 34
56 65 48 37 51
57 45 63 94 77
67 80 45 57 43
37 81 25 84 82
50 8 9 64 7
29 18 52 16 14
73 28 11 76 6
5 76 67 18 16
68 47 15 29 59
46 32 40 9 84
30 17 20 22 3
35 80 38 72 88
35 44 14 89 72
75 67 56 2 3
58 41 49 12 52
92 9 22 34 88
65 39 93 61 47
38 67 33 18 60
34 50 69 31 83
29 30 9 12 95
79 2 24 54 87
46 68 48 58 42
61 87 46 26 34
74 85 9 54 38
50 29 84 40 4
49 39 33 99 53
77 59 0 42 35
86 68 23 62 5
96 92 7 4 1
50 70 12 83 46
34 63 91 56 11
76 90 71 88 95
19 18 13 3 62
42 29 57 79 85
39 64 14 28 98
99 36 91 9 63
69 66 2 17 31
51 43 49 98 94
31 64 53 54 57
3 28 10 12 2
24 99 95 35 17
76 27 48 0 41
80 62 13 38 98
32 15 16 8 96
93 43 81 99 40
20 57 37 24 3
94 17 70 14 7
52 71 49 95 84
76 38 45 59 89
1 7 27 0 98
92 64 8 50 68
13 91 26 51 2
31 45 25 1 5
50 68 77 61 53
74 20 99 38 63
76 44 15 42 51
67 87 86 12 24
49 0 70 82 9
2 24 96 74 60
68 16 40 32 20
48 6 98 11 65
94 10 54 8 95
74 41 11 33 76
2 10 44 89 23
56 45 78 60 34
15 5 26 83 71
20 72 85 75 54
15 59 93 53 8
4 10 84 44 36
17 62 24 27 98
87 54 73 13 35
9 48 52 33 7
56 80 70 74 35
53 69 75 25 27
47 91 85 62 32
93 26 89 18 52
16 73 49 55 77
42 40 54 67 73
11 10 49 35 59
12 93 37 15 69
97 41 47 39 2
75 99 21 29 26
23 75 41 10 86
71 67 66 38 99
91 92 63 40 28
69 97 42 77 60
44 53 12 84 57
72 51 31 90 37
35 89 55 73 87
46 32 45 0 58
50 81 13 18 66
38 4 40 62 22
14 48 35 76 83
13 70 26 4 1
30 22 91 93 29
69 41 74 40 63
80 65 66 72 23
23 65 33 56 38
84 41 34 21 2
4 78 27 17 11
22 53 52 32 80
24 25 42 91 99
54 51 0 23 52
92 69 10 46 7
20 35 12 37 73
19 56 26 79 32
27 74 34 5 57
75 10 24 32 7
96 54 22 78 5
23 69 65 43 20
29 85 44 92 71
41 87 73 0 48
54 92 16 36 37
42 59 4 9 44
52 14 12 6 47
57 38 70 82 0
53 81 32 35 3
17 22 62 80 30
8 28 15 42 46
79 64 32 29 75
5 0 9 90 69
41 71 85 1 6
68 89 40 31 39
32 48 64 38 28
80 98 88 14 97
6 60 52 11 55
95 34 63 81 4
80 33 14 83 68
78 69 81 59 15
72 0 74 21 75
49 6 67 73 64
8 25 87 3 45
34 97 86 1 79
49 12 63 10 59
88 30 84 74 87
67 47 26 0 57
71 40 2 76 98
15 89 23 65 44
27 87 54 38 12
43 29 18 39 94
48 0 7 57 61
70 28 60 68 50
13 34 49 67 40
88 74 99 20 26
63 69 62 24 32
35 45 96 79 1
92 7 17 76 30
95 21 75 46 74
39 7 58 23 90
61 64 37 81 82
92 36 54 9 53
17 51 33 10 27
67 35 44 22 23
28 96 1 56 29
0 12 5 50 99
70 42 8 24 25
39 53 51 89 85
50 15 94 84 27
72 26 51 3 85
63 45 1 64 44
17 80 13 88 2
12 97 91 25 18
59 14 9 67 63
6 18 26 98 50
86 74 75 56 34
48 7 99 20 64
8 53 10 15 57
6 35 13 68 24
90 19 91 71 86
95 58 10 44 98
8 41 60 1 16
29 59 43 84 48
48 56 8 74 4
66 30 77 35 90
94 0 75 49 84
5 39 11 54 87
33 58 96 22 2
5 38 57 63 65
74 58 22 8 81
45 96 78 3 11
28 42 30 39 51
87 33 34 75 14
56 34 67 70 17
7 80 10 31 85
68 59 63 74 40
13 81 99 62 6
92 84 71 37 39
85 99 74 16 10
12 21 91 2 83
4 94 38 51 36
41 97 45 65 24
50 82 92 52 35
28 65 6 13 23
7 57 86 18 67
26 85 29 22 89
99 62 94 31 96
14 17 50 56 9
98 10 63 4 8
46 21 58 89 3
27 12 11 55 16
61 38 43 33 54
53 14 99 31 25
25 70 24 40 14
75 82 58 68 41
22 71 72 93 1
47 97 6 81 45
92 42 2 76 12
31 84 30 0 85
55 70 72 45 57
78 52 67 60 22
43 32 8 44 34
14 64 91 89 18
70 19 62 16 56
84 49 41 3 20
85 5 76 95 22
63 55 37 31 72
42 17 28 65 1
85 17 57 62 48
34 29 69 52 28
90 64 54 21 38
0 50 84 44 60
93 80 75 89 83
39 84 78 12 5
29 4 35 7 85
73 25 58 27 45
22 90 91 47 74
60 96 15 24 26
13 30 82 31 43
23 71 1 51 36
40 62 25 54 86
8 83 2 47 34
33 41 27 98 24
13 25 53 50 56
77 4 41 19 22
68 70 75 9 65
30 33 60 74 80
31 83 34 79 11
11 90 38 78 73
17 16 14 37 4
80 68 21 70 92
47 26 81 67 25
10 31 23 41 22
90 62 2 50 79
77 51 8 11 13
32 29 43 88 33
39 34 89 45 23
91 9 6 68 3
62 70 89 27 87
45 65 96 80 29
1 54 90 68 16
72 50 28 95 12
21 71 81 10 60
33 14 60 44 78
6 65 87 11 8
79 21 59 35 19
26 69 67 42 27
25 36 80 10 45
71 24 80 87 56
7 61 43 38 18
52 46 41 28 48
0 74 20 34 63
3 84 42 85 9
36 64 41 7 49
91 92 13 94 88
73 98 79 0 12
76 66 86 67 9
2 85 74 5 34
8 81 7 56 28
36 13 42 29 75
12 27 85 45 9
26 25 62 41 22
79 11 95 0 24
72 76 81 67 16
96 41 94 58 7
0 79 38 27 11
61 36 56 88 39
89 63 31 75 8
62 51 5 46 28
77 97 89 86 13
87 55 73 90 57
84 44 40 49 34
25 0 58 6 21
7 56 15 41 94
42 89 16 18 74
57 79 96 35 3
14 45 20 19 80
87 85 28 69 17
27 88 54 62 65
44 93 69 13 9
85 63 43 11 47
83 57 30 20 56
71 46 49 7 77
45 24 75 39 69
48 74 44 49 64
65 25 22 46 93
88 52 27 37 50
19 35 47 54 67
44 32 71 13 57
7 38 26 98 65
46 1 21 8 55
30 62 92 27 3
69 50 99 85 11
86 6 64 34 97
47 98 7 38 9
26 68 75 92 54
58 42 13 78 37
85 28 81 16 51
82 74 15 4 86
55 0 70 88 24
50 79 63 40 21
47 39 61 49 36
89 16 13 2 37
89 19 9 82 13
84 34 58 56 10
27 92 46 4 94
44 24 52 86 55
39 23 22 99 5
65 92 8 86 77
98 79 72 28 78
16 23 3 55 48
68 95 66 30 43
50 31 15 11 45
32 70 25 59 31
47 68 77 56 23
66 78 54 88 50
55 60 58 89 83
84 99 86 97 95
53 46 1 94 87
8 80 38 77 81
17 51 47 19 69
86 50 71 5 93
61 66 36 58 0
90 58 17 29 92
67 1 8 64 99
63 22 57 19 68
78 36 93 53 2
27 48 62 39 14
8 49 22 90 54
26 4 99 27 34
78 25 11 85 28
31 42 36 53 15
64 75 60 45 35
99 84 26 53 90
61 51 98 39 86
47 37 52 80 63
67 49 35 70 11
32 45 94 73 43
91 92 74 94 32
27 56 50 33 54
67 46 35 25 10
93 97 30 90 4
57 15 69 83 39
71 68 74 81 11
44 98 60 17 73
43 40 32 38 39
61 56 97 94 70
23 2 86 91 54
19 98 93 42 88
0 16 30 32 71
89 86 81 76 68
29 2 14 72 63
7 27 67 59 1
24 18 28 98 95
10 62 80 71 36
3 89 20 63 46
47 65 84 22 6
82 19 81 38 45
54 85 67 34 79
25 58 38 73 61
72 98 4 19 40
32 10 29 31 89
15 33 5 7 63
49 48 71 81 88
70 5 39 41 22
19 20 7 75 23
69 46 63 14 54
80 45 94 6 55
88 62 76 78 95
64 65 36 58 22
7 21 98 93 42
79 99 9 89 10
6 5 33 92 72

500
data/day_5.txt Normal file
View File

@@ -0,0 +1,500 @@
348,742 -> 620,742
494,864 -> 494,484
193,136 -> 301,136
342,692 -> 342,538
234,525 -> 102,393
72,964 -> 847,189
639,430 -> 99,970
398,791 -> 398,187
181,144 -> 205,168
607,617 -> 416,617
98,339 -> 98,437
763,119 -> 176,119
450,848 -> 450,664
293,133 -> 293,98
308,98 -> 308,15
157,21 -> 405,269
792,471 -> 409,471
42,955 -> 956,41
895,269 -> 895,884
629,635 -> 392,635
169,23 -> 273,127
250,847 -> 250,665
709,56 -> 709,626
938,599 -> 669,868
913,46 -> 458,501
844,417 -> 844,424
178,651 -> 640,189
226,266 -> 149,266
654,421 -> 654,499
368,780 -> 368,38
183,743 -> 497,429
942,34 -> 387,589
987,461 -> 987,348
485,275 -> 330,275
33,460 -> 456,883
606,304 -> 606,628
755,170 -> 755,187
342,862 -> 250,954
866,125 -> 151,840
795,489 -> 599,685
905,525 -> 905,457
99,620 -> 99,339
899,507 -> 699,707
627,444 -> 923,444
798,80 -> 419,459
580,237 -> 580,907
947,336 -> 947,727
491,466 -> 546,411
335,221 -> 458,221
547,70 -> 407,210
520,80 -> 647,80
835,58 -> 835,300
574,239 -> 589,239
219,670 -> 219,22
512,69 -> 255,69
83,701 -> 239,701
874,109 -> 48,935
980,892 -> 159,71
154,879 -> 53,879
782,37 -> 89,730
481,736 -> 481,614
377,886 -> 569,694
777,403 -> 726,454
728,952 -> 728,972
495,643 -> 879,643
425,564 -> 187,326
443,110 -> 386,167
529,279 -> 529,103
985,983 -> 16,14
145,112 -> 877,844
914,34 -> 121,827
409,229 -> 784,229
719,86 -> 479,86
929,984 -> 218,984
985,928 -> 299,242
168,159 -> 168,743
189,784 -> 189,498
401,58 -> 390,58
47,283 -> 452,688
246,292 -> 246,461
869,901 -> 643,675
879,593 -> 108,593
707,417 -> 336,417
99,401 -> 99,502
583,764 -> 583,668
493,934 -> 493,78
643,570 -> 643,990
278,765 -> 600,443
940,437 -> 940,488
812,896 -> 812,594
727,711 -> 25,711
173,586 -> 667,92
169,879 -> 466,582
361,650 -> 361,276
725,818 -> 725,662
48,119 -> 781,852
921,62 -> 921,647
135,613 -> 135,295
702,969 -> 194,461
306,709 -> 274,709
117,182 -> 117,856
608,635 -> 608,854
448,250 -> 448,641
635,552 -> 341,552
528,432 -> 51,432
711,763 -> 987,487
43,931 -> 917,57
980,841 -> 526,387
279,412 -> 377,412
334,107 -> 509,282
164,15 -> 164,345
708,139 -> 708,846
323,930 -> 323,282
256,902 -> 922,236
586,453 -> 244,111
21,92 -> 840,911
282,888 -> 839,331
278,439 -> 712,873
110,595 -> 696,595
95,531 -> 804,531
800,206 -> 800,881
396,244 -> 396,441
334,60 -> 122,60
640,331 -> 640,467
757,126 -> 731,126
430,245 -> 932,245
160,655 -> 753,62
502,432 -> 751,432
434,378 -> 434,287
907,374 -> 552,729
548,864 -> 632,864
616,961 -> 746,831
116,316 -> 666,866
78,44 -> 950,916
873,570 -> 355,570
202,859 -> 885,176
449,348 -> 904,348
143,179 -> 760,796
478,823 -> 478,55
790,446 -> 790,257
34,888 -> 736,888
630,696 -> 437,889
350,589 -> 118,821
803,373 -> 808,373
490,778 -> 818,450
487,725 -> 487,836
794,502 -> 794,114
136,743 -> 136,634
572,103 -> 194,103
488,614 -> 528,614
18,878 -> 539,357
889,35 -> 889,271
436,419 -> 21,419
422,319 -> 422,821
176,935 -> 923,188
398,398 -> 436,436
327,45 -> 820,538
643,428 -> 890,675
743,714 -> 143,114
203,359 -> 189,359
346,672 -> 346,190
263,804 -> 263,249
93,683 -> 93,453
19,180 -> 238,399
47,941 -> 888,100
525,888 -> 236,599
624,397 -> 126,397
382,119 -> 382,981
972,753 -> 336,117
682,978 -> 48,344
639,477 -> 639,408
545,966 -> 12,966
275,234 -> 401,234
912,20 -> 101,20
54,109 -> 809,864
242,149 -> 242,283
664,353 -> 828,353
117,539 -> 26,630
794,554 -> 624,554
828,536 -> 43,536
746,717 -> 746,420
540,930 -> 224,930
862,229 -> 862,212
492,917 -> 835,574
960,496 -> 960,618
148,530 -> 148,485
415,974 -> 494,974
694,118 -> 654,158
672,210 -> 672,81
548,692 -> 668,812
891,50 -> 10,931
639,652 -> 844,652
579,522 -> 556,545
231,880 -> 170,880
443,12 -> 443,775
562,185 -> 562,984
619,313 -> 74,858
371,502 -> 642,231
969,694 -> 714,949
943,157 -> 179,921
821,305 -> 821,427
782,579 -> 874,671
378,943 -> 378,956
315,636 -> 572,893
544,357 -> 315,357
51,158 -> 16,158
151,428 -> 508,428
818,939 -> 90,939
99,396 -> 451,396
602,834 -> 695,834
974,145 -> 974,919
327,630 -> 254,630
858,166 -> 900,166
537,681 -> 564,681
672,674 -> 672,619
544,408 -> 750,614
84,664 -> 210,664
204,886 -> 469,886
475,940 -> 475,592
868,922 -> 614,922
987,939 -> 367,939
854,498 -> 956,498
863,148 -> 22,989
565,580 -> 948,197
231,952 -> 798,385
935,832 -> 113,10
631,362 -> 631,329
405,143 -> 303,143
807,831 -> 891,831
450,976 -> 450,247
488,676 -> 508,676
170,328 -> 636,794
626,815 -> 626,938
217,558 -> 708,558
598,549 -> 532,549
824,307 -> 304,307
539,932 -> 390,932
542,786 -> 435,893
735,42 -> 389,388
677,448 -> 65,448
929,915 -> 29,15
870,344 -> 870,287
187,138 -> 754,138
729,353 -> 508,132
919,821 -> 317,219
272,459 -> 272,72
599,413 -> 342,413
919,862 -> 199,142
229,476 -> 893,476
438,516 -> 150,228
914,132 -> 173,873
905,815 -> 315,815
766,136 -> 766,207
548,546 -> 451,643
836,231 -> 381,231
484,854 -> 852,854
736,209 -> 307,209
751,156 -> 809,156
659,937 -> 659,333
74,899 -> 485,488
843,329 -> 843,584
793,944 -> 910,827
67,298 -> 610,841
43,15 -> 960,932
633,527 -> 912,806
782,246 -> 716,312
30,46 -> 912,928
473,833 -> 473,189
903,506 -> 61,506
85,404 -> 85,898
944,682 -> 944,465
420,695 -> 391,666
560,110 -> 810,360
246,368 -> 25,368
399,397 -> 781,15
452,618 -> 452,340
467,854 -> 890,854
77,314 -> 77,780
523,501 -> 523,646
67,284 -> 637,284
88,13 -> 988,913
173,20 -> 844,691
667,821 -> 722,821
384,840 -> 792,432
270,36 -> 270,352
311,16 -> 311,334
736,900 -> 736,264
613,827 -> 748,962
41,81 -> 885,925
408,884 -> 756,884
380,612 -> 402,634
82,645 -> 82,708
934,331 -> 316,331
634,116 -> 634,891
942,56 -> 942,642
441,260 -> 955,774
925,980 -> 314,369
317,893 -> 577,893
362,137 -> 433,137
434,928 -> 434,623
819,18 -> 819,488
185,348 -> 615,778
895,357 -> 492,357
742,645 -> 742,151
522,855 -> 366,699
867,390 -> 57,390
95,566 -> 389,272
887,793 -> 887,871
351,251 -> 351,30
309,448 -> 865,448
190,690 -> 70,570
383,805 -> 383,607
140,157 -> 140,164
685,222 -> 705,222
192,949 -> 192,358
856,768 -> 856,967
337,344 -> 771,344
919,86 -> 53,952
137,723 -> 887,723
33,108 -> 873,948
195,690 -> 195,184
136,505 -> 136,520
509,69 -> 509,800
255,742 -> 255,740
650,105 -> 650,483
985,451 -> 268,451
68,346 -> 171,346
472,28 -> 574,28
660,308 -> 660,382
341,553 -> 341,419
430,304 -> 807,304
333,258 -> 795,258
853,637 -> 252,36
881,893 -> 237,249
552,160 -> 826,160
728,446 -> 728,905
529,326 -> 529,860
564,759 -> 564,737
533,688 -> 78,233
445,314 -> 329,198
935,597 -> 652,597
955,958 -> 174,177
178,522 -> 178,457
124,351 -> 74,351
265,840 -> 451,654
771,914 -> 771,332
72,14 -> 72,574
970,828 -> 197,55
631,744 -> 631,746
765,759 -> 119,113
260,882 -> 262,882
676,760 -> 61,145
680,168 -> 959,168
466,811 -> 466,745
566,242 -> 566,471
768,975 -> 768,75
391,550 -> 391,591
781,678 -> 771,678
731,620 -> 951,620
973,290 -> 973,664
838,691 -> 835,691
294,240 -> 378,240
390,708 -> 908,190
521,933 -> 963,933
358,46 -> 919,46
431,410 -> 431,297
833,706 -> 330,706
13,910 -> 876,910
619,567 -> 619,398
165,779 -> 165,941
21,139 -> 21,535
921,420 -> 358,420
629,111 -> 608,111
654,244 -> 654,500
982,386 -> 982,841
252,127 -> 144,235
144,518 -> 144,344
581,589 -> 130,138
927,835 -> 882,790
859,658 -> 320,119
110,326 -> 110,168
149,64 -> 917,832
651,771 -> 897,771
788,66 -> 231,623
710,608 -> 370,268
927,175 -> 778,26
957,970 -> 53,66
350,313 -> 350,192
115,505 -> 129,505
414,163 -> 182,163
874,334 -> 532,676
441,790 -> 441,976
66,162 -> 226,162
839,453 -> 310,982
63,974 -> 132,974
51,383 -> 297,137
343,954 -> 262,873
726,474 -> 637,563
449,205 -> 449,279
855,845 -> 722,845
28,750 -> 33,750
272,175 -> 212,235
428,172 -> 710,172
824,834 -> 824,557
25,864 -> 855,34
66,425 -> 84,425
456,812 -> 456,785
286,294 -> 73,294
400,329 -> 525,204
888,160 -> 888,124
879,742 -> 761,742
893,751 -> 858,786
621,765 -> 10,154
162,280 -> 162,889
96,830 -> 646,280
646,720 -> 250,324
367,586 -> 695,258
298,353 -> 566,621
813,256 -> 813,367
559,672 -> 471,672
951,187 -> 234,904
868,753 -> 80,753
91,937 -> 803,225
112,142 -> 18,236
936,281 -> 936,976
95,867 -> 753,209
421,735 -> 833,735
830,755 -> 963,755
355,272 -> 355,70
309,479 -> 309,45
951,145 -> 676,145
513,143 -> 713,143
491,565 -> 988,68
797,742 -> 596,541
581,621 -> 277,317
132,480 -> 101,480
140,72 -> 375,72
524,221 -> 897,594
694,549 -> 179,34
689,729 -> 689,527
27,953 -> 27,32
913,774 -> 913,705
669,861 -> 669,360
454,250 -> 454,344
863,95 -> 13,945
341,50 -> 341,795
863,50 -> 212,50
73,689 -> 143,689
944,20 -> 31,933
22,988 -> 873,137
798,552 -> 798,774
935,583 -> 935,393
462,176 -> 986,176
739,400 -> 972,400
441,31 -> 441,37
628,381 -> 628,339
545,345 -> 615,345
91,736 -> 373,736
825,738 -> 825,687
541,877 -> 541,569
750,739 -> 390,739
873,384 -> 873,665
597,61 -> 385,61
518,62 -> 229,62
623,192 -> 502,192
163,861 -> 732,292
748,304 -> 873,429
375,436 -> 375,655
146,228 -> 146,91
808,844 -> 243,844
174,115 -> 982,923
598,384 -> 598,956
932,736 -> 843,736
772,110 -> 883,110
298,960 -> 852,406
744,772 -> 693,823
605,639 -> 731,639
126,770 -> 732,164
13,986 -> 988,11
756,37 -> 756,164
132,900 -> 984,48
806,524 -> 331,524
84,645 -> 84,195
329,447 -> 939,447
684,566 -> 793,566
747,595 -> 747,181
293,121 -> 430,121
42,918 -> 826,918
32,312 -> 833,312
42,309 -> 42,752
332,74 -> 736,74
699,209 -> 495,209
297,113 -> 297,827
515,973 -> 515,35
774,951 -> 774,290
471,921 -> 919,921
297,282 -> 297,524
477,825 -> 477,343
220,665 -> 351,796
483,128 -> 376,128

1
data/day_6.txt Normal file
View File

@@ -0,0 +1 @@
1,4,2,4,5,3,5,2,2,5,2,1,2,4,5,2,3,5,4,3,3,1,2,3,2,1,4,4,2,1,1,4,1,4,4,4,1,4,2,4,3,3,3,3,1,1,5,4,2,5,2,4,2,2,3,1,2,5,2,4,1,5,3,5,1,4,5,3,1,4,5,2,4,5,3,1,2,5,1,2,2,1,5,5,1,1,1,4,2,5,4,3,3,1,3,4,1,1,2,2,2,5,4,4,3,2,1,1,1,1,2,5,1,3,2,1,4,4,2,1,4,5,2,5,5,3,3,1,3,2,2,3,4,1,3,1,5,4,2,5,2,4,1,5,1,4,5,1,2,4,4,1,4,1,4,4,2,2,5,4,1,3,1,3,3,1,5,1,5,5,5,1,3,1,2,1,4,5,4,4,1,3,3,1,4,1,2,1,3,2,1,5,5,3,3,1,3,5,1,5,3,5,3,1,1,1,1,4,4,3,5,5,1,1,2,2,5,5,3,2,5,2,3,4,4,1,1,2,2,4,3,5,5,1,1,5,4,3,1,3,1,2,4,4,4,4,1,4,3,4,1,3,5,5,5,1,3,5,4,3,1,3,5,4,4,3,4,2,1,1,3,1,1,2,4,1,4,1,1,1,5,5,1,3,4,1,1,5,4,4,2,2,1,3,4,4,2,2,2,3

1
data/day_7.txt Normal file
View File

@@ -0,0 +1 @@
1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,76,39,523,252,920,699,184,945,605,1243,71,604,51,245,1743,833,45,337,1928,224,547,283,413,1264,199,3,75,153,1418,1091,886,1578,1718,228,1679,775,585,98,682,108,1420,223,341,1030,58,8,505,348,7,162,492,125,271,500,495,172,639,313,1073,60,117,210,345,60,357,1061,114,11,768,19,1009,16,49,242,82,461,659,464,672,669,1010,625,148,779,79,447,159,227,419,1105,481,684,742,211,1633,72,554,1237,148,1039,840,302,291,51,693,83,62,337,27,696,65,1146,912,6,75,233,748,844,102,1300,621,1148,77,384,194,863,1305,1501,1193,811,1496,245,109,78,372,719,535,38,444,1245,85,545,1155,147,265,31,699,175,93,1165,645,4,1241,630,483,584,1749,927,1012,571,179,112,425,13,359,269,34,753,1278,414,637,55,155,96,134,232,545,90,169,7,485,25,353,78,19,52,1671,211,53,138,278,87,297,392,743,81,162,612,663,286,231,144,102,1396,574,507,1077,262,12,1047,181,1503,91,660,827,294,173,324,971,862,86,1428,684,440,163,715,1535,231,597,958,1023,1088,1646,617,1696,219,802,149,614,1412,137,35,368,78,259,280,920,52,452,741,109,553,360,151,991,1317,1064,72,252,429,581,286,450,72,50,18,720,598,422,645,349,655,533,1790,644,197,1506,401,332,733,780,276,131,131,606,948,80,1205,85,847,79,194,517,394,3,1234,643,752,121,354,499,20,99,195,194,1401,1050,40,183,1625,3,646,221,598,27,1041,693,527,82,767,495,1338,70,580,178,1473,375,960,66,279,213,836,572,1262,1118,969,275,249,657,1659,590,60,528,177,1463,347,281,481,107,278,412,47,1893,683,717,33,1652,284,317,873,727,119,143,343,88,133,521,1023,52,236,121,7,193,1,66,121,294,156,131,169,52,300,64,640,120,958,130,947,1549,43,580,498,290,492,1047,1264,46,431,1649,607,198,663,129,339,1623,157,62,363,71,898,449,437,803,798,531,80,14,180,1043,828,404,226,186,203,1087,597,1365,457,1371,320,198,66,1046,46,428,1390,78,798,457,443,659,130,212,99,194,30,1518,226,109,350,480,773,117,162,1052,740,320,1090,340,616,1125,78,1006,597,1144,76,583,41,13,674,296,100,736,943,909,948,869,1283,665,68,1107,1127,312,35,940,1250,1240,148,212,188,24,907,313,185,17,412,897,89,379,100,44,601,22,169,784,1232,1262,210,147,185,704,294,157,417,1414,496,525,322,416,438,587,1425,268,939,14,274,598,591,55,31,87,63,14,392,8,423,281,737,634,195,202,275,38,1,278,852,53,1120,585,4,754,619,288,7,10,300,214,263,936,454,185,17,73,283,316,520,407,125,990,411,455,50,725,1431,455,33,261,245,383,127,2,303,98,1574,82,24,550,424,591,263,684,1339,466,519,1098,1100,455,216,1544,665,706,1343,95,131,432,899,993,346,11,185,183,499,704,1579,110,233,41,21,220,693,938,963,4,590,126,199,15,36,1056,1250,1095,49,306,1350,1215,599,162,11,746,5,638,907,166,1486,339,397,1374,903,321,506,196,732,3,76,1269,1238,629,1496,974,1424,30,685,375,260,272,1230,82,30,854,428,24,11,961,245,873,6,1430,119,228,188,131,1395,278,34,88,268,1072,94,380,1203,4,89,55,849,630,269,1079,608,568,1265,328,1008,130,28,670,737,128,806,119,51,47,59,108,1158,102,375,26,122,387,517,231,320,25,591,140,143,474,21,1051,412,84,1501,5,211,24,366,454,2,196,127,1098,592,103,1331,1004,924,605,308,103,1408,223,205,270,53,90,1309,119,979,929,1277,575,394,146,194,3,1855,46,1327,492,1224,884,367,218,1068,89,493,210,1128,220,385,804,668,496,1202,308,262,671,166,13,512,111,840,508,1357,149,792,748,439,1001,1705,58,232,104,68,115,585,678,69,795,104,505,577,564,213,256,64,608,1134,359,17,68,123,776,680,553,198,652,1058,1575,500,797,550,325,32,529,299,207,159,490,600,798,25,473,127,683,813,1347,162,90,231,220,933,2,1023,250,419,39,1049,1315,1179,1264,339,285,84,234,209,781,1293,49,177,118,618,662,126,922,219,222,909,460,811,25,75,223,7,227,613,918,121,238,1016,110,220,1101,360,321,1670,638,170,687,1567,289,433,842,685,1252,470,113,83,163,63,3,710,13,1164,917,16,191,1169,392,213,426,151,1182,107,167,1071,538,1242,1247,116,117,1638,675,498,570

200
data/day_8.txt Normal file
View File

@@ -0,0 +1,200 @@
dbcfeag cgaed fe bfgad aefcdb efa efgda gcef dcaebg dfeagc | fae cfge fae baefdc
ea bfecadg bgafcd deac ebcag eab debfag eabgdc bcgfe bagdc | cdbagf fagbcd bae fcegb
fbgdec cbgeaf cbfag bd bgda cgbfda dbf fecda bfadc cbedagf | gecfdb cbfga bacgef dfb
geabdf cfbge dcbeaf aebdf dgea acdgfbe fag gfbea ag cabdfg | dfeabc dbaefc fdaebc fga
gcae cefdg abdcgfe cg fcg afcegd dbgfea agdfe dcafbg bcdef | gc caefdg gcf egdcf
efgcb fbac dbefg bce efacg fbgcdae cb egfbca dgfaec dcgbea | fgecb bcfa bc efcag
efcgdb da bdefg dfegba fbacg gbcdea dbafceg adb feda fadgb | da ad cgabde cebdga
ca fcabegd facd agbed acg cfadeg acdeg agcefb cdfgeb efcdg | cdeafg cag efgadc gacbfe
fdacgb cfa cfage gabce dfagce edagfb dcbfeag fc fced gfdae | gabdef fdegba gaedcf fac
acgdbf faedcbg fa cbgdae fgbdae aedbg adf fbea cfdge fedga | fad egdcf feab bfcagd
ged cadgf gcdafeb cabgfd cgedf aedc ebfcg faebgd ed fcadeg | dfgca gabefd dafgc ecfgd
bcedga dceba gcadfbe dfec adcbfe fda fabge df fbdae bcfgda | adgcfbe fbgae dgebafc gacedb
fgcabde edbcfg efcdga dfbcea dbaeg fea fa dbaef acfb dbfec | aecbfd aedcfb bdaef abfc
cfbd gefad dce fdeac dc ecabfd dgabce gabdecf afbce fagceb | bdfc bcgaed bgdace afegd
acfgde egdfb dcaf gecfd ecdbgfa gcdbae cefgba dcg gcefa cd | eadcbg cdfega fdgeac dgc
cadfgb edcgbfa dc cgd fegcb dfabg cdaebg dafc fcbdg gbdeaf | afdc adcf befdag gfcdb
deafg ebafdcg gcdfba bge eb fgcbd gbefac bdce fdebg gdcfeb | cbdagf bdce gdfeb fgead
acbdef bg agebdf afbcg fgbeca edafcgb eacfb gba ebgc fgcad | begdaf gcbe ebdfag dabefg
ga agc bdegcaf gefbc cfdea dafgec fagce dgebca aefbdc gdfa | acfedbg bfaecdg gca facedg
abdg ad egcabf ebagf afd gdfceab dcebf dagbef cdgafe deabf | bfedc cbedf gdab afd
efbadc cafbd eba fegda fcbe dbefa efcbdag adbcge badfcg be | be agdfe cedbag dcbeaf
adegb cgafb badgcfe fged fgaebd eabgf bceafd eaf eacbdg fe | bdgeac adgbfe bdgae acfgbed
dbfega befag gbfdec gacfed fcgdabe bgf deagf bf dafb bceag | bdfa cagbe gceba agbdfe
fecagd cbfeagd fdecb fg fgbde ebgda cagdbe fge gfab agefdb | geabcd gdbea ebgafd egdab
ab agdcfe dcfgb cba adefcb adfbc bdae ebacgf aegbdcf fcade | gfecda dfabc edab bfcad
bcfae ebd gefdacb fdceg dbaegc gdbf gcefbd cedfb adfgce bd | gebdcf bd dgfb ebdcgf
gbcafde cdaef dfe ecbf egcda fadgcb bfdac dacfbe bgefda ef | dcgafb dfaebg fbec agbdfc
fe cfedab dcfgeb gdbef gadeb cegf fgcbd fbe abdcgf ebacgfd | debfg abecfd adbefc gdcbfe
ad cbfeda acegfb gdcaeb adcgfbe bda abefc dcabf fgcdb afde | gdcbf cedbaf dbagec becfa
acegb efcgab edcfgab aebdc gce ge fage egcdfb agfbc cbdfga | eg cafegb fcbeag acbgef
bcaf agefdc bcegaf eaf bdgfe agfdecb efgab af abegc dgacbe | defbg dgaebc eaf cebga
edabcf bdeg gd cadebg dgcab gfcaed febdgca cdg beacd cagbf | befadcg fbgca afdecg bgceda
gadfeb ag gfda cbeda fbeacg bgdcaef dgfeb eag gbdea fegcbd | cabefg degbcf gdbef bcdgef
efbcda cgfd dgefac dfcgbae degaf adg debacg aedcf gd aebgf | ecfad cgbade aegdcb gfbae
bdc cdfgb cabgf gabd fdebagc eabgcf bd abdcef gfcabd fgedc | faecdb fgecd cbfdag bcfadg
dfagbec ceg egfad fdeabg acedg afedcg gc bcgaef eacdb fdcg | gcfd eadbc dbegcfa eabcd
gfb egfba eadcfb gf adfg dgebfa dacfegb eagcb cbedgf fadeb | edfba afgebd adbegf efcbda
fec caegd efgb cgaedfb gfbdec gfdbc ef cfdgab fdcge fbaedc | abcdef gcfbd bfegdac gcead
gefdba abcef ead gedcab ad bfdecg cbged ebcad cafbdeg cadg | defcgb ade bgecd ceabf
cabg adgefbc cb ebafg febgc fbc gdcfe cafedb egfabc aebdgf | bcdafeg ecbafd adbecf fbcge
acged febgd agdcfb bdceg gdbecf bc bgc cfeb cfgbaed bgefad | dceag efbc cbfdeg ebcdfg
gab adgcbef cebfg abdce dcbefg bafdgc abefgc aegf ag cgbea | gaceb aegf fgcbe cgebf
fa baf cadfbge dbgef ebacgd dfceba adbec fdeba cfae dacgfb | dabcef dafcbe acgdbe ecdfab
fgeca gecadfb aecdfb fb gcbed dfgb cgdbea ecfgb gfbdec efb | abcedg bf bf agedcfb
fg aefgd bafcde gcfe bdgae gfa fedca cagdfb cfaedg ebgacfd | dcfgab dgfea gf cafdgb
afbcge debgc cafdbg ae eadf afdgb gbdeaf aeb cgfebad abgde | deaf cbafge cbegd aedbg
fbc afcegb fadgc fbeda cbed ecdafb cfdab cb fegdcab bdaefg | cgfad ecbd edafb cgafd
fegbcd abcf gfabedc bgcad gfacd gedab efdagc dfgcab cdb bc | fbca cdbag cdfgab cgedbfa
gfca gbdef eadcfg ebdcag dcg afecd gc decafbg fcegd bcfade | gcefd bcdafge cdefg edfgc
gdae ad gecfd dcfaeb dfegcb gdcaf fdacge adf agbcf cebfgad | dgebafc edfgc da cbgafed
ceg febgdca bfgdea gc adcfge cefbag agdc edfcb dfgce gadef | ceg ebdagf agdfe afbgce
dabegcf bcdfag gdecb gdbeca gaebd fbdce bdagef cg bgc ecag | dfcabg abfdge gadbe cg
dacefb efc gfaebc gbfe egcda agfbdc beadfcg fe fbcga cgafe | ef fbaedc ef efc
cbgae faedbg fegab agc ebdgc eacf bgeafc ca cgdbafe gadcbf | eagfb aebgf gcbfad gfeba
dcf dacbg bdcaef dfeacg gacfe cdfag fgde faecgb daebcgf df | fcd fecadb egacf deabcf
egdfa dfaec gdab ga agf dbefga dgebf afbgecd bgafec bgefcd | fegbd gdfbe begdfc efcbadg
cfd edafbc afbd cadbeg fgecbad gcaef dacef df dbcae efcdgb | adbf cabde baegdc cgbeda
cbag gc cdgbe defbg agebdfc becda dbgcae cdg efacbd fecgad | fcegabd abgc dacbe cdaebg
bf dacgf dfb befc fbedcg gebdc dbacefg abdegf gcdfb bedacg | bfec feagcbd egdcb daegbf
aebgfdc gadcf gcdfeb dagce agdeb acfe bgacdf dec gfecad ec | ceadg edcag fdcga cdbagef
befdgca dgcbf fedagc be bfe dcefb ecfdba acfed ebca ebgfda | dfbcae bafgdce bgcdf egbdfa
bfa bdagfc dbega bfgea eagfdb dbgace bcefg dcbgeaf fa defa | ebcgdaf aecgdbf fgcadb fa
agcdeb cgf agbdcef bgdfe efac cgefb abefgc cagdbf fc gebca | fegbc acfe becga deagbc
adbfce agebd eadcbfg ega abedf fgab dgebc dgfcea ag agdebf | gdfcabe ebadf ga bfag
gcebfd feacdbg acegfb afgce gbac geb cdaefg daefb gb fgbae | agefb gb adfbe efabd
gadbfc ebgad dgecba fgae eacgdbf af ebcfd afd bdeaf gadefb | fa bdgaef gdbacf af
bfeacd edgcabf dg gcabd cdaeb acfgb bcgdae dgae cgd bgfdec | bedac acbed abcdfge dgc
cdage dgabec cbadg ge acfde edg becfagd gbec adbcgf fbeadg | cdbgea cgdaeb cegad gdeac
ab gbaf cdegba fceadbg gfbecd bca eadcf fgeabc becfa cebfg | cagfeb cefabg fcbeg eadcgb
afdec bcaefg ca abcd efcdg aec aebdf cdafbe begdaf eadgbfc | cdfeg afdce edfac gdfabe
faebd fed df bgdcaef cbdega gdbeaf fbecgd badge afebc fadg | dcebfg dgaf fd cdegfba
abdgf efg fe gdeabf cdbge cfadeg gdbef cafgdeb fbea bgcadf | bgdfe fabe gbfadc gbfcda
agdfe cfbd dgfca cd abgfc cdgbea gbecfa gbadcef cda dfgbac | cegfba fbcd bfdc dca
acdb bdcega dbfcge aedfgb dec fcega dc adegc fgceabd gaedb | badeg bdecgf cd cdageb
abe ab dbecfag adgec agbf eadbg cbeafd fbcegd gadbfe bfgde | ebgfd efdgb gceadbf ba
dgfceba egbcaf fgc bfgdca cbgfe cg faebc agce gdfeb debcaf | bedfac edbfg aegc eabcdgf
bdfac dcfeb dbcefa dbgcaef fbae egdcb fgaecd fec cdbafg ef | bdfagc dcfabg gdbfeca eabf
gfca dbcaf bfcgd fcgdeab degcb abcedf cbagfd gfb fg fdgabe | gcaf bfg fbg gf
efcagd dbag fgd defgacb aebfg dbgfe bdeafg edfbc gd fgecab | fbeag ecgfabd degacf debgfac
efcbg bacfe gbdce fge acegbdf cgdf aebdfg dgbcae ebcdgf gf | caefb cbfdage ecfgb bgedc
fgdeb dcbfg fgae fbeagd edbfa aegdbc egb gafecdb bfdeca eg | dgbcea bdaef gfbde dfgbea
bdcaf gdafc cbf bdefa cb fgceda bdfagc fcbgde afcgedb cbga | gbca fbdca cegfdb fcagd
cfebgd cedgfa dcfabge dbfgc dgeb ge fcegb gfe abfdcg fecab | fge fabec gfbadec bfceg
aeb ab gebfd abcdef edcag cdegaf gaedbc bgfecda debag gbac | beacgd bdfeg afgecd gedbf
ab gebfadc acfge edafbc abegc dcegab gbecfd gbda cab ebcdg | dagb cegfa bca bac
gaedb ebcd fgcea cba dcgafb febadg egcab adcbge efgadcb cb | dfcagb cbed bagce dbce
ca dgfceb bfeacd fcbgd bdgca cfag gaedb abc fcbagd fgecadb | cgdfab cfag bac cbfegad
gade gafcb bfgecd bge ecbda gdcbea eg beacg fdaecb agfbecd | dgae bgfca abegc cfdebg
eac cdbef ac gfdae dagc afcedgb dcfae dafcge dbfega caebfg | gafceb dbeacgf cdga fbcde
dbagfc bgedca df afgec daf beagdfc aefcbd bedac acfed dbfe | bedca cdaef baecfd befcad
fdacb baedc acedfb bacedg fd gfcab ecdf daf fedgba befgdac | egabcd cedab eabdfg adf
efdgc dfecga adfbe ac cage adc gfbdec cagbfd efdabgc caefd | efdab efdgcab ca cedfg
ca acgf cadbgfe egfcab gefab cea defbc fecab edbcga fbgdae | cfeba efdcbag dacebg agefcdb
bcedfa agecd ebgf fcbdg fde cgfed acgbfd cagfdeb ef cgbdef | fgeb bcfdg def ef
bfcdea ga fbdegac gecdf cfdab bcgadf facdg aegbcd gac afgb | cbadfg facdb afbg dfecba
fdcae afeg fa bceda dfebcga afcgdb dgecf acf fgceda cbfdeg | fa bdfcga fcbegd efacd
efgbcd cf bdgace fgbad dfc fceabd dbaegfc bdcgf becdg gfce | bcedaf adbegc badgec bgcfd
efcba ebdfga fda gdefbc da facde dacg fgedc gfeabcd acdefg | da bgafde cegfd edafgb
daegb cbge bgcaed afgced ge cdabe fdbcaeg fcbeda bgfda eag | gae egcb egbc egdafcb
cefda fadg bfedac bedfacg dgecfa eag ga fegcb becagd gcefa | dcfea eag cedfa bgfcaed
dcfe gbeafd df bdcaf ebfcag fcedagb cdbag dcfaeb eabcf fbd | dfce geacbf cefd ebdacf
efgbc agbd gd eadgcf becdfa bdace dge debgc adecgb bfdgcae | bgcfe bedcg abgd gdba
cdbf edbfgc feadg cd ced gaecdb degfc efcgb fcbgaed befcga | cfabgde fgdcbe efacgb abgcef
ae caegfd eadgc fedgba fecgd gbacd efac aed afcbged cgdbef | ae eacf abdegcf eda
fc afcge dbgecf adcgfe eafbg gdebacf eagcd gfc aecdgb afcd | cfg dgeac afbge edgcba
aedcg gfd cafgebd fg eadbgc adfcb cefg gabefd dacfg efcgda | dgeca afgedb cfdga aefgcd
bfgaed facedb fbec dbgca cagfbde egcfda efdac acbfd fbd fb | efbc agcdb fagdbe bacdf
fac dcae fgbda fagbce bdfac cbdfe ca cadbfe aegcdfb cebdfg | cdea cfbdeg ac afdcb
geabcfd gfcaeb gcbead eba facbg fdgcab ea bgafe fdgbe caef | bagef cafgb afbeg cbgaf
gcfdeb ceg fabcge edbag fcabdg bcgaf ceaf ec agefbdc cbega | bgafc baecgdf bcfged gbdfeac
cf adgef cfgbaed bfdc gfc egcdfb dcgaeb degbc fcedg ecagfb | fdbc cgdbe gdabce gfdce
bc afgcb cfdga dfcb cbdgea bgc efcgdab cfedga beafg bagcfd | bc bc cbfadg adcbge
egdfb fa agfbe eacf befagc fba fbedacg cadebg agcbe cfgbda | bagfec bcdgaf cbfgad dgcbfa
acgbde acgdbef cba ca bcgfd cade egdafb aebgfc agbed adgcb | fdgbc gbadef gfcdbae edfgab
egbac efacgd gfbd fbcdag fecbad dgc badcf gfcebda dbcag dg | bacdg facbegd cgd dfcgae
adgcf fbgcda efcgda dcbea fedg cfebag fae ef acdef gecbfda | fcagd gcadf gcefdba gefabc
fegdba ba cedgaf gbade bfad egfda gba cadbgef gbced fcaegb | gedaf bdega abgde bafd
gbacef gdab defgc bagfdc dfb afgcb efdbac bd dfbcg befcgad | cdgef bd gbfac ecbgfad
fgacd ef dagfce ecdfa fae adfbgc cegf febdga ceabd bgacedf | abcgfed gfce fae efacgdb
fbgdc afedg gcbafd gfedbc cfdag acd fbdeacg acbfde cgab ac | gdcbf cedfbg dacgf dcafg
becf feadb abfedc dfcageb gcbda bafedg aec daecfg acdbe ec | abdef fdeacg ace ecbf
dc cbfegda bfeadg dbcg gabfd adc dbcfga bface fgcade fdabc | dacbgf dc cdfba dc
bc bfgedc fbc adfbceg cegb degcf eabdf defcb cdfgae fcagbd | bcefd gceb fcagde cbfgad
ge cabgd egca egd adgbecf bfdagc decbag agbde deafb ebdgfc | cagdfb bgecda cgedba fabdcg
cg cfagbd gcedfa efdbc gcd gbefda fegad efdcg caegdbf agce | fgced dgfacb befdagc cefgda
bfedgc bec ce fcaebd efabg gdec cgfdb aebdfcg bfgcda cgbfe | agebf bgdcfe ec agcbdf
db dfcbge edgfca gabd dcb agfcd bafcd afbgcd ebafc edgfbca | acfdg cbdfa afceb gbda
cadegbf egdfbc adc acbdg dgbcf adgfbc da cgfdae fbda ebcga | dgacb bagdc fgcbd aegbc
geacf abc gfedba cbadfg dbcg gfdba cagfb cb bfdcae adfecbg | cb eadfgb bcfag dgcb
abdfcge adbeg badcef egcf fg fgb fbdec gebfd abgfcd gfebdc | cbeadgf cfdbag gfdbe gf
facdbe acgfbd dbc bd abgcd adceg bcegfa fdgb bfgca badcfeg | ceafdb bfcag dcgba bgdf
gcda cadbe abcedf cabeg edbgcf begcda begaf cg acbdefg gbc | dbace gdbeac dacfgbe abdce
cgf gf fadegbc afgcde abgced fecba ceagf dcagbf fgde cdaeg | gdebacf gf gdfe cfega
abdef bc gecaf dbcgfae cbfg efcba bac acebfg degcba dcegfa | bcfadeg afceb edfgac gcabed
bfcged bgdac becad fagc aegbdfc gacfdb dbgfc dafgbe ga bga | fgdecab abdcg cefabdg egdbfa
abcfg baecf agec fcgaeb agedbf ag dacfbeg bag eafcdb fcgdb | bcdfea efdabg ga fdbgc
ba baf dfbgce cgab cefgdab efcad efacbg cgfeb ebafgd cafeb | fdcegb abf baf ecabf
cegafd egdcba gbedf cgfde cfad ecf fcegadb eagdc bgaefc cf | bfged defgb gbfed efc
gedfa abdce fadbe ebfc fba badgce bf gabefcd fdbgac befcad | bcdgaf fdbgca bfa fgbdca
bacef cg dgabec agfc edfgb cge agfdbec fcabeg cgebf abfdce | decfbga cagf adcgbe dgefb
eafgd ce fbgaced ecfga eafdgc gdce cea cefdba cbfag bdgafe | eadfbg dgec efgca degfa
decgabf fecd acd acbegf agdec gabed gacbfd faceg cd fgeadc | dc dcafge abecgf dc
egd fdaebg gcbeadf fcdge ge adecf gbce dgfbac dcfgeb gdbcf | fdcae gfdbea bdfcg eg
ad cbafe dabe dfa gbfcea ceafd dcbagf fabdce bfceadg dfgec | cebaf aecbgdf cgdbfa fbaec
fc cdgbae gfcbad badcg fcdba feadb fac cgefad fdgbeac gfbc | cf cfabd caf gdfcea
fdgace edac cdfag de dcfge facebgd cgebf dfebag def bafgdc | fdgac gacfbed edgacf dgcfa
gedfac acedb fbcadge acgefb dbgf fdaeb dgafe fgaedb bf fba | fb bf bf agefcd
gefbdca fagbed cgaeb gf ebdfa gdbf afebg feg feadcb geacfd | egf fedab gaefb eagbf
efadgbc bfag edgcb cga cefab afbegc ga gaebc eafcdb daefgc | ga acg gcfbade dgecb
efcgbd gebcf gcadbf agfce fcdeagb gfa ageb aefdc ga gacbef | gcebaf geba acfde fga
ga adbg fdeac gfa fdgbcae dgfabc cfgdb fegbdc fcabge agcdf | adbcfg efadc agcdf cgdbf
febdc dacfeb gbfce cfgae bge bgdf dgcfbea baecdg gb ecfgbd | gb fcedb becdf gb
bgacfd cdfabeg adgce bcegd acdefg gb cgb bgae ecbadg bdfec | adcbfg gdfcea deafbcg ceadfg
bc gdfeac fbaec egfcba dacbeg cab gacbfde eabfd faceg fgcb | afbegc cdgabe bagecf ebcdga
fd dfe fdgae abegfd dbcaeg dfgb caedbf efcag dageb dbfeagc | dgfb gaedbf gfbd dgfcabe
agefbc aefdb abdge cdef bfdcga dacbf fe gbdcefa eabcdf efb | cdbefa adfcbg fecagdb ebf
gbade adecfg abegcdf dcbfa cgbafd cfeb dfaebc fe feabd efa | dbcfea bcfe fecb bafde
dfba dfc efbac cgead ecfgab gdfecb edacbf df afced bgecfad | afdce bcfegd efgbac adgce
abfcg egacf bceafg dabgc fgb fb fbecadg fbce gafcde gfdbea | abdgc defagb cbef egcaf
caegb decgbfa cebf edacg cgfbae gbc gfbea baedgf bc bfcdag | agebc bgcae cbg gefba
ad gadf feacg aed agbfce egcda fedcba abcdgef bcdge gecafd | gedfca ad febgac dcaebf
cegbd bgcfda dbfeag acef gcead cagfde dcfga gae fagbced ae | defgab dacgf cebdg gecdfa
fag edfcg cdfa fa ceagfd fdgabe gebac egbfcd egdcfab gcaef | acebg fag fgdec dfegcb
abe bcdfa acdbgf befd eadbc acbfgde eb fgcaeb gacde fcdbea | eadbc afdgbc bgaefc cabfdeg
afdgce dgabe dgfbe bdegfc dfg agcbdfe fd abegfc dcfb bfgce | debag bedgf ebdcfg cgebafd
dgfcea eagcbd gfceb adgb cgdeb dg eacdbf bedcafg dge abedc | ecbgf dg dbfcgea ebcad
dgecf badfce egcdfab efabd edfca ac badc gbcfae eagdfb caf | feadc febad dacef caf
gfb bacgde acbdgf afbd bdgca bf bgfdcea ecfag dgfecb fbcag | fbgdcae gdfbca fbg fgaec
bcdg dc gedabc dec cdeag cbedaf gfaebc dafge bcegdaf agceb | dfage bcefad cfbage fdgae
gc cag agbec dacbe dcbg edcbgaf gdcfae dacebg eabfg febacd | gc cbdg gc fedcba
gfdbace edbc ecfgab efcdbg ce fdcabg fedga egc cbdgf gedfc | ecdb edgfbc eagcfb cdafbg
afceg bgdeaf daceg degacb fe dfec adfgec acdgefb gcbfa gfe | efg gcfea dcfe fcgea
bdca gcfdbea dc acbedf gbfde cagefd cfebag dcf bdcfe ebafc | eafbc bcfage defcb agcbfe
cabefg adgeb fd dacf afgcb bgefdca decbfg fbd dafgb dfagbc | gbfca cbeagf cfbgad fbd
bacgef defcga afdgebc facebd afebc badc bdfeg dc dbfec dce | adbc eafdcb dabc fgedb
cdf decb fagec dc dcgbaf bacfgde gdfeb efbadg efgbdc cfged | ecgfa efgbd fedgab dc
faebgd egdfcb gecadb gdbce ag aeg cgeab gacd faecb debcafg | ag fdeabg decbg ag
eagc bdegf ga gdaef adg cbgdaf cfaegd dabfce adcegbf dfeac | acedfg agd cega bgefd
cfgbe ceadf ab cbefag cegfbd bega egdfcab fba gbfacd efcba | ceafbg abf ecfba ba
fgdce ecgbaf gebd bfg fdbac dfacge fbegdc cgbdf dacbfeg gb | aebcgfd cdabf ebdg egdcaf
febda edagf egf gdcf bcgafed fg agcbfe caged gcadeb dgaefc | cegbad gcdf gaedc ebdgca
eabgf fbdcg dfecag acebgf bafdge fbgce ecf eacb begfacd ec | fbgea gcefb fegcad decfag
fabgcd febdac acgdf beagc dgaec de eafcdg dcfbeag dae fdge | fcdgea ceadg fegd bdcaef
bcafeg ecbad dcfe ecbgafd gdefab dfabce de cadgb ebd fcaeb | bed bgeafd fgeacb ecdfba
afcgeb gcebf cdbfag cfea bdgfe cbgaf ec gfabecd bedgca egc | gce dacfbg cebfg afec
ecdafb cfeag bdgaf febga egabfc eb gbec fcebdga eab dfegac | bea gbafd eab befdac
fgbacd fbcedga fgc fg gdaf bcdgef cdfba fabced cgbfa gcabe | egcadfb adgf gbcefd gcf
dfbcga caefbd ac gaedbfc afgc afgdb bdgce dgcab fdgaeb dca | afbgd cagf adc bfedga
bdgce dbf cgeadfb fd gfbde dfbecg gaebf dacgfb cdebga dcef | fegbd fgbde bgfde fcegbd
gbda egadbf bfegd acgfde bfgaec gabef cfbde aefdbcg dg ged | abgefd gdefba deg gfeba
afebcd degcfb dce dcfgb degf bdcgafe bdcge gcabdf de cbaeg | de bagec gcdeb ebagc
eadcfg dfc gcbfade cd edafb fbcge afdbec agdbef ecfbd bdac | efdab agefdc befad defabc
agbedf degbfc begcd ceagdf cgabe ecd dcbf ebfdg abecgfd cd | fdebg fdgbe cdgeb bagdef
aefdb degf fdbaeg egb agebd bcfage gcedfab bdagc ge febacd | bgfdae fdge acfdeb deafb
cegfba dfcea gbea bac ebafc gdcebf gebcf ba gfdbac gacfdbe | febac aefcb cbfgda cafed
ec ecfab feadbg ecb dabfc cbfegd dbafgec feabg caefgb ecag | acbefg afbeg fecgabd bcfad
fd decag fagbe beafdg egdacbf gbfcde dbfa agfbec dgf geadf | bfda befgcda fgd adfb
af eabfdg edabc dgfabc efga fdbae fcagbed abf gbcdfe efgdb | gefa gfabcd fba gcdfab
dbfacg degcb gecdaf adcbg bafegcd dfbag gbdefa ac cabf agc | bcadg afbc bdgfa abcdg
efab cbedg aedfbc bfcad geacfd ea fabdcg adbfgce ade ecabd | fdceba bfceda ecgdfa aefcdg

100
data/day_9.txt Normal file
View File

@@ -0,0 +1,100 @@
9987675345698765453987654321234589999899878923493212345678999998656782467898999899878301234578998787
9876543234789765322398743210123567898789767899986101239899789876543101567897898798763212355989987656
3987784014897654310987654331235679965697644998765232345997654989765212799956999679854343466799976545
2199875323998765421298776542346789434595433498754345456789543499876353489549876542975858977899876439
1012965439899896432359987667457896546789322349987656987898932445987454578932987621986767898943989598
2125976598798989943467898876589999858899910959898767898976101234598966689431298320987898999432399987
3234987987656579894578989987679998769999899898769879999965422345679298995420139434598999896543459875
4346799876545456789679877898789769878989798799656989899876563496799109989591298548999689789656598764
5956998765434345698989765679895456989678679678943496789988689989898997979989987657987565698787989543
6899898764321234567999876989954345696534598789432134679999799976987656765778998769766464989999865432
7987679653210155789999997899875456789323999899521012345899899765698943254667999898954353578999654321
9696598654323234589788998998986567898919894958933423456789999753459892123458998987893212467898765432
8543498765434545679567899987987679987898743147894934567898989432398789334767987876789101298989876543
7656789878545656789338989876598789986797654235679895678997878941987678975879896545698914345678987654
9868998989656877892129678965439899975498754346998796789986867932954569986798765434567895458989998765
8979987798787898921012567894321999874329985459876589899985457899873458987987654323469986567899869876
7899876549898959999923456789432398765909876567987678999875322987654567898998773212378997698998754987
6534997831999943987894567897543999899899987878998789789964201298765678919679654323456789799987632399
5424598942689899876789678987659899988788999989019895699865362349986989103498795434567899899996549989
4212349653498789765699989798798789877697898999999924789976457899798993212379986747698946999897998878
5334569878989678934998995679987678954545987899789935689987567987649898763467897858789235798789887867
6446878989876569976897893459876567893239876797689898789397679893234789654598998979999546999698785458
7557989199987457898956789998984348994124965323486789895498798789123569875989109989898969898598654345
8998994398796346899545699876543236789549876412345678979569987679023456989878992398767898767469643234
9999689987654235695434689987652125678956987954456789768979876568994568999867989987659999955398759345
7887578976543123489545679698983234789768998765677993457899765456789878997654878998767899843229898956
6543469998768245678956789529865445899879999896798912349998987347899989989653467899879998732019987897
7672398999875456989767895439876556789989989999899102356987798456789899878932356789989987643498976789
8954987899986567899878976546989667993498979978976212469996549567895798969991245699899998754987685698
9769876989987898901989997656898789101997768769895433498765439878934987656789346789788999869876564567
9898765778998979312397899767999893249876753656789656569976524989423976546789498997697986998765473456
3987654569789765434456976978999974756965432345678987678987734694319887635689989998456894219874321567
2198733477678978645797895989989865669876543766799998789599848789998765212678979999367975323985432378
3989821234568999756898934599878976798998754567898999897679959899899874323599867895459876434596543458
9876432347679549887969423498969987897989865698997899979898767998798765435679756899567987546987654567
9876543489789832998953210987658998996579878789876588965939989987659987546789645688979987657898785678
3987654579898721239998723976547899987467989999995477894321098765545698687895436577898998898999896789
2398766789989654359899644597656999876345697679654356965434197543434989798954323456987899939998987893
1239887894678965498788987698987999765234789598765467896545976532129879899996534567896789123976798912
0945998923567896997687898999298987653123696439876588987679876549098765945987965778945693239875459901
9896789434678999876575999899399199762064594321987678998789989698987654326599878989238789459954345899
6797898645789998767434598798989349872165689410198989769899898997898543212367989994345678998986254678
5789949756894987654323497687878959989278796521239797653998767876799654302456999965456899987432123689
4569439887893998799934598576967898995478897432345698992989545665698775212567899876697899876543234567
5678921998969899987899974475459997898567998945456789989878932124569854323498976989989965987654345678
6799990199656789876798863212349976987678999896897899879767893234698765434578965699878974598785458789
9899989989543298765987652101267895999799998789998998968456789345999879545679854598767943459987569893
3998979678932129894598543323458934889934987698999987654345895469876997656789765987659894567998678942
1987667569892099989679656445667895679899876597896596543256896567989998789899876798547689978999789531
9876553456789989878998767986898996798788995456789987752125789678998999897999987899534567899989898940
8765432345679878967999899597959789987576789347899876543234589789987899975689999987656789929876967891
8764321234698766556899995329345678987455678956789989684348678999876798764567898998769893212975456932
9863210123459654345688989910258789876323589969894398765457789998765679923459987869878999109864349894
9854525234598743234567979891345897995474567898989239878767899997654567895678996555989998919753239789
9765434545987655455679865789457896986567678967878946989878959876543456789789789434599987898954398679
9896565656898766767999954567978965497678989656567898998989245988652346799894698765679876767895976532
9987879768999879879878323489989654398789893432349899987690159899721278967923989876798965456987987699
8998989879988989998965412397898765219899762101234789996521998798754367899999878987987654347898998987
7659395989876897987654323456789898323998753242345678989439887699865456899989769999876543236789019986
8543214598765456798987654589896987536789894355456989879598754589876967999877658999997655345678998965
7654323679876578969999865678945698545678976566567898769987653479989898998766546898998786457799987654
8795498793997989657899976789234987657799987677678965657898794567998789987653234567899898568899998723
9989989932398996546789989890123498968989998788789654346789887679899678996442123458901987678999899812
9878879993989875237899999989254989979878999899898766869895998997676567894321015667892398789999798923
7767767989878943123978999878969978998967899922939878998953219876565456976534124578943469999988697654
6553459876767894234568986767898767987656789210125989987994101985432389997645234567894590129876598785
5432345985458995679799875456989659876545456991234899876789919996676569987656545678965989239988439986
4321359894346789789987654345678943965434345789546799765679898987787878998787656989879879998895321298
5430198765497899894298763234567899876521234899987987654598787999898989109898767899998967897654210129
6541679876989945999987654345678989987752345678999999766987656579999793212999878999987656789775323234
6432589989877899998998765476989978998843459789998939878996545468989654329989999998798787894989876545
7543458998965778987679976687898767898754678999987923989876432345678976498978989987659898943497987676
8654567987854567896563987798998656899865789019876894599987321238789098987967878998743989932346798888
9766779876543488997432398899987745679877892198765789998765450139989129876754568999974567895459999999
9877898765632356789543459921096434567988943989654567899986521234678998765323467899865679976598897912
9988987654521237989699567899987558978999659876543457899987634656899986544212456789877889987987656893
9999996543210357678987998998998667989431968997652346998998785667901997432101348995998994398996545789
8932987987631234589476789987689978999599878994321345997899996778929899546712467894239987469997434679
7891098876546349679345678965578899998989989989935459876979897889298778994324578943190296599989323567
6989129989865478993234567893456799987878998776896567965468789990199656989435678954989987989978934569
5678949999976569310123689932345689876569899565789778984345688999987645678945789769979999878767897698
4567898999987679453294594321017992985498765434698999993234567898765434899656899998768999765457898987
7698987898799789564989695532399891996309899323456789832125678919876325999797999887657987654346789876
8999876789654998679879989649989799876212987437899898761012348901985476789898998765431298743235689985
9899965689543249998765679998767678965429876556945987652125667899876787899979459963210139852123798954
8788754799932129879654587789656567896578987987899876543234799998989898998764349854321298764234567893
7656543458794298965443445678932456789789598998901997654345678997693939789943298765432359879876899952
6543252345679987654352237899751577899895459789212398897656889986542124599892109887545456989987896541
8432101489989999875210128932967698998901345699924569998767994987431023999789213998676569995699965430
7654312678999998996321239999878789767892396989895678989879993976545129897678954598789678934567976521
8976433589998767987542356789999891557789989978789789467998989897685398789569899989899789325679897432
9987544567899655698653468999987910345679878765678992345987878799896987667348798976949895434599789545
9999655778999543219766567899876621234598765454567891249876567689929876543237667895435976565987679656
8798789989988959309877678999765432545699654323479910134995456578912997632123456789523498878996598977
6549891299876898912988989789876547686987543212567891239984323469329876321014567898654569989985456799
1234932997764667893499995678987658798998654403459932398765012478998765432125678979866789699876345678
0356799876543456994567894567898967899019873212378993987654139989219876843336789565977896579843234589
1235789987532345789978943456899878978929764323456789398543248892101998765459895434598965498765445678
2356897698421234567899432346789989767899875435668891239654356789432789887567976323699654329876786789
3567896543210246788987541457892499848921986546879910129767568996545699998678988434789543210989897899

63
src/day_10.jl Normal file
View File

@@ -0,0 +1,63 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
using Combinatorics
function check_line(l, dict, scores)
braces = []
for b in l
if b in keys(dict)
push!(braces, b)
continue
end
if length(braces) != 0 && b == dict[braces[end]]
pop!(braces)
else
return scores[b]
end
end
return 0
end
function p1(input::Vector{String})
dict = Dict('(' => ')', '[' => ']', '<' => '>', '{' => '}')
scores = Dict(')' => 3, ']' => 57, '>' => 25137, '}' => 1197)
return sum([ check_line(l, dict, scores) for l in input ])
end
function complete(l, dict)
braces = []
for b in l
if b in keys(dict)
push!(braces, b)
continue
end
if length(braces) != 0 && b == dict[braces[end]]
pop!(braces)
end
end
out = []
for c in reverse(braces)
push!(out, dict[c])
end
return out
end
function p2(input::Vector{String})
dict = Dict('(' => ')','[' => ']', '<' => '>', '{' => '}')
scores = Dict(')' => 1,']' => 2,'}' => 3,'>' => 4)
remaining = filter(x -> check_line(x, dict, scores) == 0, input)
a = [complete(x, dict) for x in remaining]
out = []
for e in a
score = 0
for c in e
score = score * 5 + scores[c]
end
push!(out, score)
end
return sort(out)[convert(Int,round(length(out)/2, RoundUp))]
end
@aoc(2021, 10)

78
src/day_11.jl Normal file
View File

@@ -0,0 +1,78 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
using Combinatorics
function step(map, copy, x, y)
level = copy[x][y] = map[x][y] + 1
if level == 10
global flahes = flashes + 1
for (x,y) in zip([-1,0,1,-1,1,-1,0,1], [1,1,1,0,0,-1,-1,-1])
if x in 1:length(map) && y in 1:length(map[1])
step(map, copy, x, y)
end
end
end
end
function solve(input, part)
map = [ parse.(Int, collect(l)) for l in input ]
elements = length(map) * length(map[1])
sum = 0
step = 0
while true
step += 1
flash = []
flashed = []
for x in 1:length(map)
for y in 1:length(map[1])
map[x][y] += 1
if map[x][y] > 9
push!(flash, [x,y])
push!(flashed, [x,y])
end
end
end
while length(flash) != 0
x, y = pop!(flash)
for (i,j) in zip([-1,0,1,-1,1,-1,0,1], [1,1,1,0,0,-1,-1,-1])
nx = x + i
ny = y + j
if nx in 1:length(map) && ny in 1:length(map[1])
map[nx][ny] += 1
if map[nx][ny] > 9 && [nx, ny] flashed
push!(flash, [nx,ny])
push!(flashed, [nx,ny])
end
end
end
end
for (x,y) in flashed
map[x][y] = 0
end
sum += length(flashed)
if part == 1 && step == 100
break
end
if part == 2 && length(unique(flashed)) == elements
return step
end
end
return sum
end
function p1(input::Vector{String})
solve(input, 1)
end
function p2(input::Vector{String})
solve(input, 2)
end
@aoc(2021, 11)

43
src/day_12.jl Normal file
View File

@@ -0,0 +1,43 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function visit(map, curr_cave, visited)
curr_cave == "end" ? (return 1) : nothing
curr_cave[begin] in 'a':'z' && curr_cave visited ? (return 0) : nothing
v = copy(visited)
push!(v, curr_cave)
return sum([ visit(map, e, v) for e in map[curr_cave] ])
end
function visit2(map, curr_cave, visited, d)
curr_cave == "end" ? (return 1) : nothing
curr_cave == "start" && length(visited) != 0 ? (return 0) : nothing
if curr_cave[begin] in 'a':'z' && curr_cave visited
d == nothing ? (d = curr_cave) : (return 0)
end
v = copy(visited)
push!(v, curr_cave)
return sum([ visit2(map, e, v, d) for e in map[curr_cave] ])
end
function prepare_input(input)
map = Dict()
for l in input
a, b = split(l, "-")
!haskey(map, a) ? (map[a] = [b]) : (push!(map[a], b))
!haskey(map, b) ? (map[b] = [a]) : (push!(map[b], a))
end
return map
end
function p1(input::Vector{String})
return visit(prepare_input(input), "start", [])
end
function p2(input::Vector{String})
return visit2(prepare_input(input), "start", [], nothing)
end
@aoc(2021, 12)

66
src/day_13.jl Normal file
View File

@@ -0,0 +1,66 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function fold(grid, dir, at)
if dir == "x"
new = grid[:, 1:at]
rest = reverse(grid[:, at+2:end], dims=2)
else
new = grid[1:at, :]
rest = reverse(grid[at+2:end, :], dims=1)
end
lnewx, lnewy = (length(new[1, :]), length(new[:, 1]))
lrestx, lresty = (length(rest[1, :]), length(rest[:, 1]))
for y in 1:lresty, x in 1:lrestx
new[lnewy-lresty+y, lnewx-lrestx+x] = new[lnewy-lresty+y, lnewx-lrestx+x] || rest[y,x]
end
return new
end
function prep_input(input)
folds = []
holes = []
for l in input
if l == ""; continue; end
m = match(r"(\d+),(\d+)",l)
if m == nothing
c = match(r"(\w)=(\d+)", l).captures
push!(folds, [c[1], parse(Int, c[2])])
else
c = match(r"(\d+),(\d+)", l).captures
push!(holes, [parse(Int, c[1]), parse(Int, c[2])])
end
end
max_x = maximum(map(x-> x[1], holes))
max_y = maximum(map(x-> x[2], holes))
grid = falses((max_y+1, max_x+1))
for (x,y) in holes
grid[y+1,x+1] = true
end
return (grid, folds)
end
function print_grid(grid)
for y in 1:length(grid[:,1])
for x in 1:length(grid[1,:])
print(".#"[grid[y,x]+1])
end
println("")
end
end
function p1(input::Vector{String})
grid, folds = prep_input(input)
return sum(fold(grid, folds[1][1], folds[1][2]))
end
function p2(input::Vector{String})
grid, folds = prep_input(input)
for (dir, at) in folds
grid = fold(grid, dir, at)
end
print_grid(grid)
end
@aoc(2021, 13)

58
src/day_14.jl Normal file
View File

@@ -0,0 +1,58 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function sliding(in, w::Int64; step::Int = 1)
((@view in[i:i+w-1]) for i in 1:step:length(in)-w+1)
end
function prep_input(input)
pairs = Dict()
for pair in sliding(input[1], 2)
!haskey(pairs, pair) ? (pairs[pair] = 0) : nothing
pairs[pair] += 1
end
dict = Dict()
for l in input[3:end]
p, t = split(l, " -> ")
dict[p] = (p[1] * t, t * p[2])
end
return (pairs, dict)
end
function step(pairs, dict)
new = Dict()
for pair in keys(pairs)
p1, p2 = dict[pair]
new[p1] = get(new, p1, 0) + pairs[pair]
new[p2] = get(new, p2, 0) + pairs[pair]
end
return new
end
function solve(pairs, dict, rounds, last)
for _ in 1:rounds
pairs = step(pairs, dict)
end
c = Dict()
for p in keys(pairs)
!haskey(c, p[1]) ? (c[p[1]] = 0) : nothing
c[p[1]] += pairs[p]
end
c[last] += 1 # add one more count for last character in polymer
return maximum(values(c)) - minimum(values(c))
end
function p1(input::Vector{String})
pairs, dict = prep_input(input)
return solve(pairs, dict, 10, input[begin][end])
end
function p2(input::Vector{String})
pairs, dict = prep_input(input)
return solve(pairs, dict, 40, input[begin][end])
end
@aoc(2021, 14)

47
src/day_15.jl Normal file
View File

@@ -0,0 +1,47 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
using Graphs, SimpleWeightedGraphs
function prep_input(input)
[ parse.(Int, collect(l)) for l in input ]
end
function lowest_cost(grid)
q = [(1,1,0)]
costs = Dict()
while true
x,y,c = popfirst!(q)
x == length(grid) && y == length(grid[1]) ? (return c) : nothing
for (x2, y2) in [(x+1,y),(x-1,y),(x,y-1),(x,y+1)]
if x2 in 1:length(grid) && y2 in 1:length(grid[1])
cost = c + grid[x2][y2]
(x2, y2) in keys(costs) && costs[(x2, y2)] <= cost ? (continue) : nothing
costs[(x2, y2)] = cost
push!(q, (x2, y2, cost))
end
end
sort!(q)
end
end
function p1(input::Vector{String})
grid = prep_input(input)
return lowest_cost(grid)
end
function p2(input::Vector{String})
grid = prep_input(input)
newgrid = [ zeros(Int, 5*length(grid[1])) for _ in 1:5*length(grid) ]
for x in 1:length(newgrid), y in 1:length(newgrid[1])
v = grid[x%length(grid)+1][y%length(grid[1])+1]
for _ in 1:((x-1) ÷ length(grid) + (y-1) ÷ length(grid[1])) # ÷ performs integer division
v + 1 == 10 ? (v = 1) : (v += 1)
end
newgrid[x][y] = v
end
return lowest_cost(newgrid)
end
@aoc(2021, 15)

73
src/day_16.jl Normal file
View File

@@ -0,0 +1,73 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function decode_packet(p, o, version)
version += parse(Int, p[o:o+2], base=2); o+=3
type = parse(Int, p[o:o+2], base = 2); o+=3
if type == 4
v = ""
while true
tmp = p[o:o+4]; o+=5
v *= tmp[2:end]
tmp[1] == '0' ? break : continue
end
value = parse(Int, v, base=2)
else
length_type = p[o]; o+=1
sub_values = []
if length_type == '0'
length = parse(Int, p[o:o+14], base=2); o+=15
target = o + length
while o < target
v, o, version = decode_packet(p, o, version)
push!(sub_values, v)
end
else
num = parse(Int, p[o:o+10], base=2); o+=11
for _ in 1:num
v, o, version = decode_packet(p, o, version)
push!(sub_values, v)
end
end
end
if type == 0
value = sum(sub_values)
elseif type == 1
value = prod(sub_values)
elseif type == 2
value = minimum(sub_values)
elseif type == 3
value = maximum(sub_values)
elseif type == 5
value = sub_values[begin] > sub_values[end] ? 1 : 0
elseif type == 6
value = sub_values[begin] < sub_values[end] ? 1 : 0
elseif type == 7
value = sub_values[begin] == sub_values[end] ? 1 : 0
end
return (value, o, version)
end
function p1(input::Vector{String})
packet = ""
for c in input[1]
packet *= bitstring(Int8(parse(Int, c, base = 16)))[5:end]
end
v, _, version = decode_packet(packet, 1, 0)
return version
end
function p2(input::Vector{String})
packet = ""
for c in input[1]
packet *= bitstring(Int8(parse(Int, c, base = 16)))[5:end]
end
v, _ = decode_packet(packet, 1, 0)
return v
end
@aoc(2021, 16)

38
src/day_17.jl Normal file
View File

@@ -0,0 +1,38 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function solve(input)
x1, x2, y1, y2 = parse.(Int, match(r"target area: x=(-?\d+)..(-?\d+), y=(-?\d+)..(-?\d+)", input).captures)
total = 0
best = 0
for vx in isqrt(2x1)+1:x2, vy in y1:abs(y1)
x,y,maxy = 0,0,0
Δx, Δy = vx, vy
found = passed = false
while true
inside = false
x += Δx; y += Δy
Δx -= sign(Δx); Δy -= 1
y > maxy && (maxy = y)
if x in x1:x2 && y in y1:y2
inside = true
!found && (total += 1); found = true
maxy > best && (best = maxy)
end
(found && !inside) && break
y < y1 && break
end
end
return (best, total)
end
function p1(input::Vector{String})
return solve(input[1])[1]
end
function p2(input::Vector{String})
return solve(input[1])[2]
end
@aoc(2021, 17)

69
src/day_18.jl Normal file
View File

@@ -0,0 +1,69 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
using Combinatorics
function addn(v, n, dir)
n == nothing && (return v)
typeof(v) == Int && (return v+n)
if dir == "left"
return [addn(v[1], n, "left"), v[2]]
else
return [v[1], addn(v[2], n, "right")]
end
end
function arrexplode(v, n = 4)
typeof(v) == Int && (return (false, nothing, v, nothing))
n == 0 && (return true, v[1], 0, v[2])
l, r = v
exploded, t, l, w = arrexplode(l, n-1)
exploded && (return true, t, [l, addn(r, w, "left")], nothing)
exploded, t, r, w = arrexplode(r, n-1)
exploded && (return true, nothing, [addn(l, t, "right"), r], w)
false, nothing, v, nothing
end
function arrsplit(v)
if typeof(v) == Int
v > 9 && (return true, [v ÷ 2, Int(round(v/2, RoundUp))])
return false, v
end
l, r = v
changed, l = arrsplit(l)
changed && (return true, [l,r])
changed, r = arrsplit(r)
changed, [l,r]
end
function arradd(l, r)
sum = [l,r]
while true
changed, t, sum, w = arrexplode(sum)
changed && continue
changed, sum = arrsplit(sum)
changed && continue
break
end
sum
end
function magn(v)
typeof(v) == Int && (return v)
3*magn(v[1]) + 2*magn(v[2])
end
function p1(input::Vector{String})
numbers = [ eval(Meta.parse(x)) for x in input ]
magn(reduce(arradd, numbers))
end
function p2(input::Vector{String})
numbers = [ eval(Meta.parse(x)) for x in input ]
maximum([magn(arradd(l,r)) for (l, r) in Combinatorics.permutations(numbers, 2)])
end
@aoc(2021, 18)

86
src/day_19.jl Normal file
View File

@@ -0,0 +1,86 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
using Combinatorics
function prepare_input(input)
dict = []
tmp = []
for l in input
l == "" && continue
m = match(r"--- scanner (\d+) ---", l)
if m != nothing
length(tmp) != 0 && push!(dict, tmp)
tmp = []
continue
end
push!(tmp, parse.(Int, split(l, ",")))
end
dict
end
function align(a,b, negs, distances)
a2 = Set(a)
for re in 1:6, neg in negs
newb = [ neg .* collect(Combinatorics.permutations(s,3))[re] for s in b ]
for p1 in a2, p2 in newb
count = 0
remapped = []
dist = p2 .- p1
for b2 in newb
to_a = b2 .- dist
to_a in a2 && (count += 1)
push!(remapped, to_a)
end
if count >= 12
println("match $dist")
push!(distances, dist)
return true, remapped
end
end
end
return false, []
end
function p1(input::Vector{String})
@info "Something is brken. This may take 5 minutes or more to get a slightly wrong result."
negations = [
[1,1,1],
[-1,1,1],
[1,-1,1],
[1,1,-1],
[-1,-1,1],
[-1,1,-1],
[-1,-1,-1],
[1,-1,-1]
]
list = prepare_input(input)
aligned_idx = Set(1)
aligned = Dict(1 => list[1])
beacons = copy(list[1])
dont_align = Set()
distances = [[0,0,0]]
while length(aligned_idx) < length(list)
for i in 1:length(list)
i in aligned_idx && continue
for j in sort(collect(aligned_idx))
println("checking $i against $j")
(i,j) in dont_align && continue
found, remapped = align(aligned[j], list[i], negations, distances)
if found
push!(aligned_idx, i)
aligned[i] = remapped
beacons = vcat(beacons, remapped)
break
end
push!(dont_align, (i,j))
end
end
end
return length(beacons)
end
function p2(input::Vector{String})
end
@aoc(2021, 19)

41
src/day_2.jl Normal file
View File

@@ -0,0 +1,41 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
function sliding(in, w::Int64; step::Int = 1)
((@view in[i:i+w-1]) for i in 1:step:length(in)-w+1)
end
function p1(input::Vector{String})
d = [0, 0]
for i input
c = match(r"(\w+)\s(\d+)", i).captures
if c[1] == "forward"
d[1] += parse(Int, c[2])
elseif c[1] == "down"
d[2] += parse(Int, c[2])
elseif c[1] == "up"
d[2] -= parse(Int, c[2])
end
end
prod(d)
end
function p2(input::Vector{String})
d = [0, 0, 0]
for i input
c = match(r"(\w+)\s(\d+)", i).captures
if c[1] == "forward"
d[1] += parse(Int, c[2])
d[2] += parse(Int, c[2]) * d[3]
elseif c[1] == "down"
d[3] += parse(Int, c[2])
elseif c[1] == "up"
d[3] -= parse(Int, c[2])
end
end
prod(d[1:2])
end
@aoc(2021, 2)

60
src/day_20.jl Normal file
View File

@@ -0,0 +1,60 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function prepare_input(input)
code = [ (c == '#') for c in input[1] ]
image = []
for l in input[3:end]
push!(image, [ (c == '#') for c in l ])
end
code, image
end
function neighbours(i,j)
( (i+y,j+x) for (y, x) in zip([-1,-1,-1,0,0,0,1,1,1], [-1,0,1,-1,0,1,-1,0,1]))
end
function get_value(image, y, x, bool)
( 1 <= y <= length(image) && 1 <= x <= length(image[1])) && return image[y][x]
bool
end
function apply_alg(image, code, bool)
w = length(image[1])
h = length(image)
newimage = []
for y in 0:h+1
row = []
for x in 0:w+1
values = [ get_value(image, y2, x2, bool) for (y2,x2) in neighbours(y, x)]
idx = parse(Int, join(map(b->b ? 1 : 0, values)), base=2)
push!(row, code[idx+1])
end
push!(newimage, row)
end
newimage
end
function p1(input::Vector{String})
code, image = prepare_input(input)
bool = false
for _ in 1:2
image = apply_alg(image, code, bool)
bool = !bool
end
return sum(vcat(image...))
end
function p2(input::Vector{String})
code, image = prepare_input(input)
bool = false
for _ in 1:50
image = apply_alg(image, code, bool)
bool = !bool
end
return sum(vcat(image...))
end
@aoc(2021, 20)

54
src/day_21.jl Normal file
View File

@@ -0,0 +1,54 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function prepare_input(input)
p1 = parse(Int, match(r"position: (\d)", input[1]).captures[1])
p2 = parse(Int, match(r"position: (\d)", input[2]).captures[1])
[p1, p2]
end
function p1(input::Vector{String})
p = prepare_input(input)
score = [0,0]
d = 1
while true
for i in 1:2
np = (p[i] + sum(d:d+2)) % 10
d += 3
score[i] += p[i] = np
score[i] >= 1000 && return (score[i==1 ? 2 : 1]*(d-1))
end
end
end
function simulate(position, score, mul, scores)
s = popfirst!(scores)
for (throw, chances) in [(3, 1),(4, 3),(5, 6),(6, 7),(7, 6),(8, 3),(9, 1)]
position2 = (position + throw) % 10
score2 = score + (position2 == 0 ? 10 : position2)
paths = mul * chances
if score2 >= 21
s[1] += paths
else
s[2] += paths
simulate(position2, score2, paths, scores)
end
end
pushfirst!(scores, s)
end
function p2(input::Vector{String})
p = prepare_input(input)
s1 = [ [0,0] for _ in 1:11 ]
simulate(p[1], 0, 1, s1)
s2 = [ [0,0] for _ in 1:11 ]
simulate(p[2], 0, 1, s2)
w1 = sum(map(x -> x[1][1] * x[2][2], zip(s1[2:end], s2)))
w2 = sum(map(x -> x[1][1] * x[2][2], zip(s2, s1)))
return w1 > w2 ? w1 : w2
end
@aoc(2021, 21)

58
src/day_22.jl Normal file
View File

@@ -0,0 +1,58 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function prepare_input(input)
out = []
for l in input
on = l[1:3] == "on "
n = split(l, ",")
cords = [ parse.(Int, match(r"(-?\d+)\.\.(-?\d+)", r).captures) for r in n ]
push!(out, (on, cords))
end
out
end
function p1(input::Vector{String})
list = prepare_input(input)
dict = Dict()
for (on, range) in list
xmin = range[1][1] < -50 ? -50 : range[1][1]
ymin = range[2][1] < -50 ? -50 : range[2][1]
zmin = range[3][1] < -50 ? -50 : range[3][1]
xmax = range[1][2] > 50 ? 50 : range[1][2]
ymax = range[2][2] > 50 ? 50 : range[2][2]
zmax = range[3][2] > 50 ? 50 : range[3][2]
for x in xmin:xmax, y in ymin:ymax, z in zmin:zmax
dict[(x,y,z)] = on
end
end
return sum(collect(values(dict)))
end
function p2(input::Vector{String})
list = prepare_input(input)
cubes = []
for (on, ((xmin, xmax),(ymin, ymax),(zmin, zmax))) in list
for i in 1:length(cubes)
(xmin2,xmax2,ymin2,ymax2,zmin2,zmax2) = cubes[i]
if xmin > xmax2 || xmax < xmin2 || ymin > ymax2 || ymax < ymin2 ||zmin > zmax2 || zmax < zmin2
# new cube does not intersect with the current one
continue
end
# the new cube intersects the current cube, mark current cube for removal and divide it into smaller cubes that dont intersect the new cube
cubes[i] = nothing # unset the element to keep positions constant fo ths step
(xmin > xmin2) && push!(cubes, (xmin2 , xmin-1 , ymin2 , ymax2 , zmin2 , zmax2 ))
(xmax < xmax2) && push!(cubes, (xmax + 1 , xmax2 , ymin2 , ymax2 , zmin2 , zmax2 ))
(ymin > ymin2) && push!(cubes, (max(xmin,xmin2), min(xmax, xmax2), ymin2 , ymin - 1 , zmin2 , zmax2 ))
(ymax < ymax2) && push!(cubes, (max(xmin,xmin2), min(xmax, xmax2), ymax + 1 , ymax2 , zmin2 , zmax2 ))
(zmin > zmin2) && push!(cubes, (max(xmin,xmin2), min(xmax, xmax2), max(ymin,ymin2), min(ymax,ymax2), zmin2 , zmin - 1))
(zmax < zmax2) && push!(cubes, (max(xmin,xmin2), min(xmax, xmax2), max(ymin,ymin2), min(ymax,ymax2), zmax + 1, zmax2 ))
end
on && push!(cubes, (xmin, xmax, ymin, ymax, zmin, zmax)) # Add cube if on
filter!(!=(nothing), cubes) # delete the unset elements
end
sum([ (xmax-xmin+1) * (ymax-ymin+1) * (zmax-zmin+1) for (xmin,xmax,ymin,ymax,zmin,zmax) in cubes ])
end
@aoc(2021, 22)

17
src/day_23.jl Normal file
View File

@@ -0,0 +1,17 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function prepare_input(input)
zip(match(r"(\w)", input[3]).captures, match(r"(\w)", input[4]).captures)
end
function p1(input::Vector{String})
rooms = prepare_input(input)
@info rooms
end
function p2(input::Vector{String})
end
@aoc(2021, 23)

51
src/day_24.jl Normal file
View File

@@ -0,0 +1,51 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
using Memoization
function calc(i, w, z, add_x, add_y, div_z)
x = add_x[i] + (z % 26)
z = z ÷ div_z[i]
x != w && (z = z * 26 + w + add_y[i])
z
end
@memoize function find_solution(i, z, add_x, add_y, div_z)
(i == 15 && z == 0) && return [""]
i == 15 && return []
x = add_x[i] + (z % 26)
possible_numbers = collect(1:9)
x in 1:9 && (possible_numbers = [x])
out = []
for num in possible_numbers
nextz = calc(i, num, z, add_x, add_y, div_z)
nextxs = find_solution(i + 1, nextz, add_x, add_y, div_z)
for x2 in nextxs
push!(out, string(num) * x2)
end
end
out
end
function p1(input::Vector{String})
add_x = []
add_y = []
div_z = []
for (i, l) in enumerate(input)
(contains(l, "add x") && !contains(l, "add x z")) && push!(add_x, parse(Int, split(l, " ")[3]))
(contains(l, "add y") && ((i-1) % 18 == 15)) && push!(add_y, parse(Int, split(l, " ")[3]))
contains(l, "div z") && push!(div_z, parse(Int, split(l, " ")[3]))
end
@info add_x
@info add_y
@info div_z
solutions = [ parse(Int, s) for s in find_solution(1, 0, add_x, add_y, div_z) ]
minimum(solutions), maximum(solutions), length(solutions)
end
function p2(input::Vector{String})
"P2 solution is part of P1"
end
@aoc(2021, 24)

37
src/day_25.jl Normal file
View File

@@ -0,0 +1,37 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
using Memoization
function p1(input::Vector{String})
grid = [ collect(l) for l in input]
steps = 0
while true
steps += 1
moved = false
tmp = deepcopy(grid)
for y in 1:length(grid), x in 1:length(grid[1])
if grid[y][x] == '>' && grid[y][x%length(grid[1])+1] == '.'
moved = true
tmp[y][x%length(grid[1])+1] = '>'
tmp[y][x] = '.'
end
end
tmp2 = deepcopy(tmp)
for y in 1:length(tmp), x in 1:length(grid[1])
if tmp[y][x] == 'v' && tmp[y%length(grid)+1][x] == '.'
moved = true
tmp2[y%length(grid)+1][x] = 'v'
tmp2[y][x] = '.'
end
end
!moved && (return steps)
grid = tmp2
end
end
function p2(input::Vector{String})
"Day 25 has no Part 2"
end
@aoc(2021, 25)

40
src/day_3.jl Normal file
View File

@@ -0,0 +1,40 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
function p1(input::Vector{String})
γ = ""
ϵ = ""
for n in 1:length(input[1])
bits = map(x -> parse(Int, x[n]), input)
more_ones = sum(bits) > length(bits) / 2
γ *= more_ones ? "1" : "0"
ϵ *= more_ones ? "0" : "1"
end
parse(Int, γ; base=2) * parse(Int, ϵ; base=2)
end
function p2(input::Vector{String})
i1 = copy(input)
i2 = copy(input)
o₂ = ""
co₂ = ""
for i in 1:length(input[1])
o₂bits = map(x -> parse(Int, x[i]), i1)
co₂bits = map(x -> parse(Int, x[i]), i2)
o₂mc = sum(o₂bits) >= length(o₂bits) / 2 ? '1' : '0'
co₂mc = sum(co₂bits) >= length(co₂bits) / 2 ? '0' : '1'
filter!(x -> x[i] == o₂mc, i1)
filter!(x -> x[i] == co₂mc, i2)
length(i1) == 1 && o₂ == "" ? (o₂ = i1[1]) : nothing
length(i2) == 1 && co₂ == "" ? (co₂ = i2[1]) : nothing
o₂ != "" && co₂ != "" ? break : continue
end
parse(Int, o₂; base=2) * parse(Int, co₂; base=2)
end
@aoc(2021, 3)

76
src/day_4.jl Normal file
View File

@@ -0,0 +1,76 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function read_boards(input)
in = filter(!=(""), input)
boards = []
for i in 1:5:length(in)
board = []
for x in 0:4
row = @pipe split(in[i+x], " ") |> filter(!=(""), _) |> parse.(Int, _)
push!(board, row)
end
push!(boards, vcat(board...))
end
return boards
end
function mark_board(board, n)
idx = findall(==(n), board)
for i in idx
board[i] = -1
end
end
function is_winner(board)
for i in 1:5:length(board)
if unique(board[i:i+4]) == [-1]
return true
end
end
for x in 1:5
if unique(board[x:5:length(board)]) == [-1]
return true
end
end
return false
end
function score(board, n)
sum(filter(!=(-1), board)) * n
end
function scores(numbers, boards)
scores = []
winners = []
for n in numbers
for (i, board) in enumerate(boards)
i in winners ? continue : mark_board(board, n)
if is_winner(board)
push!(winners, i)
push!(scores, score(board, n))
end
end
end
return scores
end
function p1(input::Vector{String})
numbers = @pipe split(input[1], ",") |> parse.(Int, _)
boards = read_boards(input[3:end])
return scores(numbers, boards)[1]
end
function p2(input::Vector{String})
numbers = @pipe split(input[1], ",") |> parse.(Int, _)
boards = read_boards(input[3:end])
return scores(numbers, boards)[end]
end
@aoc(2021, 4)

51
src/day_5.jl Normal file
View File

@@ -0,0 +1,51 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function parse_line(input)
c = match(r"(\d+),(\d+) -> (\d+),(\d+)", input).captures
return parse.(Int, c)
end
function p1(input::Vector{String})
board = Dict{Tuple{Int64, Int64}, Int64}()
for l in input
p = parse_line(l)
if p[1] == p[3] || p[2] == p[4]
xstep = p[1] > p[3] ? -1 : 1
ystep = p[2] > p[4] ? -1 : 1
for x in p[1]:xstep:p[3]
for y in p[2]:ystep:p[4]
(x,y) in keys(board) ? (board[(x,y)] += 1) : (board[(x,y)] = 1)
end
end
end
end
return count(>=(2), values(board))
end
function p2(input::Vector{String})
board = Dict{Tuple{Int64, Int64}, Int64}()
for l in input
p = parse_line(l)
if p[1] == p[3] || p[2] == p[4]
xstep = p[1] > p[3] ? -1 : 1
ystep = p[2] > p[4] ? -1 : 1
for x in p[1]:xstep:p[3]
for y in p[2]:ystep:p[4]
(x,y) in keys(board) ? (board[(x,y)] += 1) : (board[(x,y)] = 1)
end
end
elseif abs(p[1] - p[3]) == abs(p[2] - p[4])
xstep = p[1] > p[3] ? -1 : 1
ystep = p[2] > p[4] ? -1 : 1
for(x,y) in zip(p[1]:xstep:p[3], p[2]:ystep:p[4])
(x,y) in keys(board) ? (board[(x,y)] += 1) : (board[(x,y)] = 1)
end
end
end
return count(>=(2), values(board))
end
@aoc(2021, 5)

29
src/day_6.jl Normal file
View File

@@ -0,0 +1,29 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function solve(input::Vector{String}, days::Int64)
fish = @pipe split(input[1], ",") |> parse.(Int, _)
state = Dict{Int, Int}([ [x, count(==(x), fish)] for x in 0:8 ])
for _ in 1:days
next_day = Dict{Int, Int}([ [x, 0] for x in 0:8 ])
next_day[8] = next_day[6] = state[0]
for i in 0:7
next_day[i] += state[i+1]
end
state = next_day
end
return sum(values(state))
end
function p1(input::Vector{String})
return solve(input, 80)
end
function p2(input::Vector{String})
return solve(input, 256)
end
@aoc(2021, 6)

16
src/day_7.jl Normal file
View File

@@ -0,0 +1,16 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
function p1(input::Vector{String})
pos = @pipe split(input[1], ",") |> parse.(Int, _)
return minimum([ sum(abs.(i .- pos)) for i in minimum(pos):maximum(pos) ])
end
function p2(input::Vector{String})
pos = @pipe split(input[1], ",") |> parse.(Int, _)
return minimum([ sum(sum.(range.(1, abs.(i .- pos); step = 1))) for i in minimum(pos):maximum(pos) ])
end
@aoc(2021, 7)

53
src/day_8.jl Normal file
View File

@@ -0,0 +1,53 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
using Combinatorics
function p1(input::Vector{String})
count = 0
for l in input
digits = @pipe split(l, "|")[end] |> split(_, " ") |> filter(!=(""), _)
for d in digits
for i in [2,3,4,7]
if length(d) == i
count += 1
end
end
end
end
return count
end
function get_digit(i, o, digits)
for permutation in Combinatorics.permutations("abcdefg")
dict = Dict([[x, y] for (x,y) in zip(permutation, "abcdefg")])
if all([ x in keys(digits) for x in map(x -> (join(sort([dict[y] for y in x]))), i)])
return parse(Int, join([ digits[join(sort([dict[y] for y in x]))] for x in o]))
end
end
end
function p2(input::Vector{String})
sum = 0
dict = Dict{String, Int}(
"abcefg" => 0,
"cf" => 1,
"acdeg" => 2,
"acdfg" => 3,
"bcdf" => 4,
"abdfg" => 5,
"abdefg" => 6,
"acf" => 7,
"abcdefg" => 8,
"abcdfg" => 9
)
for l in input
i = @pipe split(l, "|")[begin] |> split(_, " ") |> filter(!=(""), _)
o = @pipe split(l, "|")[end] |> split(_, " ") |> filter(!=(""), _)
sum+=get_digit(i,o,dict)
end
return sum
end
@aoc(2021, 8)

61
src/day_9.jl Normal file
View File

@@ -0,0 +1,61 @@
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
import .Aoc: @aoc
using Pipe: @pipe
using Combinatorics
function lowpoints(map)
low = Dict()
for x in 1:length(map)
for y in 1:length(map[1])
adjacent = []
for (i,j) in [ [x+i,y+j] for (i,j) in zip([0,1,0,-1], [1,0,-1,0]) ]
if i in 1:length(map) && j in 1:length(map[1])
push!(adjacent, map[i][j])
end
end
if map[x][y] < minimum(adjacent)
low[[x,y]] = map[x][y]
end
end
end
return low
end
function p1(input::Vector{String})
map = [ parse.(Int, collect(l)) for l in input ]
low = lowpoints(map)
return sum(values(low)) + length(low)
end
function search(map, pos)
q = [pos]
v = [pos]
while length(q) > 0
c = popfirst!(q)
h = map[c[1]][c[2]]
for p in [ [c[1]+i,c[2]+j] for (i,j) in zip([0,1,0,-1], [1,0,-1,0]) ]
if p[1] in 1:length(map) && p[2] in 1:length(map[1])
if p v
h2 = map[p[1]][p[2]]
if h < h2 < 9
push!(v, p)
push!(q, p)
end
end
end
end
end
return v
end
function p2(input::Vector{String})
map = [ parse.(Int, collect(l)) for l in input ]
low = lowpoints(map)
basin_sizes = [ length(search(map, p)) for p in keys(low) ]
return prod(sort(basin_sizes)[end-2:end])
end
@aoc(2021, 9)