diff --git a/resources/2024/day19.txt b/resources/2024/day19.txt new file mode 100644 index 0000000..d0f7ac5 --- /dev/null +++ b/resources/2024/day19.txt @@ -0,0 +1,402 @@ +gurwuurg, ugwrrbuw, ubr, bbrurww, wgw, rgwuuugr, brg, wuw, brrwwrr, bbu, bbur, wgruwuug, uurrg, wbrg, gruurb, ub, gbur, gbbrbb, gururb, uuwr, ugbb, uwwru, wrurg, buu, brw, rgbr, rwwu, uru, ubw, gru, wbgg, urw, gbbbbr, buuu, rbrrw, ubwb, gbu, bgb, bub, gb, wrbrrw, gwbwbr, ggr, ruuwubr, uuwub, rgrbr, brwb, gur, wgwgrrr, wwuburwr, wwrr, rurbw, wu, wuwbgr, buwr, u, gggb, uwuru, wwwrwg, bug, gbg, rbb, wgbbub, urb, bwrgu, rrb, wug, uuw, guurbuwu, ggbw, wbugu, wguwgwg, uuu, uurggu, wrrgw, wbuu, ggubu, rgb, bguw, rgr, bur, wguu, rurgg, ubbrw, wwbgbg, rgbwrwr, gguwrg, wgrg, bg, buwguwu, rgu, gwrguggg, gww, brb, ubburbw, gwr, wur, gbuww, bgru, ubww, wwu, wwubw, ubbrrg, wuuggwr, ugwbug, brrwgbur, bggg, rbgr, rwgwgru, ug, urbgg, wru, rgg, rwwgr, rugw, guuwb, wbbw, bgwb, gguburgg, bbb, uwr, gug, ruu, wbg, wbw, brwuu, wb, wwuuw, rbwwr, bgwurr, bgw, ruwgrgbr, wgr, buuwb, wbub, rwbuwu, bbwu, wuruwwb, gugbrug, uug, uwbr, wggbwr, gugbbgu, gbwr, rrwg, grubuwgw, ugruurug, uwbg, buw, wubrrw, wugrgr, ubu, urwr, bbg, bbrr, bggurw, ugru, brbrw, bguwug, wrrwg, wbb, grg, wr, uur, wuruwwwr, rbg, bbwwwr, rwbu, ggwuu, bbrubg, gwww, bwr, bwb, bbbg, wgrrwww, gw, rrbbb, grub, rbbu, ugg, wuwrg, wgug, rwb, bbbub, ru, bubu, bwwubbb, gbbgbbw, gwg, ugwrwr, grwu, bwu, www, bwur, grbw, urg, wuu, wgu, brr, bb, rrr, urwruw, bgbbrrg, rbr, rruwu, wrb, wbwu, bgu, ggu, rwgb, wwbgbb, rb, ubb, rrbrg, gubu, wg, bgggr, ggw, rg, wgb, ugrrwru, bbruw, ugwg, rrwr, rbbbgr, wwg, rgwuu, bbbbwrw, ubgwbub, gwrww, bruw, gbr, rwwrg, gwur, wgbwbu, uggr, gwgr, uburwr, uwgubgr, gugb, wwruu, ggww, rbbguu, uwb, gbru, wurw, gwwbbr, gbwubu, wubbu, brbw, ruwrg, bgrgr, wbu, bwbuw, gwwgb, bggugu, ubrgug, rbrg, ugrgruu, bbrw, uggu, wgrbw, gbrw, bbbgru, bwuggu, wrgruw, wbwwur, rgbbbb, rurb, bru, gwbggg, wub, b, bu, rbgug, bbw, uwwuru, wggbw, gurrrgu, ubrg, grw, ubgw, wuwbbb, ugr, ubwwu, wuuggugu, rbuw, wbbg, uwwbg, uwg, ugb, wrw, rggbww, wbbgwb, gr, uub, wbuugwb, wuwww, grgwg, rrbb, ggg, gbuu, grr, bwguwuu, bggub, bbww, bww, ggug, gwgu, uuuub, rwu, wgubgg, uwwr, urbr, guu, gwb, burrubu, uwggr, gwrw, rwrbbuu, rru, ruw, gbw, bgrrg, gbbwb, ugu, rrg, wurwwb, ubg, bguwu, bbrgg, wgbrg, bruwrr, gbrrrru, guuwugbw, bwbg, wrg, rww, uubrbw, uwgwbrru, bwwwgwg, rgggb, rbrb, grb, wrbu, bgg, rbgu, wuurr, wrugggu, rug, rwubur, gburb, bbggu, gbuugr, rubr, bguu, gbbb, rgggbgr, rrrbugw, wgbug, uwu, wbwww, bbwuu, rgw, uw, urr, grrrw, rurg, wuru, rbugu, g, wgwbwgr, gub, ggbgrbbw, uwww, bbru, ugw, bwurbw, bggwg, gwu, grug, gwrbu, uwur, brbuug, rbwrwwr, wbbbw, rwuww, bbbbwru, bubbrrg, uww, ubrubrgb, wuwu, uwugw, urwb, rgwu, gwwg, wrbgw, rrbruu, rub, gwbgb, bgr, r, ggbb, bwg, ur, gwrwgb, br, ruguu, rwgru, uwwwgg, rrw, gu, wguuub, guw, grbuwgw, gbb, rbrwbgub, ugwwb, wgg, rw, brbbub, rwrur, gubbwbu, rwg, rwrww, rwru, rbuwuur, rbw, uuwggg, wrwuuwrg, uggb, wbr, wrrb, bw, wrbbw, rur, rr, rwgw, rggrgg, gbbggr, wbbgr, uwbb, wubuwwb, bbuw, rwr, uu, bbr + +gwwwgrbuwgrbgbwubrbwguwgubrwwurwrbrgwurgwgguww +wwbwbbwubrbruubrwugurrbuuwuuwbrguubbwwbugbbgu +gbwrrgruuurugwwurgwguguugbrggbrwugbugubuggu +uwbrwbwubwbrbgbugubbugwwgwbrrrwuurgwbgrurbwbub +ggwgburrurgwubwbbgrwuwwwwbugwrubguurrgrbbrwrggbrgwwg +wwbbguuwbgrgwbrrrbggbrruuwrgbwgbrguwugbrurwurwwgruuubgwgw +urwwbggbwwbwrrbrrbwrggrbwgwbwruugbrgwbubbwurbuggwu +wwggwbwbubggbbuurrgwgwguggwwgbbuburubwgrwwuwgub +wwrwwrgrwgurgwwbbgruwbbwubgurgrgwwgggugr +uwbrwgwggbgwwuuurggwruguuubbbubuuggrbbrbugwguuwubg +brbrgguguwubrbgbuwgrrbwwbggwubbugbrguwwrwbrbubbbwwruubrggw +burwwuwbgbwuwbuuwguwwrurgrguuuuruwwwrguwrg +wwbrbbrrwrgubguwruuwbguwbrbwuwubuwrwbubrwbgwugguwwrurgwgr +wwrubrrwgbwrubburggbwuggubrwwbrgwuwbubrbgrwgbbbrgw +wwruruwbgbuwbrburwbwurrrgrgbbwrwrrgrgbbgurbrgbrww +wwrbrbgwrurrugbuuwwrwrwrrurbubbwuggwbrbwruburbuugbwrb +wwbwugbggwbbbbbuubgggwwrbbbuuubbgruubgwgbburbugbrrb +urguwwggbbgbggwbguuwgwgbgrwbbwurbwwgbrburbbwurgwwwbbrrggwu +wwbugruwrrggrwugwubwrwgrgbururrgrrgurwbbu +rurrrbgwrbgrrbbrwwwwggwgrwbugwwugrgwwwgrgbub +rrbrburgugrgbrwuwgwgbbugruuguubwggrbwrgrrgbuwwurrbrrbrwbw +uubgbrruuurgrwbgrrgugbwuugbbgurwgbwwwugbbgbguuwwwuwgbuugw +urubbbbbwwgrugruwwwurrguwruwrwbwrbrbubuuugbr +wwbrbwrrrgbbbuwbwbuugruuuwruwwugrbbgrgburbrbugbuwggrrwugruw +rgwubugrrbuwwuwubbbuwwuwrgugubrubgwrgrwrugugwr +wwbrgggbggwgwbbuguwwbwgwggwwwguuuwgbgbrurrugurgbrubuw +wwrurubwrrbbgbrurbgbwuwrwuuwrgrwwgbwrrwrgb +wwrgbrbugbwugbuwgwbbbrbrrguggwwwbgrgbrubugbugbrgw +gwbwbbggubrgbrruuwwrrbubbbbuwbbgwubuwrwrurww +wbgbgbbbbugbugggurbwuuwrbgrbbrbrrgrugruwrbwubg +wwrgwbrrubguubwbbgrwbgrwgurrubbuugrbrgurgb +wwrwrrubrbbuurwrubwrbbggwbbbgbrbuurwbrbuuwwgbrurur +bubgbwwuubwrwbbggbruwbwwwbwwwgrwrwbggwrrburguuwwwwr +grwgubguuwrwgubwbwwbgwwbbgbbrbbbrgruwuuuwubrrbgruwuuugr +wgrggbrbwrrrwuwwgwruuwgbrrggurbburwwggwrubugwbrbuwr +wwbgbrwbgbwwuuububrbguggbwrgugugwguwubuwgruub +gwbbgbubwwwrubggwbwwrrrbbggruwuwugurggwwgwbruwgubguub +urbbrgrwrgrwwwuubwwbwbgbbrubgrgwruwggbgggbuguurb +uubgrguuwggwrrbbgbbrurbbbbwburbbggwbbugrurrbw +gbwgwwrgwurbruwubuwgrrwurgbuugwbgruwubwrbubwgrg +rgbgggwgbubrggwgrbrrrurggrbbwrgruuwgrwburgur +wwrbrbubbrgrrgrwbbbguurbububwgrwwgguwwgwbbwuuuwu +gbuwwwbubwwggbwgbrggrguurwbbbwurwwggguurwbbrubbrbrub +wwrwggubbgrugbbrubwrguwurgwguuwugbwbububrwubwuugb +wwbggbgguwrwgubggububwggbwuwubgbugubrgrburubbgwrwgrwgb +wwbwrbrwwbrwrbuggwguwbuuwbububwuggrwrwrrggbuggwub +wugwwwwbwrbggugggbugruuurwggwwuuwbwwwbbrwwuwrggburu +ugbrbbrrgrgbwugbggbwwrubwguwuwwgbugrgrwbgrwrwuububbrrgbg +wwbguwggbbbrwgwugrrwburwgwrwwugwbwugrubruggrbwubgbwbuw +rbggbgurwuurgwwwuwwubgbbruwrwrbgbbgrwuugbw +wwrbbrggggwrrrbrbuuurwbugrggrggguwwuuwggwbu +wwbbguguwguuguugbuuwgbrwrggwwrbgwbwguuruburwuuuwgubrugrwwu +wwbwgwwgrrwububguwuwrbwguwrrgwubrwwugbwwuruwwwr +ggbugrggbbwrubburbgrrrrwugwbruwrruwbuugwuwg +wbburwgbgbbwrrrubwwgugrwgrurwrbrbwgurwubwggrwuggru +wwrwbbbwrrurrwbwrgwgwbuuugrrubbuuwgbggbuwugrrwwg +wwrwuugguguugubbwrwwggubwguurggbgbgwgugurwbrb +wwbbuwbwwrgrgguwuurggguwurbrgwwubuwurwuubgbbbbg +wwbburruwgbubwrbwrwwuwbggbuuwwubrwbrwwruwugugwbrbuwu +uggwgrgbwbwgrgwgwrrrurgrrbuwgrbwggrbuwbwrrrwg +gugrgwrwrrrgwguuwbburugbuwugwgbrrggwwubbguuuggrubguubugrb +wwbbrwbbbgbuuwgugrgwuuugrrurrrwrbubwwwguruuubr +wwrgbuubruwggruwgbubrubbwwubuwrubrgrrwuuuwgr +gbwwbwrwbwgwbwrrguwwrwrubrwgwbgrbrububwuwg +wurgugrgrwuubbrrgruwrrggwrubrggubbrgbgbgurbgb +wwbgwbggrwrgrrgwrbuurgrgwburrrbguuuwguwurbrgg +ruwrrwrrwwbrgguubrbuwbwbrwgwgrrurwbgwrguwbugrbbwwwb +bwwbgrurbrwrbwuubbubggruwggwuwuuruwrgurbugrgbwuu +wwbwurrruwwgurrwrwbwugwwwbggwwwbrrrgugrgbbrbuuuwgbwburw +wwbrrguwuugwuugugguuwwrrurwwgwbggbbrgwuwuuwuuwburrbrgurwu +brrrwrwurwbbwggruguggbwrrrguurbgguburggbgwwgw +wgburbbbbgugbugwruwbggwwbbugwbbrrguuuwbwbggbr +wwbwruwggbbbwwggwwuwrgbugbwrgbbwgwrurrrugruuwwuguurbubb +ggrugrwubwbgwgruuuwgbggguwwwgbgrwggrrrggwgbrbwgrguwrguub +urwugwgrwbrbrgugubrrwgwwuwugbbggrrbwgugrwbwbrubbubgbgbggbb +wgrwuuuugubuurrruwwwbrwrbbuwgbubbbbbwwgwbbrbwg +wwbbwwwgrwgbbubbwbrrrrggwuwbrrbruwwwrrbgwrugbw +ruubrgwbbrruuubgwgurbrwrgrrwbbwbugurgwgrrguggrw +wwbruuugbgbwbugbgbbwgbwrwguggruurwbwwurggwbrurwwuwwg +rrwgrgwwurggbgrbwggubguubgwugbgguwuuwbwwggruwrru +uuwgrgbggwwurrrbbgggwububgrbrurbwbwuuwbwggrbuwuwbu +rrwgugbwwurbgbgrgwrbbbwuwurrbuubbrgwgugrbbuugggu +wwrwgwbugbwgrwbugwwuuurbrbwgbrggrrbwrwwurrgrbrggbub +ubwbrwbbruburrgwuggguuwgwgugbbuburugrugwrggugbrr +wwburbuwwggugbbggbuugbwbrggrugrgrguuwwbwrbwbwwrwwgbggwb +wwbbguwbrbwrgbwubbgwggwgwggwbugrrrwrrbwgurgb +brrbbbbbgwgrgggrrgubrrgbrbrurbgurgwbwwrgbgrubgbgrbuuurbg +gwgbubbrrurrruwrwrgggbbrugrubbgrruwgrrgrubguubgwbrgwwwgw +wugbrwuuuugrbuwrggrubuwuurrbuuuwuggrbuurwwubuurgbwgrguuw +bwrgrgburwwwurbwgrrrbuubbwrrbbugbuugbugwrbuwgub +wuuuuwbgwgugbbgrrrbwugrwrwwgrgrrubwwggurrrugg +wburbwgwubwgwggwuuurgrgubwuwwugwrwwrbgbbgrgwwbuwbrrub +wwbwubbrgbgbwrbwruwbbgurrgbruggrgrubbbuwgruugrrwr +wwbubbrggrggbrguuwwwbrgbrrwbuwwwwububguggwrrruggwbbuggwrw +gbrwggurrwuwrbrrwgburwbwgrwbbuwrwbwwrubuuggguugbug +wwrwwrbwbrburwbwrurwgggugubwwubuwrburgguguwgbb +rbuuwwrwwgurbwbugwwrgwbbrwggbbwbwrrgwwgrbrwubww +bbwugugwrguubrrwbrgbgurgbggbugwgbwwrrgbrgugrbrrgruwrrr +wwrbrbrguurbuwuwurrbbgwgubbrrbbugrurwbruwbwwrrrgwwbggbwuwr +wwbgurwrbuugbggggwwugwwburbgwbgbbbrbwbrwg +wwrgwburruwuwwrwggrwgruwwbruuwbgrwgwrbrwbrgbwggw +wwrubuuuwwgwwugwubwugrggwuuugbuwgwgruuugbwwwbwguwugu +wwrgurbwurbbgrrrggurrrruruburbgwbrgbuurbu +buubgwugbugbbbggwbbwugguubbbrbubgwrrguguurgbb +wgrrbbggrbbrgrrwwbuuugrrgwwrwbgubbbwwbbgwggwu +bwgbgwuruubrbwgrwrgguugrwggwgrwrwbrwrurggbu +wwbrgbwuuugubrurbwrrbbwgwrgbuwwwwrbrrwugurggrww +wwbuwwbubwbuwbgrwbgguuubbuubrrwrrgbgrbbbbrwbuugbwgg +gurrrgrgggwrwrwgbuwuwwrwwuwwugggwgrrrwuuuwwgrgwuuruguubb +gruruwbgbrruwwbrruururrgugrgwruwbgwubuggguwurugg +wwrgrwrwrrgbwrrwrbugurwbuwwggbruwrggugubrubrbubbrggbuu +wwbwuwgbugrbgugrruwuruguwurwruwrwrwwrrbrb +brgbbwggrbrbuwgrgbbbbrrwwrburuwgwuruuwwuuubb +ruugwuggrrwgubguwuruwuruwuuuggbuwrwwbubbrugbrrwgbrbrwbwuub +rbuuuuwbggbbwbrwrgbugwruugurggwrgbgbubuuugggurrrbwwuurr +wwrwwububwgwwwbuuubwwwwwbrgbbbwubgugrwrurrwwubu +wwrbuburwuubgwrwgruubbuwrbbwugbbwbbubgwgwrgrbwrur +gbbbwbwrrwggrbguubbrbgwbrubwwbbrwwbubbwubw +wwrwurwwbuwwbwrgrwwgrwrrwwrwwwrrrwwggubbwwbrwwugwwgrurwggbbu +grwugrggbrrggwrwbwrrugrrgbgugrwrrugubugbwrgwurbrbrrgbbgw +wwbrrrbwwgbbgurugbrrwbrugwbuurruruwubrgbgwgb +wwbuuugbgwubgrbggbuuwgurwgurrwubuwbruuwgbwwguubwubb +wgbbgrbrwbgubggwrwwbuurugwrrgbgbwubgggbbbbr +wubrwwuggwgwrrbgubuwrwubgwwuurbwrbwrugrrgwbgguugrgu +wwruwwgbbuuwbuggrrrgburubrbbwubwwwgugwgwww +wbrgrrbgrurgwrugubgwrurbrrrrwrbwrggurrwubrgrurbwwurbrw +wwbgrugurwwbwuguuuubgwuguuurrgwuruguwwbrbwgggwwbbbbbggrbubrw +wububrbrrgrruwwwrburgwwwgbggwburwruwwwbuggbrbrwgwruggbrbb +bwbbuwuubbgbrbuggwuwbbbwguwrwwwubuwrggugurwrwwugbgurr +ruguubugguuubbwbgrwuwgubbwggwbwrgrbgbwggrbgbrrgrbwug +wwrgurwuurggubgwwwgrbbuggwgrbbgguwbgwuwugw +bubbrwwwubbwguwuwrgwrrbrbgbbwwrgruwruurguruwwbwwurr +rbuurwbrbbubbrubbgburwgurbbgrrubrbbbgwubwuggbwgub +wwrwuwruwbwgwgwbubugwruugguburggbbggbruwgwg +wwbgrrbburwrbgwwuurbrubrubgrrbbguuuuwwgrbwwgrwbwwwwgwbbg +buurrurbgrrwbrruwbbuwwrbgrugrubbwwrggrgbwruwwuurr +brrrwgwwwrbgrrbuuggwrwwgbbrrgwrgrrggwggbguruwwgrb +wwbwbuubrbwwwuugbbrbruuwgrubuuwubrbbbgruwwrbbrbu +wwrgrrgguubrbuwbbugruwgbgrrwggbbbrubgrrgbgwbbbr +bgwuubguuggwwrwgggurwgrgbrugwguwrwgwurwggbgwwugrgg +wwbbwgrbrwggurbrrruwgrgbrguggrbggbbuuuuwgwrbwgwggbwbb +wwbrwwwguwbwrbbwwrrruubgguubbubbggubuwggwuur +wwbwuwwgwwwwwubrwrugrguurrurgburggbbbbuwurguubwrrwr +wwbwwrgwbbrbbrrbugbwuwrubgrgbgwbrwrwurwwbrruwguggwuwgbb +wwrbrrbrggbwurwbbuwbbrbggwggbuurbgwrgugggugruuwguwubguubru +ubgrggwrgwburugbgwgrbwwgbbgubwgbwwrugugwbbbrrrrwru +bbrubrgbwgubbbwbugwgwurwrburwubgbgrubbwbwwggrbbbggwrruu +wwbggurgwbggwwubbgwuubbbwwgrubwuurwuwuwbuururbwb +rrgwrwuwgrwgrgrurruuuugrrbbwwgrubuwgwgwgrrbw +wwbrubwwwuuuwgggbuurbggrgwgububwugwbrgwrwuguugbbugwubbgr +gurggbgwuwrbbrrgruwbgrgwuuggwbrgubbwbuuwwrrgggrgwuwu +bggbruugubbwgwbwwgggwrwbwwwwbgrubwguuuuubgr +wwrubruwbuuwuuruwwrrgwwuruwwugwgrrguugggwwurguugwgrggwurrwr +wwbubwgurgggrgwrrruwurbrwubwubgbrgubgbuuuuuuggwgugw +wrgwbburwgbubgurugwugwggwwuubrubrgbrbggbbuuu +rwbbbwgurwbuguggbrugggwguuwrgrbwuwbuurggggwbrgg +wwbwrgggwbbwuurgrubwwggrrrgurwggbrgrubbgrgbwwbrwwuuubu +rrwguuugbrbugurwgbwwwbrwuwbrbrguruggrrwgbgrugrwbgurw +wgwwubuuwwubugbrwwrrgwgwruwwgrrrwurgwggrggbrubgwwgrrrwbw +wwuwwrwwrwwuggugggrrwgrrggububgrwbwwuurubwgbgguugguurrg +urgrgwrgbuuuwbgrgbuwbubuuwrgbbgwrgwgubggggbbgguuubgwbbwrr +bwrbbgububugrbrwbwrgurwrgwrrbrggrbrggggrrwgruguww +brbrrbgwbuwgububwuuggruubrbwugrgrwwuwrwwww +wrrwrbwruburbbgbguuwwwrwbgubwbrgrbggugrbgrbrbbubuwwgbwbww +wwrwrugguwurggubwwbuwwbrgbbwuwrrgugrbwrwrbuuggugww +brrrurubbgbwuuubrwrrbuwubwgwgwwwgbbrwrgurgrbggrgbwr +wwbuwwgbbggrrwgggggwbuuguwugubgrbururwrbggugbwwwb +wwruruggrrrubwrgwbrwwuuggrrwbwuwbggrbuguurugu +wwrugguwrbwuruurrurggwrbugrubggbbrgwbrruwwuurrguwubwgrwwuu +grrwbubggrbwgggrrbbgbuwrbrugwbugguubgubugwbwburgbwgwu +wwbrgbgbubgwbbggbwgburbwrbuwwgbbuguwbbgurruwbrugrrguuub +wwrbrrrbbuggbubrgbgubuwuuwbgugwgrgbrwbwggb +uuuugguwgrrwwurguwuguuwugbwgggurgbwgubrbggbgrgwu +bugrbgugwurgurbwbrgrrurgggurgwbgrrugwurwguggur +rgrgrwwrubrwrurugrbrwwrwubruwuwbuurrbrwrguruuuuru +wrrwrrbgwrwgggbwuwbuugugwuurgurbbubgbubwuurrwgrbubgwugww +wwbrrgrbggwwwgbgwbwbgrrwugbgwrrrgbggrgurbggrurwrrbubwrg +wwbrgrrrggguuruggwruuuguguguwgrwbrubgruubr +bugwugbwwrrbruguggwrwbubggwguggrugrrubrurwgwbbrw +wgwuubwwwurrrbwuwgwruuurbbrwwwurwrrbruwbgrrbubrrwwguuuwug +wwbwuuugwugugbwwuggwurrgrbrrbwwbbgwrrgbuugrrrrbu +wwbgrggwbgrurwwwugwrrbwbugrwrgwbgrbbubrrgwruwuubbwrwurwb +wwrguggbuwuwwbwbbbbubrgugrurugwgruubguuuw +wwrbbwruwbgwurububgwbgbwuuururrrububgwuu +wbbwggwuwrbgurrbwwgwwrbgwwwwbbbrbbrbuuuwbbrrb +wwrrubbbrgbgguwggwgbuwrrwbguruwuuwburgrbwggb +urgbwgbbbrbwgrrbgbggbgwwuurubrbbuwrubggubgruugbbrbruwur +wbgrrguwrrgwuuwbwrrrwggbgrbbwruuuwbbbruuugubgrw +wwbbubuuuwguugwwrguubgbwbwwwwuuuuwbuubwwbbuuuuwgwr +wwrurbugrwguwwbrrruuurbruwbrwwwwbuggrrruwbrgrrggubwgggguggb +wwrwrgggrwurgurgbwbggrwguwburbwbgbuuwubugwbgww +bwbuurrrbrwgwbwwbrbguwgrburbwbbwrurwruwrgrbuwrgbbbbgg +wwbbuuuubbbbubwuwuwbggbwgbwubwwbwuggwwgwbrrwrugwu +brwbbwurrguurgbrwurrwrubbbruguggbbbgwrggrwgrbbgu +wwbbwwwurrwrgbubruwbgwwgrwubuuurugggbwwrggubbbwwrrwr +wwburggbbgwwguwwrrbwbbbguwuwwbuwwgwuggwwwwwgbrbrgbgbbbuug +wwbuurubrrbgugwgrbbrugrruuwbwrgwuwbbrurwurrwgrrwww +wwrbgwbrugwruwrbrurugbwwurrrbrwbgubbggrbrbwrwuwgbb +wwbguuwrguguwubgrbwburguurgwgggrubggbubgwwwbuwgwbbb +ugbruwgrgbrbruuburwugwwwuwrgrugubwbubbgguruggurwrwwbwrgrgg +gubwgwrugurrgrubguurwrububbrbrbbbrgbuugbwruwubwgwrbrgbwrb +gbwwwwwbwrwuwbwwrrbbrurugbuurgrrubrgrwrrbrbwuwruwugu +rwgwbrrbbuggurrgbbuubuurbwwugwrrbuwgubgruwrr +wwbwurbggrugwrrbrbbubwwbubrurwubuuwrwburubuu +gbgugwugguggrgwgrguwubuuwrrugwrbggbwuwurrbuuugrbw +wwbwgwuwbrrwuurgugugbuguruubguguwuguruugguwgubbrrrgbg +wwbburgbwubgwgugrwgwrrgwbrgwgugbwrurwrwuwg +bbugwgbwruggruuwwbrwwwrwwgrwgrbuuguwgrgubrwrggururwwwu +wwbgrwwwgrbwuwggbwbgrugrurgwrwbrggwrwuwwbgugbww +wwrugbuwwrwruburubwbrwugwugubrbgwgwrbwbguuwurbguwwbuww +rwuguugbgurrrrwruwrbubwgbbugbuugburwurwrgw +wwbwwugwbwuugwuwrubrwwbrwbrurgrbbuugubbbwbgbrbr +ubuuubgwbwrggbrrwbubwgubwwwguwggbgrurubbrbrbggbuuubw +wwbrrbgrwwbgbbrwwrruurrubrrgbuwwgwwgurwwgu +gwuwbbbbbuggrurwbwgrbwwbbgwgrwugwbwrrguwwrwuuwgru +uggbuwrrbbwgugrwgggrgubrwurgbubugwurwbwwbbrbruwrugugbbrb +wwbwgbubbrbrwrwuwwrgbwgbbwuugbubwwgwrggwbgwwgbbubrbbr +guuugggrgbrwbguwgrwgrbgrwwrguguwbrgwrgwrubwwbbugrwwbw +wwbuguwrugubuwgbwwgbgrbwuggbuwwbgbbuwgrbggrwgwbwwgbggrurg +wwrgbrrrgbrrbrwgwwuurrwwwrubrgwubgruwuwrgbrurgrbbbwwu +wwrbbruwwrruggwbgurwruwrgburbwwggggbrrbwgbgrgbruwwwrrwbguubw +wwbrrrurrruwbwbrurwwbgubburwbbgwuugubwuuwbrwwwu +wwrgbuuuwurwrrggrwbwgruggwuggrrrugbbgruguubgubgbrwwrr +wwrurwgbrwrwrrggugrrgbwggugrggbuuwwgurwrwgrurwuw +bwuugrrwrgubwbrwuwgrugwgrwrggrwrugwgwbwbwwrruugbwrrrgbwb +bwgruwbruruwrwuuwrggbbwgwbgbugubrgurugguguugwwbbwurbw +bbrwwgrbgwrwbbuuwbubwgrugggwruwguubggggwugbb +wwburuuwuwgbgrbbrgwurbuugbwgrgbwbgggbrrwgrrrr +wwbuugubrgbrrwbuwuwubbwrbbuburgbuuwgrugrbrggbwbgubru +wwbbwguruurrgrrggrrgbrrrbwggrggwburwuurbbbbwwgwwbu +bgubgbggrrgbwuuuugrburwwwwugwgwwwwrrbgbgwwugbuwgurgg +wwbwububrrwuwbbuubrwruwwrurbggbwrrwrgwrru +gubwgrbrbbugubwbwugwbruuwrbrgbggrgrwrgbruwrugurbgurb +wwbgbwuwggurrrrwburuwuruguwuwuwwguwwuurbgwuwrugrgugbgg +wwgbuwwuuruwurbwgrgwguwgbruwuugwwbguguwgbuuugrbbrubwrwbww +wwbwwgbugrwrrggbrrubgugrrrwurrurugwuwbbuugrbgg +wwbgbrbwrgbbggrgbuwgwurggwgurwwubrubgrbbgwwg +wwrwrwgwgwuggrgbrubgruugbrgggwbwrgbuwwbugrbruuuubgrbrgwbbg +gwgwgwgguwgbuwbgwwrruwuwruubbuugrwgbubbbguwwubruuwbbrww +gwwbbuugwuuubgrurgbwwwubuwuugurugrrgwbrwbbwgrbrggubub +wwrburgrwuwgrwwubbbwwwbwgwbgrrurgrrrwwubbbbrwwuuwwrwubrr +gwwwugbwwgurbbwbwggurwrugwrbguwwwrrbgbubguburgwbgubuguww +bggwwubguuuwbruguuurbbrbgwguwwurubwbuwuuwgbwubrgrburb +rubrrrrwguugugurwuwwgbuuurbrggggwrgwwgubuguu +urbgruwwuwuggrrbwbugbbbrbgbrgbgwgrwrrubgbubwuuubggbwwg +wwrgurubbgrrbwgwrbrgwgbrgruwrbgurgrwrwrwg +wwbwrugrbwrugwubrwrbrubgrurwuuugrwrbwwbwwbuuwuurbgrrbbbbggu +wwwgwuwbuubwwrwbrggwwbwwubwuwbgbrbruwbwgrwbugbbrbr +buwggrrwrggggwguuwrruwwrrrrrwuwwuwwguggwuggrgurubugwugb +wwgwbbrwgrwugruuwwgugrrrrrwuwuwggwbgbrugrbrgg +ubbbbwubuuugbbbwgbbrgubwwbbwrwwuwgwbrruubruu +ubugugruugubrwuuggwrwrwrbbwubbwurrgwubrgbrguub +grwugwurwbuuuwwuwwgubruwuugguguruurrwwbuurggb +uwguuwwwugrgwrrburbrgggbggrgbgubbubrubbruggrwbwuw +wwbrbgwwwrugbbwbgbgbrwbrwrggguggubgwgbbbuwwgwuwuuwwwgrurb +wwgwwbuggbrgugbgugwrbbrwbgurruwubwbwgruuuug +wwbrrubwbwuwgwbrrugwbrurbwbuubruwwrbgwgwrgugugwr +wwbwgwbgbbwbggrrrbrgwrwrrrurbuwbwwrugrwwguurbbrgrb +ugwuruwwwrwwrbgrubgrwgrrrbgbbugrbubbbgbwbgbrbbbggwwurrrg +wwbwurbrbggguwbbwuwwugbbbuwbrwurgwgbrgwwbb +wwrubwurggwbwugwwbgburuwbrrbrgubrguurbrrugbburw +wwbrbbbgrwgwrurubrrubgwgruwuuguubrbrrgbg +wguwuugbbbwwruwbrwgbggwbwgwugrgrbwbwuuwbggbbuuruggwurbuwwb +wwbbwgbrbgguggubuggrrrgrggwbbgwwwbbugrgwgg +wwrbgbuuuwwbrugurgubrgrrggwggwggrurbgguuuugbbuwrwu +brbrwbbwruurrbuggrubbbrruuuwgwuwgurrbbgwwrrbuubrrrwbwubggu +wwbggrbbgrurwbrbwuwruwbuwrbubggubggrrurbrwgrwrr +grwbbbrwgrggrrbbguwwbguwbguruurrbrrruuruwurwbuggu +wwrbgrrurrrbrgurugggwwbuurbgbgrburgubwbwgrgw +grwgubgurgwrwrrrubrggrggurbwururwugrubwbwuurgrurrgggr +ururgguuuguuurrguwgbbrwgugrugwubwbwbugbwgwgg +bggwwrguwuwrwurwbuuwrbbrbgbbruwrwrubgbgbrrrugg +wwbuwgwwrrrubugwwwwrwbrwgruuwgwbgbwggwwgubwggrb +grbbbwwugguugbguwbbbrwuruurgwuwbwwwuuuwrggbrwbgbg +wwbwuwbgrrwgugbgbuwrbubwbrbgrbuwwuwrruuwuruugrgbuuggbrrb +bwwgwbbbrubrrgwguuburuwbwgbgubbgbggggwbwwr +grugbggrwgbburuurgggrbrrrbrgrrwwbbgrgwggrgbr +wwbbwbrrgwuwrwbbuwwwbuwgguuugrurbubrugwwbbguuw +uurwurbruwruguguurrbrgugbgrbubgrgwggwuguggwruuuwwrgug +wwbwugwwubgbbburwruwwbwrbrgrbubrbgbrruwwwbrww +rgbguwrggwuugbrrwgrbgurwbwwrrugggrubwugbbbuubgrrw +wbuguwwgwwwbruwrwwuuwwurwrubrbuwuugugrgbbrbrg +rwgrwbbuburwrbrgrrrwbbuwgubrrgwbgbbubwbwbbgruurbubrbrrgb +rgwrrwwbbguwgwwuguurbuwuurugbbwbwrrgwgwruww +rgururgugwwrbbbubrubrbrgwuuugbbrbrugwgbubgurbrwguwrrug +bgwrgwgubgruugurwruwuuwrbrwwgrrrwgurrubwbrgg +wwrwgbbgbuwrurbbgruubuwruurbbbgubuwbrbwggruurgug +rurrbwrburrwgugrugguruwbrwrwgubburbrbbggwgugwurbwwbrrrggb +wwbbbwuwguggruwgbuubgrubgguuburubbwwgbuwwgwbugubgrbbruwuugb +rubrururuwwrbwrbuurbbgburubwgbbrrwbguuubrwb +rgrubbbgguuubbggbgbrbbubwbrwubguuwbgbbuwugrrwu +wwbrbbwbbbwuuguwugguuubbbruwbbbuguurbbbbwgubrbrgwbwubwr +uugwgbwgrubgbuuggbuubwuuwwwgurwurwwuburwrbuwbgruwwgrbggbrw +ubbbuuuurrwbgrgrgwuubrwbwbbgwgwuwbwugggubwubg +rggwwbrbrggwwgrgbrrugwguurbgbrrrrrwrbwgburrggbgggbggrugur +uugugbubbuugggwruruurbruwggrgwbgwwruuuuuwgruwuugrwg +ugrwwurgwguurrbrwrbwrubuuwggubrburwggwwbwuggggwb +wwrggrwrruuwwbwrwwgubbuwbwwggrbruwububwrwuubg +wwbubgrbgbbuugwwguwbrrbwggugbuwbrrwrbrwbrwrbrwwwrbgbgguwg +wwbwgbwrwwrbruwwgwuuwuwgrugwguwugrwbrwgbrwubrrb +wwbwurwububrgrrrbwrbgugububgrgbwbbgbbrubbbrgbb +rrruruwbbuugbuguguuugubugwwbbgbwgrwgbwbgrwbrbbbbrwbbruurur +uwrwgrbggwwurwwugrgwuwrwbbrggwrggbwwgrbrrwrggwwu +wgwggwwbrrbwbgrgguuwwguubrrbuburuwuwrbgwgrwuw +rwgwgrgbggubwgrbrbwbbbgwwwrgruuurbbggrgruubbruuwrur +wwbwbwruggbwwgwrgugwwugruwbggwrwrgrrwbwgurwubr +wwrbbwguguguruubwrgwbwwgggugugbuwrwugwubg +bwgguggwguwwruggbgbuubwbbugrrgbguwurbbugrrrguggrrbbugurrbr +rwrrwguububwruguwgwwgruwuubuwwbuburgwwbgrugw +buuuubbggwbuuwgrbgbguwrwwgrgrbbuwgwrwgbgwwbubururwwgbuguwu +bwwwwggbrgurwwrgwbubuwuburwwururbgwugbgbrggwgrrurubr +wuugbgubwrubbrgguwurwwurwbgbgwwrubrbgwbwugugurrbrbgrwuwrug +wwrwwurburuwrrwbbrrbuwbubuugwuuwggbrbbwbuuguuwr +gruruwuuburguugwbbbwrguurbgwwwgbgggrbgrgbburgbrrrwrr +wwrgbuwgbwuwwbwgwbrgwgwwgbwgbuwggbubgrgbbrwg +gwugubbgrubrwrgbgwurbrrrgugwubrubrbuguwrbbgubgwurgubru +wwbuurbrrrurwwurwbrbrggwuguwwbrwgggbwgwbgrwbbwrwwgwrggwbgw +wwruwwrgbrrguurgwrrrbgrbwgwbwurgwrugrurgbbwbggb +gggguruubgbwbbgggrrubgwgrwubwggwwrwuugbuwwrrb +wwrwwbgwuurrurgwuwwuuwbbruwburrgbrbwggruwurwruuwguugggbbrgbr +rruubwrwgwuugwuuwbbuurgrrgubrbbwrrgbrurrgwgwugbuwuw +wwbwruuwgguwwubwwbubuuubwgwbbrugbrrrrbuwrggrguwwr +wwbuuruubbwgrggbrgbrwrgwguwuugbgrgugbbwguggururwrrbgwgrbbr +wwbbbwbbuubrggrrwggrgggggburrwbuurggugbgwrwrwwwrbgrb +ugrurrbwrggrgbggrwbugrrrwbgwrrrrwubbggwrwurb +uwgwugwururwbbwrgrrwuwgwrugwbubbbrwgrbuuuwub +wwbggrwwrwuurrurubugguuubgwwgrwbruubwwbrrwrbrgurgu +wwrggwbrwgggwugwgwbggwbrwggbuwwgrubrbburgbbbburgrw +wrrgwbrrwwbrrbwurgrbgwuuwgubugwbwuwruuwrrguwruwgbrbrrgrbw +gbrubwwrgwggrgwbwrbbgwuuububrbuuwuugururwrgub +wwrgbugwwrugbbuwubuuugbugggbrwbuwubwugwugwurgrwbgwurubuuu +wwbwuuugrwguwuuwrubugbwuugwrrbuwubwrgrgurwubrwguubb +wwbbbubruguggwbbuwrwbbruwggrwwrbrrgugbwrugb +wwrurbbbgguuugrrbuwbrwubrubrgbwgwwgguubwb +wwbrugwbubuuurbubwrbwbwrwrguggwrrbgbruurb +wwbgwrguuuuuwuurwrbbugrrugbuuggbgwbbbgguwbrrburbgggurbgbur +wwrurruwgubrgbrgguguuubwwrubguguwwrgrgruugbbrbubrbwrbggr +bubbrgbwwubbugggbwgrubwuuwruwrbubgrbbgbwrrrwb +wwrubbubugbwwbruugrwbgwrwwbwgrbrgwwbwgbgwuwrbubuuuuggu +wwbububbgrguwgwugugbgurgbbbruwwgwuwrugwwbbw +urwbrruwgbgubwurbguggruwbbrbwgwugwrgwrwuurubwgbbg +ubgwwgwbwurggbwbgrruggwuggrwbruuggwbbwwrggrruu +wgbgrggubruwgugrbgbrruwwgbbwuburwbuggwurwwguwgrgwugwwr +ggbrggggwrbggwgbwgwurbugwbgbwbrwrbwbrwrbgrrgguu +wwruggrrggguwwubbrrbrbrruwwuwgrwuuwruggubrrgurrwuw +wwbgugbwgbubgrruurbgrwrrbuugbggurugburbbwww +wwbuwwgbrgurrgrubbbbbbbgurggubwguwrgrwuuubw +wrwurbbgugbbgbugbwbwwbugbubwbgrubwrwurbbugguw +wwbbbbgggubgbgwggbubrugugurwgwwwbggbgugrrrr +wwrgugbbrwbrrbuuguubbrrubbwwgbggwbuwwwrggw +wugrbgbuwbubrruurgburuwgrwrggwurrugrwwugbguwgrbwwr +ugrbrgwbrrwbgrwwgbruguguwbgwrbgrurrgwrwrrwbgguuuugwgrbwuu +ruwbbguggbubuwbrwwgwbwwrwggwwububbrwrgbrgwugbuuwb +wwbubbuuubbbbbwgrrruggbwuburbbbruubbubbubbbwbuugbrrrbru +guuruubwrugbugubrrururrbguwrgwrbrwurbwbrugbgbwubbrbuwrrrbw +rgwwbwurrgbrwwugwrbbbbuurrwrurrbwbbwwbgbwwbwwgbuuubrbwwb +uggruwbbubwrrwbgrrwrwrwrrbuuwgbbrrbrurbrrguuwugggrr +wrrwburrgwuuugruwgrrwgbrbbwbrggwrwugbgrwbruwbwbrurrrrbbgwr +wbrwrgwuubruuwrbrbbgwwrwuurbbgwurgwwrgwrbgrgrgbugwbwgwrgru +rgggbrurrgwwgguwubgbrwbggwrguggguwrwrbrbgugrb +wuwgbgwbguwrrrgrbwrbbwrwrrrwurwrbwgwguwubwbubrwurburur +uurgugwgwrrbbwgbugwruwbrrggwburbwgrwuwbbguwwwgrbggurg +grrgrbwrbwbuwrrruuwgbgrwgwbrbuurwwbbrggwbgubuurrbgubburg +rbuwrwgurwubrbrrugwgwrrbguuwrubrbwuguwburuubbrwgw +wwburbugbbbwubgurrwwugwburwuwggbgrbbwgggwrbbrbburwwb +wwbrbbrwurgbbwggwgwwgurwrrgbrguuuuruwgwwwuburwrrbwbg +bwwgwruguuwurwrbwwruugruurugggwguwurbgwrgrbrgwrurgrgu +wwuurrrggbbbwgbbrugbuguwgwurbgrgurrrgwrbbbr +uwwbgrruwbuwgwwruruubgbgwrwwgurrrggubwruugwurururgurbubugg +rwwrrrguggwurwgburrgbrugubwuuuwgrgwrwwggbwbuwrgwbrgur +rruubruwwbbbwbwrgbuwgrwbuugbbgwgrrgwgrwguwwwugwrwwugrg +bgbrgbugbbrrbggbgwubgbugrbrguwwbgbrggrbbgbgrbuu +ggrwrgrurrrgguurwbrbgguwbbbggwrruuurbrgubrgguguuurgwwwb +wwrgburuurguwbgbbbuwgrrwwbuwbrubgrwrugubguwwubwwubrgwburgu +wwburubwgrbwugubbwubguurrugbguggbrgbugwur +wwbrgbwbuurugbugruurugubrurrbuwrwwuwrrbuugu +wwrbbguruwrwwwgbrgwgurugrbbwbrbwbrwbugwwubgwrb +uruwwbuugwwwuurwwwuwrguwuwrgbwrwrrggbwwugwugbrwbrrguwuuw +wwbwurrgrbgrrbwgwwggrrwbugbrrwuwgrwrrgrubgbrggwgruwwwwwbw +gwbuwgguguwbbbbubbbbgbbwwrwwrwbwgrbbggurrbrgrwwgwbbwbgrbu +grguuurwuwrurrgurwgubwggugwrwwbbwubbguugbrubr +wrwwbwrwwwuguwguwwubbbuuggwrgurrgugbwuurrbru +gruggrbwgwggbubrburgguguguwgurgwurruwbugggguwbrbbbrgwrwub +wururuwbrgruwrugubuwrggwgbgrubrrwbwrbbbbugruubbrgb +wwrubbwrggubwwrwbggwbggurbruwgrubuwgwgrbrugg +bbbbubbwbbwwbwbwbrwwwbwwugrrrguwgbwgwuuwrggwggbgbruurbw +wwrggwrbbbubwgbrgrbwgwubguurbrwgwrwbbuwbw +wwbugrbwwrgruurubrurrugrrugwbwrwwuuururuwburrwrwbggbrbbw +bgbbrugruwwguwwuwrbrbuwguburgbbubgwwgbwrwwurbrrwgubbgw +wwbgrbgwrgwrguwwgwwuuubwgbugrububbburwbrbrb +bbrbrbgwbwggbbggubbbruubwwrugugggbuuwrbbgbwb +wwbgrwrgbgburwwbrwgbuwbubrrbrrurrgrbwwwuwwurbuwrwuuwbu +ugwgbwbbuwuwwwbwwrurwbwrwuguuwbbbrgruuwwrbwbubb +wwbgbugbbubgwwubgurrbgrggwrrgwubuubwwbgrbrrwgburwrrbguw +wrrgbgrbwbuurbgrwbuwwwwwgurrbubrbbrgwururwbwbrwbgggrrrww +uwuugggwrbgrwgbuggrgrwwrwwgwgwrwrbrrgwbrbrrwrugburubu +bwbuuggrwguubbgggubggbrrbggbrggrggrwbruburgbwgbrrwwrrrbwg +wwbwgrbrrwwgbrgrbbwbbrbgwbgrubuurwwwgrwurwuwbggubwgwgburru +wwbrggwgbwubgwwgbgugbbugrgrrgwgugrrbwbbgwrbuwuwbubgrr +gwrbuubbwbrwwwugrruwuugggruggbwwbrwrwbwbbgwrrruug diff --git a/resources/2024/day20.txt b/resources/2024/day20.txt new file mode 100644 index 0000000..595dd55 --- /dev/null +++ b/resources/2024/day20.txt @@ -0,0 +1,141 @@ +############################################################################################################################################# +#...#.......................#...###...#...#...#...#...###.....#...#.............#...#####.....#...............###.......#...#.....#.........# +#.#.#.#####################.#.#.###.#.#.#.#.#.#.#.#.#.###.###.#.#.#.###########.#.#.#####.###.#.#############.###.#####.#.#.#.###.#.#######.# +#.#.#.......#.............#.#.#.#...#.#.#...#...#.#.#.#...#...#.#.#.......#...#.#.#...#...#...#.....#...#...#...#.....#...#.#.#...#.#.......# +#.#.#######.#.###########.#.#.#.#.###.#.#########.#.#.#.###.###.#.#######.#.#.#.#.###.#.###.#######.#.#.#.#.###.#####.#####.#.#.###.#.####### +#.#.###...#...#...........#.#.#.#.#...#.#.....#...#.#...#...#...#.###...#...#.#...#...#.#...###...#.#.#...#.....#...#.....#.#.#.#...#.###...# +#.#.###.#.#####.###########.#.#.#.#.###.#.###.#.###.#####.###.###.###.#.#####.#####.###.#.#####.#.#.#.###########.#.#####.#.#.#.#.###.###.#.# +#.#.#...#.....#.#.........#...#...#.#...#...#...#...#.....###.#...#...#.#...#.#.....###.#...#...#.#.#.###.....###.#.....#.#.#.#.#...#.#...#.# +#.#.#.#######.#.#.#######.#########.#.#####.#####.###.#######.#.###.###.#.#.#.#.#######.###.#.###.#.#.###.###.###.#####.#.#.#.#.###.#.#.###.# +#.#.#.......#...#.#.......#...#...#...#.....#...#...#...#...#.#...#...#...#...#.#.....#.#...#.#...#.#.#...#...#...#.....#.#.#.#.###.#...#...# +#.#.#######.#####.#.#######.#.#.#.#####.#####.#.###.###.#.#.#.###.###.#########.#.###.#.#.###.#.###.#.#.###.###.###.#####.#.#.#.###.#####.### +#.#.......#...#...#.....#...#...#.#.....#...#.#.#...#...#.#.#.#...###.....#...#.#.#...#.#.###.#...#.#.#...#.###...#.....#.#.#.#.#...#...#...# +#.#######.###.#.#######.#.#######.#.#####.#.#.#.#.###.###.#.#.#.#########.#.#.#.#.#.###.#.###.###.#.#.###.#.#####.#####.#.#.#.#.#.###.#.###.# +#.......#...#...#.......#.#.......#.......#...#...#...###.#.#.#.###...###.#.#...#.#...#.#.#...#...#.#.###.#.#...#.#.....#.#.#.#.#.#...#.....# +#######.###.#####.#######.#.#######################.#####.#.#.#.###.#.###.#.#####.###.#.#.#.###.###.#.###.#.#.#.#.#.#####.#.#.#.#.#.######### +###...#.#...###...#.....#.#.........#...............#...#.#.#.#...#.#.#...#.....#...#...#.#...#.###.#.#...#.#.#...#.....#.#.#.#.#.#...#.....# +###.#.#.#.#####.###.###.#.#########.#.###############.#.#.#.#.###.#.#.#.#######.###.#####.###.#.###.#.#.###.#.#########.#.#.#.#.#.###.#.###.# +#...#...#.#...#...#.#...#.#.........#...###...###...#.#.#.#.#.#...#.#.#...#.....#...#.....#...#...#.#.#...#.#.#.........#.#.#.#...#...#.#...# +#.#######.#.#.###.#.#.###.#.###########.###.#.###.#.#.#.#.#.#.#.###.#.###.#.#####.###.#####.#####.#.#.###.#.#.#.#########.#.#.#####.###.#.### +#...#.....#.#...#...#.....#...........#...#.#...#.#.#.#.#.#...#.#...#...#.#.#...#...#.#...#...#...#.#...#.#.#.#.###...###.#.#.#.....#...#...# +###.#.#####.###.#####################.###.#.###.#.#.#.#.#.#####.#.#####.#.#.#.#.###.#.#.#.###.#.###.###.#.#.#.#.###.#.###.#.#.#.#####.#####.# +#...#.#...#...#.#...#.....#...#.....#.#...#.#...#.#.#.#.#...#...#.....#...#...#.#...#.#.#...#.#.#...#...#.#...#.....#...#.#.#.#...###.#.....# +#.###.#.#.###.#.#.#.#.###.#.#.#.###.#.#.###.#.###.#.#.#.###.#.#######.#########.#.###.#.###.#.#.#.###.###.#############.#.#.#.###.###.#.##### +#...#...#.....#...#.#...#.#.#.#...#.#.#.....#...#.#.#.#...#.#.#.....#.......#...#.#...#...#.#.#.#...#.###.....#.........#.#...#...#...#.#...# +###.###############.###.#.#.#.###.#.#.#########.#.#.#.###.#.#.#.###.#######.#.###.#.#####.#.#.#.###.#.#######.#.#########.#####.###.###.#.#.# +#...#.............#.###.#...#...#.#.#.#.....#...#.#.#.#...#.#.#...#.###...#.#...#.#.#...#.#...#...#.#...#.....#...#...###.#.....###...#.#.#.# +#.###.###########.#.###.#######.#.#.#.#.###.#.###.#.#.#.###.#.###.#.###.#.#.###.#.#.#.#.#.#######.#.###.#.#######.#.#.###.#.#########.#.#.#.# +#...#...#.........#.....#.....#...#.#.#...#...#...#.#.#...#.#.#...#.#...#.#.#...#.#...#.#.#.......#...#...#...#...#.#...#.#...#...#...#...#.# +###.###.#.###############.###.#####.#.###.#####.###.#.###.#.#.#.###.#.###.#.#.###.#####.#.#.#########.#####.#.#.###.###.#.###.#.#.#.#######.# +###.....#.....#.........#.#...#...#...#...#...#...#.#.#...#.#...#...#.#...#.#...#.#.....#.#...###.....#.....#...###.#...#.#...#.#.#.#.......# +#############.#.#######.#.#.###.#.#####.###.#.###.#.#.#.###.#####.###.#.###.###.#.#.#####.###.###.#####.###########.#.###.#.###.#.#.#.####### +#.............#.#.....#.#.#.....#.....#.#...#.#...#.#.#...#.....#.#...#.....#...#.#...###...#...#.....#...#...#...#.#.....#.....#...#...#...# +#.#############.#.###.#.#.###########.#.#.###.#.###.#.###.#####.#.#.#########.###.###.#####.###.#####.###.#.#.#.#.#.###################.#.#.# +#...............#...#.#.#.###...#...#.#.#...#.#...#.#...#.#...#.#.#.........#.###.#...#...#.#...#...#...#...#...#.#.#.................#...#.# +###################.#.#.#.###.#.#.#.#.#.###.#.###.#.###.#.#.#.#.#.#########.#.###.#.###.#.#.#.###.#.###.#########.#.#.###############.#####.# +#...................#...#.#...#...#...#...#.#...#.#...#.#...#.#.#.....#...#.#...#.#.#...#.#.#.#...#.#...#.........#.#.#.............#.#...#.# +#.#######################.#.#############.#.###.#.###.#.#####.#.#####.#.#.#.###.#.#.#.###.#.#.#.###.#.###.#########.#.#.###########.#.#.#.#.# +#.........................#.............#.#.#...#.#...#...#...#.....#.#.#.#.###.#.#.#...#.#.#.#.###.#.#...#...#.....#...#...#...#...#...#.#.# +#######################################.#.#.#.###.#.#####.#.#######.#.#.#.#.###.#.#.###.#.#.#.#.###.#.#.###.#.#.#########.#.#.#.#.#######.#.# +#...........#...#.....#.................#.#.#...#.#...#...#.#...#...#.#.#.#...#.#.#...#.#...#.#...#.#.#...#.#.#.#.........#...#...#.....#.#.# +#.#########.#.#.#.###.#.#################.#.###.#.###.#.###.#.#.#.###.#.#.###.#.#.###.#.#####.###.#.#.###.#.#.#.#.#################.###.#.#.# +#.#.....#...#.#.#.#...#.............#...#...###.#.###.#.###...#.#...#.#.#.#...#.#.#...#.###...#...#...###...#...#.....#.....#.......#...#.#.# +#.#.###.#.###.#.#.#.###############.#.#.#######.#.###.#.#######.###.#.#.#.#.###.#.#.###.###.###.#####################.#.###.#.#######.###.#.# +#...#...#.....#...#...............#...#...#...#.#...#...#.......#...#...#.#...#.#.#...#...#...#.#...#...#...#...#.....#.#...#.#.......###...# +#####.###########################.#######.#.#.#.###.#####.#######.#######.###.#.#.###.###.###.#.#.#.#.#.#.#.#.#.#.#####.#.###.#.############# +###...#...........#.....#.......#.........#.#.#.#...#.....#...#...#.......#...#...#...#...#...#.#.#...#...#...#...#...#.#.#...#...#...###...# +###.###.#########.#.###.#.#####.###########.#.#.#.###.#####.#.#.###.#######.#######.###.###.###.#.#################.#.#.#.#.#####.#.#.###.#.# +#...#...#.........#.#...#.#.....#...###...#.#.#...###.#...#.#.#...#...#...#.......#.....###.....#...............###.#...#.#.#.....#.#.....#.# +#.###.###.#########.#.###.#.#####.#.###.#.#.#.#######.#.#.#.#.###.###.#.#.#######.#############################.###.#####.#.#.#####.#######.# +#.#...###.........#.#.....#.......#.....#...#.......#...#.#.#.#...###...#.#.......#############################.....#S..#...#.......#...#...# +#.#.#############.#.###############################.#####.#.#.#.#########.#.###########################################.#############.#.#.### +#.#.#.............#.###...#...#...#...#...#.........#.....#.#.#.#...#.....#.###########################################.#.....#.......#...### +#.#.#.#############.###.#.#.#.#.#.#.#.#.#.#.#########.#####.#.#.#.#.#.#####.###########################################.#.###.#.############# +#...#...#.....#...#.#...#...#...#...#.#.#...#...###...#...#.#...#.#.#.....#.###########################################.#...#.#.........#...# +#######.#.###.#.#.#.#.###############.#.#####.#.###.###.#.#.#####.#.#####.#.###########################################.###.#.#########.#.#.# +###...#...###.#.#...#...#...#.......#.#.......#...#...#.#.#...###.#.....#.#.###########################################.....#...........#.#.# +###.#.#######.#.#######.#.#.#.#####.#.###########.###.#.#.###.###.#####.#.#.#############################################################.#.# +#...#.#.....#...#.......#.#.#.#.....#.......#...#.#...#.#...#.....#...#.#...#...#########...#...#####...#...#############################E#.# +#.###.#.###.#####.#######.#.#.#.###########.#.#.#.#.###.###.#######.#.#.#####.#.#########.#.#.#.#####.#.#.#.###############################.# +#...#.#...#...###.......#.#...#...........#...#...#...#.#...#.......#...#.....#.....#####.#...#.#...#.#.#.#.#...#...#...............#...#...# +###.#.###.###.#########.#.###############.###########.#.#.###.###########.#########.#####.#####.#.#.#.#.#.#.#.#.#.#.#.#############.#.#.#.### +###.#.....#...#.........#.#.......#.......#.....#...#.#.#...#.....#.......#...#...#...#...#...#...#...#...#...#...#...#.......#...#...#.#.### +###.#######.###.#########.#.#####.#.#######.###.#.#.#.#.###.#####.#.#######.#.#.#.###.#.###.#.#########################.#####.#.#.#####.#.### +#...#.....#.###...........#.....#.#.......#.#...#.#.#...###.......#.........#...#.#...#.....#.....#.....................#...#...#.....#.#...# +#.###.###.#.###################.#.#######.#.#.###.#.#############################.#.#############.#.#####################.#.#########.#.###.# +#.#...#...#...#...#...#.......#.#.....#...#.#.#...#.#.....#...###.......#.......#.#.#...###...#...#.#.................#...#...........#.....# +#.#.###.#####.#.#.#.#.#.#####.#.#####.#.###.#.#.###.#.###.#.#.###.#####.#.#####.#.#.#.#.###.#.#.###.#.###############.#.##################### +#...###.#...#...#...#.#.....#.#.....#...###.#.#...#.#.#...#.#...#.....#.#...#...#.#.#.#.#...#.#.....#.............#...#.#.......#...###...### +#######.#.#.#########.#####.#.#####.#######.#.###.#.#.#.###.###.#####.#.###.#.###.#.#.#.#.###.###################.#.###.#.#####.#.#.###.#.### +#.......#.#...#.....#.###...#...###.........#.....#...#.....#...#.....#.....#...#.#.#.#.#...#.###...#.......#.....#.....#.#...#.#.#.....#...# +#.#######.###.#.###.#.###.#####.#############################.###.#############.#.#.#.#.###.#.###.#.#.#####.#.###########.#.#.#.#.#########.# +#.#...#...###.#.#...#.#...#...#...........#.....#.......#...#.###.............#...#...#.....#.....#...#...#...#...#.....#...#.#...#...#.....# +#.#.#.#.#####.#.#.###.#.###.#.###########.#.###.#.#####.#.#.#.###############.#########################.#.#####.#.#.###.#####.#####.#.#.##### +#.#.#...#.....#.#...#...#...#...#...#...#...###...#.....#.#...#...............#...#...#.....#...........#...###.#.#.#...#...#.#.....#...#...# +#.#.#####.#####.###.#####.#####.#.#.#.#.###########.#####.#####.###############.#.#.#.#.###.#.#############.###.#.#.#.###.#.#.#.#########.#.# +#.#...###.......###.......#...#...#...#.........###.....#.#...#.#.............#.#...#...#...#.....#.........#...#...#.....#...#...........#.# +#.###.#####################.#.#################.#######.#.#.#.#.#.###########.#.#########.#######.#.#########.#############################.# +#.....#...#.................#...................#...###...#.#.#...#...#.......#...#.......#...#...#...........#...#.......#.....#...........# +#######.#.#.#####################################.#.#######.#.#####.#.#.#########.#.#######.#.#.###############.#.#.#####.#.###.#.########### +#.......#...#...........#...#...#.................#.#.....#.#...#...#.#...........#.#.....#.#...#.............#.#.#.....#.#...#.#...........# +#.###########.#########.#.#.#.#.#.#################.#.###.#.###.#.###.#############.#.###.#.#####.###########.#.#.#####.#.###.#.###########.# +#.............#.....#...#.#...#...#...#...#...#...#.#.#...#.#...#...#.........#.....#.###...#...#.#.........#...#.#.....#...#.#...#.........# +###############.###.#.###.#########.#.#.#.#.#.#.#.#.#.#.###.#.#####.#########.#.#####.#######.#.#.#.#######.#####.#.#######.#.###.#.######### +#.............#...#.#.....#.........#...#.#.#.#.#.#.#.#...#.#...###.....#...#.#...#...#.....#.#.#...#.......###...#.......#.#...#.#.........# +#.###########.###.#.#######.#############.#.#.#.#.#.#.###.#.###.#######.#.#.#.###.#.###.###.#.#.#####.#########.#########.#.###.#.#########.# +#...........#.....#.###...#.............#...#...#...#.#...#...#.#...###.#.#...###...###...#...#.....#.........#.#.....#...#.....#.#.....#...# +###########.#######.###.#.#############.#############.#.#####.#.#.#.###.#.###############.#########.#########.#.#.###.#.#########.#.###.#.### +#.......###.......#.#...#.#.............###...###...#.#...###.#.#.#.#...#...#...#...#.....#.......#...........#...###.#.......###.#...#.#...# +#.#####.#########.#.#.###.#.###############.#.###.#.#.###.###.#.#.#.#.#####.#.#.#.#.#.#####.#####.###################.#######.###.###.#.###.# +#.#...#.#...###...#.#...#.#.#.............#.#...#.#.#.#...#...#.#.#.#.....#...#.#.#.#.......#.....#...#.............#...#...#...#.#...#.#...# +#.#.#.#.#.#.###.###.###.#.#.#.###########.#.###.#.#.#.#.###.###.#.#.#####.#####.#.#.#########.#####.#.#.###########.###.#.#.###.#.#.###.#.### +#...#.#...#...#...#.###.#.#...#...........#.#...#.#.#.#.#...#...#.#.#...#.....#...#.....#.....#...#.#.#.#...........###...#...#.#.#...#.#...# +#####.#######.###.#.###.#.#####.###########.#.###.#.#.#.#.###.###.#.#.#.#####.#########.#.#####.#.#.#.#.#.###################.#.#.###.#.###.# +#...#.......#.#...#...#.#.#...#.....#...#...#.....#.#.#...#...###.#.#.#.#...#.#.......#.#.......#.#.#.#.#.....#...#...#...###...#...#.#.#...# +#.#.#######.#.#.#####.#.#.#.#.#####.#.#.#.#########.#.#####.#####.#.#.#.#.#.#.#.#####.#.#########.#.#.#.#####.#.#.#.#.#.#.#########.#.#.#.### +#.#.###.....#...#...#...#...#.....#...#.#.....#.....#.#.....###...#.#.#.#.#...#.....#...###.....#...#...#...#...#.#.#.#.#.......#...#.#...### +#.#.###.#########.#.#############.#####.#####.#.#####.#.#######.###.#.#.#.#########.#######.###.#########.#.#####.#.#.#.#######.#.###.####### +#.#.#...#.......#.#.#.....#.....#.......#...#.#.....#.#...#.....#...#.#.#...#.....#.#...#...#...###...#...#.......#.#.#.#.......#...#...#...# +#.#.#.###.#####.#.#.#.###.#.###.#########.#.#.#####.#.###.#.#####.###.#.###.#.###.#.#.#.#.###.#####.#.#.###########.#.#.#.#########.###.#.#.# +#.#...#...#...#...#.#.#...#...#.......###.#.#...#...#.#...#...#...#...#...#.#.###...#.#.#...#.#.....#.#.............#...#.....#...#.#...#.#.# +#.#####.###.#.#####.#.#.#####.#######.###.#.###.#.###.#.#####.#.###.#####.#.#.#######.#.###.#.#.#####.#######################.#.#.#.#.###.#.# +#.#...#.#...#.......#.#.......#...#...#...#...#.#...#.#.....#.#...#.....#.#.#...#...#.#.#...#.#.....#...#.............#.......#.#.#...#...#.# +#.#.#.#.#.###########.#########.#.#.###.#####.#.###.#.#####.#.###.#####.#.#.###.#.#.#.#.#.###.#####.###.#.###########.#.#######.#.#####.###.# +#...#...#.#...#...#...#.........#...###...#...#.#...#.#.....#.#...#...#.#.#.#...#.#.#.#.#.#...#...#.#...#...###...###...#...#...#...###.#...# +#########.#.#.#.#.#.###.#################.#.###.#.###.#.#####.#.###.#.#.#.#.#.###.#.#.#.#.#.###.#.#.#.#####.###.#.#######.#.#.#####.###.#.### +###.......#.#...#.#.###.........#...#...#.#.....#.#...#.#...#.#...#.#.#.#.#.#.#...#.#.#.#.#.#...#.#.#.....#.#...#...#...#.#.#.#.....#...#...# +###.#######.#####.#.###########.#.#.#.#.#.#######.#.###.#.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#.###.#.#####.#.#.#####.#.#.#.#.#.#.#####.#####.# +#...#.....#...#...#.#...........#.#.#.#.#.......#.#.#...#.#.#...#...#.#.#.#.#.#...#.#.#.#.#.#.#...#...###.#...#...#...#...#...#.......#.....# +#.###.###.###.#.###.#.###########.#.#.#.#######.#.#.#.###.#.###.#####.#.#.#.#.###.#.#.#.#.#.#.#.#####.###.#####.#.#####################.##### +#...#...#.#...#...#.#.......#...#.#.#.#...#...#.#.#.#.#...#...#...#...#.#.#.#.#...#...#.#.#.#.#.#...#...#.#.....#.#.....#...#...#.......#...# +###.###.#.#.#####.#.#######.#.#.#.#.#.###.#.#.#.#.#.#.#.#####.###.#.###.#.#.#.#.#######.#.#.#.#.#.#.###.#.#.#####.#.###.#.#.#.#.#.#######.#.# +###...#.#.#.#.....#.#.......#.#.#.#.#.#...#.#...#...#.#.#...#...#.#.....#.#.#.#.....#...#.#.#.#.#.#.#...#.#.....#.#.###.#.#.#.#.#.......#.#.# +#####.#.#.#.#.#####.#.#######.#.#.#.#.#.###.#########.#.#.#.###.#.#######.#.#.#####.#.###.#.#.#.#.#.#.###.#####.#.#.###.#.#.#.#.#######.#.#.# +###...#.#...#...#...#.......#.#.#.#...#.#...###.......#...#...#.#.......#.#.#...#...#...#.#...#.#.#...#...#...#.#.#...#...#...#...#.....#.#.# +###.###.#######.#.#########.#.#.#.#####.#.#####.#############.#.#######.#.#.###.#.#####.#.#####.#.#####.###.#.#.#.###.###########.#.#####.#.# +#...#...#.......#.#.........#.#...#...#.#.#...#.....#.......#.#...#...#.#.#.#...#.#.....#.....#...#.....#...#.#.#...#.......#...#.#.....#.#.# +#.###.###.#######.#.#########.#####.#.#.#.#.#.#####.#.#####.#.###.#.#.#.#.#.#.###.#.#########.#####.#####.###.#.###.#######.#.#.#.#####.#.#.# +#...#...#.........#.#...#...#.#.....#...#...#...###.#.#...#.#.###.#.#...#...#.....#.....#...#.....#...#...###.#...#...#.....#.#...#...#...#.# +###.###.###########.#.#.#.#.#.#.###############.###.#.#.#.#.#.###.#.###################.#.#.#####.###.#.#####.###.###.#.#####.#####.#.#####.# +###.#...#...#...#...#.#...#...#.....#...#...#...#...#...#.#...#...#.........#...........#.#.#.....#...#.....#.#...#...#...###.....#.#.......# +###.#.###.#.#.#.#.###.#############.#.#.#.#.#.###.#######.#####.###########.#.###########.#.#.#####.#######.#.#.###.#####.#######.#.######### +#...#.#...#.#.#.#...#.#.............#.#.#.#...#...#...#...#.....#.....#.....#.#.....#...#.#.#.....#...#...#.#...###...#...#...#...#.......### +#.###.#.###.#.#.###.#.#.#############.#.#.#####.###.#.#.###.#####.###.#.#####.#.###.#.#.#.#.#####.###.#.#.#.#########.#.###.#.#.#########.### +#.#...#...#...#.#...#.#.....#.......#.#.#.....#...#.#.#.###.....#.###.#.#...#...#...#.#.#.#.#.....###.#.#.#.....#.....#.....#.#.#...#...#...# +#.#.#####.#####.#.###.#####.#.#####.#.#.#####.###.#.#.#.#######.#.###.#.#.#.#####.###.#.#.#.#.#######.#.#.#####.#.###########.#.#.#.#.#.###.# +#.#.....#.....#.#.#...###...#.....#.#.#.#.....###.#.#.#.#.......#...#.#...#.....#...#.#...#.#.......#.#.#.#...#.#...#.....#...#.#.#...#.#...# +#.#####.#####.#.#.#.#####.#######.#.#.#.#.#######.#.#.#.#.#########.#.#########.###.#.#####.#######.#.#.#.#.#.#.###.#.###.#.###.#.#####.#.### +#.#.....###...#...#.#...#.....#...#.#.#.#.......#...#.#.#.#.....#...#.#...#.....#...#.#.....#...#...#.#.#.#.#.#.###...#...#.###.#.....#.#.### +#.#.#######.#######.#.#.#####.#.###.#.#.#######.#####.#.#.#.###.#.###.#.#.#.#####.###.#.#####.#.#.###.#.#.#.#.#.#######.###.###.#####.#.#.### +#.#...#.....#.....#.#.#.......#...#.#.#...#...#.....#.#.#.#...#.#.#...#.#.#...###.....#...#...#.#.#...#.#...#.#.....###...#...#.#...#.#.#...# +#.###.#.#####.###.#.#.###########.#.#.###.#.#.#####.#.#.#.###.#.#.#.###.#.###.###########.#.###.#.#.###.#####.#####.#####.###.#.#.#.#.#.###.# +#.#...#.#...#.#...#.#.#...#...#...#.#.#...#.#...#...#...#.#...#.#.#.#...#...#.....#.......#...#...#...#.#.....#...#...#...#...#.#.#.#.#...#.# +#.#.###.#.#.#.#.###.#.#.#.#.#.#.###.#.#.###.###.#.#######.#.###.#.#.#.#####.#####.#.#########.#######.#.#.#####.#.###.#.###.###.#.#.#.###.#.# +#.#.#...#.#...#...#.#...#.#.#.#.#...#.#...#...#.#.....###...#...#.#.#...#...#...#.#.....#.....###...#.#.#...#...#.#...#.#...###.#.#.#...#.#.# +#.#.#.###.#######.#.#####.#.#.#.#.###.###.###.#.#####.#######.###.#.###.#.###.#.#.#####.#.#######.#.#.#.###.#.###.#.###.#.#####.#.#.###.#.#.# +#.#.#.#...#.......#.#.....#.#.#.#...#...#...#.#.....#.......#...#.#...#.#.#...#.#.#.....#.........#.#.#.#...#...#.#.#...#.....#.#.#.#...#...# +#.#.#.#.###.#######.#.#####.#.#.###.###.###.#.#####.#######.###.#.###.#.#.#.###.#.#.###############.#.#.#.#####.#.#.#.#######.#.#.#.#.####### +#.#.#.#...#...#...#.#.#...#.#.#...#...#.#...#.....#...#...#.#...#...#.#.#.#...#.#.#...#...#...#...#.#.#.#.#...#.#.#.#.#...#...#.#.#.#.......# +#.#.#.###.###.#.#.#.#.#.#.#.#.###.###.#.#.#######.###.#.#.#.#.#####.#.#.#.###.#.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#######.# +#...#.....###...#...#...#...#.....###...#.........###...#...#.......#...#.....#...###...#...#...#...#...#...#...#...#...#...###...#.........# +############################################################################################################################################# diff --git a/resources/2025/day1.txt b/resources/2025/day1.txt new file mode 100644 index 0000000..0b0e7fe --- /dev/null +++ b/resources/2025/day1.txt @@ -0,0 +1,4042 @@ +R29 +L3 +L46 +L25 +L38 +R43 +L20 +R9 +L6 +L47 +L39 +R29 +R8 +R11 +L20 +L10 +L46 +L21 +R30 +L6 +L21 +L5 +R42 +R9 +L28 +R30 +L37 +R18 +R10 +L8 +R21 +R1 +R1 +L20 +L23 +R38 +R37 +L40 +R42 +R12 +L21 +R4 +L22 +R29 +R15 +R38 +L32 +L25 +L30 +L48 +R12 +R62 +R72 +L86 +L55 +L74 +R21 +R73 +L7 +L6 +R19 +L87 +L97 +L44 +R54 +R74 +R12 +R24 +R61 +L90 +R93 +R88 +L71 +L11 +R96 +L66 +R43 +L79 +R74 +R26 +R48 +L55 +R7 +R31 +L76 +R45 +R30 +R63 +L93 +R37 +L37 +L32 +L68 +L10 +L6 +L53 +L71 +R40 +R45 +R55 +R60 +R40 +L114 +L86 +L36 +L64 +R91 +L91 +L53 +R84 +L851 +L871 +R43 +R52 +L4 +R73 +L60 +L827 +R14 +L63 +R45 +L482 +L40 +L437 +L20 +L967 +R78 +L14 +L98 +L2 +R6 +R30 +L36 +R80 +R12 +L86 +L170 +L4 +R268 +L660 +L74 +R784 +L39 +L11 +R56 +R44 +R928 +R999 +L27 +R75 +L75 +R798 +L89 +R91 +R80 +L536 +R56 +R58 +R65 +R83 +R38 +R39 +L25 +R42 +L58 +L66 +R24 +L10 +L90 +L61 +R35 +L82 +R37 +R743 +L72 +L635 +R635 +L465 +L44 +L96 +R97 +R63 +L55 +R46 +L75 +L27 +L644 +L77 +L47 +L359 +L82 +R41 +R54 +R50 +L306 +R85 +R852 +R89 +L37 +L363 +R792 +R8 +L805 +R70 +R89 +L92 +R381 +L43 +R23 +L23 +R3 +R97 +L567 +R15 +L48 +R87 +R16 +R397 +R54 +R46 +L63 +L65 +L76 +L96 +R564 +R30 +L60 +R403 +R10 +R506 +R5 +R42 +R5 +L73 +L32 +L81 +R71 +R218 +R46 +L934 +R79 +L99 +L323 +R66 +L56 +R51 +R91 +L91 +R62 +R25 +R49 +L74 +R52 +R548 +R90 +R13 +L3 +L94 +L906 +R11 +L63 +R7 +L40 +L72 +L43 +R15 +L24 +L62 +R84 +R87 +R830 +R16 +L3 +R73 +R84 +L73 +L94 +L70 +R37 +L231 +R31 +R33 +R43 +L6 +L770 +L19 +R974 +L955 +R33 +R67 +L41 +L51 +R92 +L86 +R28 +L42 +R71 +L10 +L39 +L76 +R97 +R74 +L517 +L58 +L8 +L34 +R840 +L40 +L93 +R85 +R8 +R48 +L38 +L9 +R24 +L65 +R40 +L125 +L670 +R70 +L775 +R724 +R76 +L44 +R90 +L46 +L29 +L71 +L67 +L399 +R94 +L28 +R120 +L96 +R76 +L13 +R113 +R20 +L76 +L44 +L4 +R492 +L588 +L64 +L55 +R12 +R16 +L505 +L92 +R219 +R69 +R51 +L51 +R72 +L43 +L678 +R64 +R73 +R18 +R21 +L27 +R845 +R64 +R75 +L61 +R22 +L945 +R5 +R14 +R29 +R8 +R44 +L96 +L4 +L56 +L90 +L93 +R47 +R92 +R97 +L858 +L91 +L955 +R7 +R96 +R98 +R12 +R68 +R49 +R77 +R46 +L47 +L928 +L53 +R82 +R54 +L93 +L633 +L88 +R4 +R56 +L92 +L8 +R73 +L23 +R95 +R490 +R234 +R59 +L79 +L81 +L6 +L21 +R59 +L902 +L44 +R46 +R94 +R11 +L879 +R12 +R90 +L37 +L91 +R26 +R74 +R46 +L18 +L67 +R939 +R63 +R346 +L9 +L2 +L98 +L28 +L72 +R89 +R14 +L403 +R2 +R63 +L67 +L298 +R17 +R283 +L50 +R50 +L59 +L19 +L65 +L68 +L89 +R1 +L1 +L852 +L1 +R653 +L25 +L95 +L66 +L94 +R61 +R60 +R52 +L93 +L16 +L51 +R11 +L2 +R958 +R48 +R57 +L31 +L857 +R83 +R387 +L232 +R38 +L64 +L795 +R11 +L34 +L72 +R18 +R41 +L98 +L45 +L55 +L70 +R847 +L377 +L76 +R76 +L862 +R43 +R21 +L2 +L50 +L14 +R85 +R35 +R44 +L69 +R59 +L48 +L186 +L653 +L96 +L7 +L97 +L24 +L15 +L64 +L52 +L83 +R35 +L42 +R42 +R62 +L40 +L22 +R9 +L9 +L558 +R574 +L16 +R24 +L48 +L264 +L12 +L304 +R5 +R99 +L61 +L18 +L97 +R76 +L51 +L51 +L27 +R29 +R50 +R27 +R923 +L29 +L571 +L54 +L81 +L65 +R40 +L40 +R53 +R47 +L171 +L363 +L66 +L24 +L90 +R14 +R30 +L30 +L22 +R115 +R33 +L50 +R24 +L91 +R968 +R52 +R71 +R1 +L84 +L17 +L46 +L54 +L31 +R31 +R59 +R81 +L40 +L93 +L7 +L88 +L905 +R93 +R18 +L120 +R90 +L88 +R43 +L27 +R6 +R95 +L35 +R918 +R53 +R97 +L25 +R34 +L72 +L64 +R77 +L48 +L52 +L58 +L2 +R14 +R46 +R65 +R67 +L32 +R739 +L78 +R39 +L53 +L10 +L892 +R91 +L36 +R88 +L546 +R65 +L7 +L42 +L44 +L842 +L6 +R34 +L91 +R7 +L65 +L30 +R93 +L914 +L3 +L123 +L920 +R49 +L24 +L79 +L28 +L72 +R11 +L90 +L64 +L8 +L93 +R44 +R67 +L55 +L643 +L687 +R691 +R65 +R2 +L82 +L273 +R715 +R5 +L5 +R573 +R79 +R94 +L552 +R571 +R53 +R65 +R17 +L88 +R64 +R924 +L281 +L683 +L311 +L82 +L43 +R53 +L72 +R49 +R70 +R59 +R398 +L40 +R83 +R77 +L77 +L17 +R117 +R14 +L97 +R83 +L868 +L72 +L60 +L35 +R225 +R573 +R42 +L5 +L62 +R55 +R63 +L50 +L6 +R93 +L56 +R63 +L271 +L29 +L30 +R67 +L9 +R8 +R384 +R41 +L52 +R964 +L694 +L262 +L50 +R37 +R96 +L649 +L76 +R25 +L212 +L5 +R84 +L7 +R55 +R85 +R36 +L36 +L407 +L93 +L88 +L77 +L74 +R39 +R38 +L38 +R97 +L79 +R82 +L96 +L4 +R490 +L92 +R230 +R570 +R2 +R31 +R90 +L21 +R625 +R67 +L52 +L40 +R3 +L3 +R10 +L10 +L68 +R68 +L84 +L62 +L98 +L76 +R85 +R30 +R353 +R59 +L30 +L77 +L765 +L35 +R208 +L83 +L25 +L15 +L85 +L53 +R53 +R94 +R106 +R188 +R712 +R95 +R5 +L781 +R73 +R34 +R22 +L20 +R72 +R267 +L67 +R27 +L761 +L1 +R35 +R417 +R83 +L65 +R66 +L74 +R73 +L51 +R70 +R15 +L34 +L492 +R61 +L57 +L12 +L29 +R94 +R55 +L95 +R75 +R51 +R78 +L775 +L34 +L20 +R88 +L88 +R54 +L979 +L873 +R90 +R17 +R45 +L31 +L23 +R17 +R683 +L52 +R454 +L12 +L92 +R45 +R91 +R84 +R34 +L93 +L47 +L13 +R83 +L215 +R27 +L77 +L17 +R66 +R91 +R587 +L778 +R34 +R37 +L25 +R427 +L37 +L84 +L19 +R46 +R682 +L23 +L76 +L41 +L69 +R3 +L456 +R674 +R27 +R21 +R313 +R46 +R99 +L3 +L78 +L64 +L65 +R265 +L21 +L23 +R72 +R38 +L73 +L122 +R23 +L6 +L80 +L208 +R266 +R126 +L92 +R57 +L873 +L84 +L1 +L53 +L46 +R46 +L46 +R40 +L9 +R27 +L2 +L56 +L84 +R84 +R540 +R79 +L24 +R757 +R871 +L36 +L39 +L79 +R31 +R67 +L280 +L135 +R42 +R6 +R20 +L80 +R30 +L960 +L78 +R24 +L56 +L91 +L9 +L94 +R76 +R18 +L3 +R57 +R80 +R30 +R83 +R53 +R91 +L50 +R59 +L54 +L76 +L80 +L71 +R81 +L74 +R82 +L708 +R633 +L33 +L27 +R21 +L94 +L41 +L59 +R32 +R10 +R58 +L611 +R10 +R97 +L236 +R740 +L87 +R15 +L78 +R15 +R35 +R48 +L685 +R26 +L51 +L14 +L58 +R12 +R76 +R58 +R78 +L65 +R77 +R67 +L297 +L72 +R23 +R844 +R33 +R8 +R92 +R5 +L5 +L35 +R35 +L99 +L879 +L5 +L317 +L39 +L61 +R2 +R598 +R30 +L53 +L62 +L115 +L31 +R31 +R32 +R36 +R133 +L836 +R6 +R124 +R5 +R32 +R93 +L5 +L920 +R87 +R75 +R19 +R76 +R672 +L58 +R29 +L6 +R563 +R45 +R39 +R50 +R32 +R58 +L90 +R9 +L40 +R40 +L99 +L1 +L28 +L97 +L420 +R445 +L95 +R4 +L23 +L86 +L76 +R95 +L30 +L302 +R241 +R24 +R47 +L699 +R11 +R74 +L863 +L91 +R769 +L99 +L101 +L60 +L64 +R29 +R188 +R38 +L31 +R40 +L230 +R90 +R582 +L49 +L42 +R709 +L57 +L5 +L95 +L99 +R456 +R27 +R173 +R12 +R88 +R5 +L756 +L49 +R90 +R10 +R8 +R92 +R60 +R40 +R41 +L45 +R270 +L9 +R11 +L3 +L65 +R47 +R53 +R16 +L72 +R72 +L76 +L52 +R12 +L78 +R51 +L73 +L45 +L87 +L68 +R1 +L8 +R46 +L43 +L96 +L44 +L67 +R94 +L5 +R22 +L26 +R453 +R973 +L58 +L53 +L20 +L69 +R54 +R54 +R92 +R504 +R96 +L30 +L70 +R87 +L26 +R539 +L82 +R82 +R88 +L40 +R61 +L478 +R69 +L20 +R643 +R52 +L14 +L61 +L512 +L54 +R866 +L5 +R205 +L78 +R61 +L83 +R939 +L4 +L35 +R68 +R32 +L8 +L33 +R458 +R5 +R20 +L363 +R926 +L1 +L52 +L23 +R83 +R511 +L925 +R2 +L36 +R36 +R22 +L732 +L71 +R30 +R851 +R54 +L85 +L237 +R18 +R50 +L63 +R63 +L97 +L732 +R29 +R72 +L20 +L55 +L4 +R7 +R5 +L33 +R911 +L20 +L70 +R7 +R426 +R637 +R53 +R23 +L42 +R703 +L35 +L2 +R442 +L5 +L41 +L25 +L34 +L353 +R95 +L42 +R52 +R702 +R746 +R319 +L46 +R4 +L886 +L769 +L86 +R48 +R16 +L667 +R375 +R76 +L80 +L504 +R33 +L902 +L31 +R91 +R31 +R47 +R31 +R12 +R27 +L54 +L53 +L32 +L98 +L2 +L41 +L17 +L42 +L79 +L62 +R43 +L16 +L12 +R92 +L65 +L820 +R26 +R38 +R855 +R31 +L31 +R63 +L853 +R90 +L29 +R62 +R67 +R89 +R95 +R16 +R53 +L53 +L74 +R537 +R37 +L64 +R51 +L3 +R1 +L85 +R81 +R31 +R988 +L875 +L3 +R35 +L31 +L26 +R22 +R78 +R84 +R216 +L71 +L29 +R84 +L31 +L43 +L71 +L63 +L41 +R895 +R70 +L40 +L47 +R56 +R4 +L73 +R57 +R71 +R65 +R48 +L8 +R87 +R37 +R198 +L55 +L264 +L26 +L45 +R877 +R58 +L88 +L473 +L45 +L66 +R72 +R1 +L87 +R86 +R16 +L16 +R77 +R94 +R29 +L78 +R578 +L13 +L771 +L19 +R3 +R37 +L41 +R75 +L771 +R595 +L16 +L79 +L22 +R84 +R63 +L997 +L328 +R3 +L30 +L85 +R57 +L45 +L37 +L863 +L476 +L46 +L257 +R99 +L90 +L490 +R60 +R196 +L38 +R747 +L78 +R86 +R487 +R29 +L29 +R74 +L74 +L75 +L83 +R58 +R31 +R49 +L80 +L93 +R893 +L76 +L75 +R374 +L28 +R5 +R98 +R2 +L27 +R37 +R90 +L91 +R11 +R80 +L71 +R654 +L383 +R24 +R76 +L226 +R526 +L841 +L447 +L12 +L216 +R16 +R98 +R77 +L75 +R152 +L52 +L83 +L525 +R90 +L13 +L769 +R14 +L14 +R4 +L4 +R9 +R366 +R825 +L24 +L76 +L48 +L78 +L128 +L63 +R17 +L24 +L76 +L75 +L88 +L94 +L131 +L25 +R68 +R34 +R15 +L14 +R42 +R68 +R104 +L41 +L763 +R953 +L549 +L96 +L19 +L24 +L66 +L73 +L3 +R36 +R99 +R81 +L895 +R90 +R27 +L61 +R39 +L4 +L60 +L112 +R959 +L449 +R58 +R75 +R4 +R38 +L94 +R179 +R615 +R1 +R49 +R902 +L70 +R40 +R42 +R88 +R87 +R76 +R76 +L39 +L122 +L41 +R499 +L136 +L85 +L8 +L7 +R118 +R91 +R215 +R99 +R287 +R90 +L51 +R551 +R80 +R77 +R92 +L70 +L79 +R70 +L858 +R92 +L5 +L329 +R372 +L78 +L64 +R71 +L57 +L47 +R119 +R71 +R243 +L73 +R473 +L844 +L56 +R85 +L85 +R824 +L61 +R912 +L48 +R75 +L95 +R70 +L43 +R954 +L622 +L66 +R358 +L45 +R866 +L979 +L93 +L25 +L17 +L65 +R77 +R52 +R940 +R31 +L62 +L38 +R70 +R30 +R39 +R62 +R99 +L10 +L42 +R45 +R795 +L88 +R43 +L2 +R59 +R98 +R807 +R95 +L193 +L98 +R91 +L54 +L76 +R349 +L710 +R72 +R146 +R81 +R39 +L47 +L33 +L37 +R70 +R49 +R20 +R206 +L75 +R53 +R47 +L87 +L13 +R81 +L81 +R16 +R65 +L136 +L65 +L31 +L56 +R7 +R61 +R93 +L17 +R36 +L43 +R73 +L1 +L10 +R8 +L72 +R672 +R86 +R62 +L48 +R18 +R864 +L82 +L21 +R49 +R760 +R12 +L2 +L98 +L59 +L59 +L68 +L38 +R62 +R748 +R73 +L59 +L49 +L99 +R48 +L75 +R75 +R82 +R50 +L32 +L17 +L97 +R14 +R16 +R89 +R35 +L673 +L79 +R12 +L12 +L97 +R48 +L47 +L51 +L30 +L86 +L25 +L15 +L740 +R60 +L32 +L925 +R52 +R610 +L40 +R11 +L81 +L72 +L28 +L18 +L80 +R98 +L6 +R6 +R18 +L27 +R61 +R48 +R431 +R51 +R18 +R66 +R70 +R24 +L286 +R12 +L65 +L73 +L8 +L40 +R85 +L85 +L171 +R38 +L53 +R4 +R82 +R308 +R89 +L97 +R48 +L48 +L40 +L260 +L31 +R893 +R77 +R89 +L4 +R76 +L16 +R16 +R874 +L42 +L20 +R933 +L418 +R75 +L462 +R33 +L96 +R23 +R74 +R39 +L13 +R382 +R198 +R87 +R82 +R51 +R2 +R66 +L68 +R63 +R837 +R48 +L48 +L53 +L97 +L50 +R832 +L532 +L10 +L42 +R52 +L13 +R23 +R90 +R98 +R21 +L23 +L11 +L20 +R98 +L63 +L717 +R30 +L205 +L15 +R79 +R728 +R2 +L2 +L42 +R11 +L10 +L59 +R42 +R58 +R81 +R82 +R167 +R92 +L8 +R11 +L25 +L84 +R73 +L889 +R14 +L8 +L6 +L71 +R47 +R45 +L221 +R21 +R572 +L3 +R50 +L92 +L99 +R51 +L23 +R6 +L83 +R64 +L82 +L88 +R13 +R89 +R4 +R52 +L70 +R18 +L75 +R26 +R76 +L27 +R8 +L8 +L7 +R18 +R78 +L24 +R35 +L55 +L25 +R80 +L2 +L4 +R6 +R951 +R23 +R68 +L35 +L7 +L65 +L56 +L17 +L760 +L76 +L14 +R63 +L67 +L8 +R68 +L88 +R20 +R21 +R77 +L501 +L97 +L64 +R76 +R40 +L51 +L34 +R39 +R914 +R727 +R14 +R839 +R850 +L50 +L482 +R82 +L3 +R33 +L30 +L568 +R33 +R334 +L47 +L39 +R587 +R98 +L17 +R319 +L39 +R59 +R65 +L19 +L77 +L789 +R517 +L13 +R96 +R972 +L2 +L70 +L61 +L32 +R93 +R16 +R45 +R31 +R8 +R54 +L54 +L96 +L24 +R620 +R11 +R71 +R86 +L376 +R91 +R14 +L97 +R30 +L22 +R5 +L14 +R85 +L56 +L37 +L91 +R18 +R61 +R77 +L56 +L70 +L37 +R73 +R4 +L2 +R32 +L152 +L90 +R9 +L57 +L210 +L780 +R80 +L89 +R22 +R61 +L194 +L93 +L507 +R91 +L85 +L806 +L67 +L66 +L67 +L751 +L49 +R98 +L61 +L737 +L930 +L90 +R18 +L90 +L90 +L118 +L22 +L78 +L71 +L9 +R90 +R90 +R83 +R217 +L71 +L29 +R998 +L342 +L1 +L16 +L9 +L530 +L70 +R948 +R26 +L4 +L22 +L815 +R30 +R7 +L87 +R9 +R27 +L389 +R40 +R62 +R38 +R59 +L73 +L6 +L80 +L43 +R9 +R34 +L676 +L32 +R8 +R68 +L70 +L98 +L58 +L88 +L36 +L363 +R94 +R51 +L78 +L85 +L90 +R853 +R899 +L99 +R42 +L52 +L90 +R40 +R365 +L552 +R35 +R12 +L5 +L95 +R33 +R21 +L45 +R97 +R22 +R982 +L67 +R46 +L89 +L91 +L809 +L70 +L26 +R84 +L94 +L61 +L33 +L885 +L15 +L421 +L2 +R81 +L913 +R66 +L69 +R13 +R51 +L6 +R47 +R6 +L153 +R958 +R655 +L55 +R80 +L56 +R369 +R963 +L669 +R98 +R57 +L54 +R50 +R4 +L13 +L1 +R71 +L83 +R78 +L3 +L750 +L34 +L40 +R13 +L38 +R91 +L91 +L4 +L89 +L102 +R64 +L136 +L52 +R32 +R87 +R60 +R127 +R3 +L10 +L80 +L72 +R85 +L613 +L55 +R2 +R2 +R99 +L48 +L92 +L579 +R73 +L2 +L75 +R92 +L17 +L192 +L8 +R68 +L68 +R14 +R455 +L47 +L56 +L66 +L31 +R79 +L348 +L10 +L90 +L50 +L318 +L92 +L367 +L79 +R46 +L51 +L879 +L10 +L64 +L18 +R2 +L20 +R775 +R12 +R8 +R52 +R868 +L24 +R21 +R69 +L81 +R43 +R852 +R5 +R50 +R550 +R25 +R75 +L73 +R60 +R22 +R5 +R78 +R97 +L42 +L25 +R409 +L828 +L85 +R7 +L43 +R780 +R450 +L512 +L172 +R18 +L546 +L340 +R40 +L574 +L94 +L32 +R13 +L72 +L41 +L54 +L52 +L88 +L86 +L20 +L879 +L21 +L74 +R9 +R984 +R84 +L83 +R34 +L474 +L80 +R78 +L278 +L55 +R58 +R92 +R905 +L4 +R4 +L69 +L31 +R22 +R82 +R81 +R62 +L47 +L91 +L11 +L98 +L7 +L77 +L997 +L40 +R859 +R62 +L93 +R93 +L32 +R70 +R62 +L318 +R83 +R36 +L52 +L3 +L46 +L41 +R17 +L776 +R33 +R67 +L57 +R99 +L142 +L96 +L304 +R87 +L687 +R286 +R14 +L67 +L33 +L60 +L7 +L13 +L20 +R343 +R357 +R85 +R67 +R825 +R16 +R4 +L263 +R470 +L90 +L21 +L589 +L74 +R70 +R11 +L39 +L10 +L42 +L18 +L2 +R72 +L82 +R10 +R86 +R23 +L54 +R12 +R23 +R80 +R58 +L28 +L16 +R68 +R797 +R73 +L22 +R41 +L34 +L30 +L77 +R893 +L25 +L642 +R94 +L38 +R62 +R56 +L538 +R38 +R7 +L391 +R287 +L4 +R57 +L385 +R77 +R27 +L73 +L2 +R98 +R2 +L605 +L95 +L48 +L1 +R53 +R63 +L52 +L15 +L75 +L725 +R47 +L47 +R45 +R248 +R7 +R75 +R20 +L71 +L58 +L66 +R80 +L89 +R31 +L50 +L72 +R760 +L97 +R19 +R27 +L9 +L73 +L27 +L36 +R94 +R33 +L61 +L80 +R50 +L763 +L51 +L77 +R40 +L82 +L39 +L38 +R442 +L36 +R45 +L88 +R21 +L86 +R33 +L887 +R90 +R18 +L14 +L532 +R74 +R92 +R38 +L30 +L32 +R131 +R31 +L370 +L23 +L40 +L45 +L91 +R67 +R51 +L24 +L25 +R70 +L70 +L95 +R70 +L75 +R67 +L99 +R2 +L2 +L55 +R51 +L180 +L584 +L8 +R925 +R48 +R35 +R87 +R27 +R17 +R75 +L6 +L440 +L240 +R80 +R9 +R15 +R1 +L56 +R31 +L59 +R59 +L98 +L2 +L63 +L62 +L75 +L92 +L98 +L383 +L21 +R30 +R164 +L88 +L37 +L75 +L37 +L63 +L96 +R66 +L84 +L57 +R920 +R7 +R376 +L32 +L87 +L13 +R360 +R17 +R48 +L96 +L82 +L43 +L92 +R788 +L30 +L70 +R51 +R71 +R94 +R49 +L565 +L41 +R99 +L157 +R15 +R84 +R48 +R52 +R21 +L21 +L392 +R492 +R18 +L73 +L40 +R95 +R19 +L19 +R58 +L58 +R6 +L52 +L35 +L719 +R92 +L118 +L431 +L69 +R90 +L15 +R578 +R86 +L76 +R45 +R11 +R7 +L5 +L64 +L28 +R53 +L17 +L39 +R64 +R36 +R78 +L33 +L34 +R87 +R42 +R59 +L724 +R41 +R26 +R58 +L55 +L445 +L74 +L126 +R470 +R69 +R61 +R48 +L48 +L98 +R37 +L439 +R477 +L77 +R162 +R9 +L971 +R19 +R83 +R342 +L37 +R12 +L97 +R53 +R25 +R86 +L22 +L64 +L13 +R29 +L16 +L41 +R429 +L511 +R868 +L275 +R660 +L19 +L16 +L495 +R52 +L41 +R27 +R182 +L128 +L60 +R501 +L12 +L95 +L26 +R11 +L98 +L67 +L46 +R37 +R563 +L648 +L39 +L68 +R10 +L52 +L70 +R82 +L15 +L3 +R16 +L8 +R95 +R101 +R56 +L31 +R62 +R50 +L38 +R23 +R377 +L36 +R17 +R69 +L550 +R516 +L28 +L88 +R85 +L4 +L662 +L84 +R65 +L77 +L980 +L270 +L228 +R31 +L56 +R80 +L7 +R549 +L34 +L22 +R51 +L593 +L44 +L25 +R60 +R13 +R13 +L61 +L86 +L65 +R6 +L846 +L91 +L18 +R73 +R27 +L99 +R8 +R91 +R331 +L10 +L521 +R94 +R6 +L26 +L24 +R55 +R17 +L22 +L12 +R84 +L57 +L2 +L13 +L23 +L433 +R26 +L870 +R96 +R4 +R630 +R46 +L52 +R52 +L92 +L65 +L59 +R94 +R62 +L16 +R14 +R71 +R28 +L33 +L76 +R496 +L382 +R82 +R47 +R53 +L85 +R24 +R4 +L943 +L24 +L76 +R420 +R92 +L1 +L101 +L997 +R97 +L10 +R64 +L81 +L83 +R76 +L88 +R65 +L89 +R36 +R299 +R63 +R538 +R768 +R27 +R36 +R8 +L39 +R18 +L97 +L121 +L643 +R24 +R278 +R21 +L11 +R31 +L95 +R7 +L42 +L70 +L96 +L56 +R52 +R91 +L43 +R58 +R141 +R453 +L71 +R20 +L49 +R871 +R519 +L290 +R52 +R53 +L75 +L30 +R18 +R82 +L90 +L60 +R27 +R86 +R33 +R604 +L374 +R74 +R39 +L39 +L38 +L4 +R35 +L32 +R31 +L76 +L66 +L91 +R41 +L29 +L971 +R7 +R254 +R53 +R34 +L38 +L7 +L9 +L44 +L50 +R4 +L27 +L92 +L90 +R788 +R87 +R81 +L60 +R67 +R42 +R64 +R86 +L52 +L98 +L350 +R26 +L76 +R90 +L118 +R6 +R87 +R31 +L896 +L167 +R88 +L29 +R8 +L3 +R31 +R13 +R76 +L331 +R597 +R56 +R661 +L95 +R14 +L1 +L67 +R8 +R41 +R3 +R397 +L521 +L79 +R42 +R458 +L88 +L8 +L4 +L340 +R86 +R28 +R94 +R57 +R75 +L15 +R49 +L34 +R91 +L59 +R168 +L39 +L44 +R83 +R96 +L96 +L79 +R85 +R16 +L22 +R84 +L84 +L3 +R60 +R43 +L89 +R30 +R59 +R469 +R72 +R59 +L97 +L83 +L462 +R12 +L518 +R69 +L445 +R24 +R12 +L79 +L58 +R87 +R70 +R624 +R9 +R82 +R553 +R13 +R24 +R94 +R69 +R33 +R967 +R81 +R10 +L91 +L840 +L59 +L637 +L64 +R147 +R71 +L66 +L52 +L14 +R14 +R18 +L51 +R76 +R57 +L60 +R70 +R90 +R99 +R78 +L61 +L36 +R20 +R11 +R81 +L92 +L96 +L10 +L94 +R14 +R42 +L57 +L85 +R286 +R395 +L31 +L81 +R17 +R75 +R634 +L99 +R60 +R220 +R15 +L305 +R88 +R70 +L58 +L75 +R49 +R26 +L32 +L12 +R274 +R70 +L37 +L63 +R70 +R27 +R3 +R35 +L6 +R39 +L204 +R605 +R27 +R51 +L47 +L21 +L787 +L92 +R32 +R50 +R315 +L29 +R15 +L75 +R681 +R11 +L27 +L873 +R75 +R907 +L43 +R312 +L51 +R276 +R89 +L8 +L57 +L52 +L98 +R77 +R73 +R83 +L202 +R19 +R289 +L689 +R77 +L77 +L78 +R38 +L960 +R78 +L97 +L881 +L523 +R142 +R365 +L35 +R51 +R14 +L48 +R33 +L32 +R816 +L83 +R40 +R51 +R92 +R17 +L95 +L5 +R6 +L406 +R415 +R85 +R88 +L88 +L611 +R844 +L645 +L7 +L51 +L98 +R68 +R19 +L1 +R89 +R89 +L96 +L34 +R58 +L96 +L90 +L116 +L140 +L87 +R6 +R214 +L69 +L701 +L45 +R213 +R97 +L10 +R936 +L936 +R95 +R49 +R56 +R584 +L48 +L90 +R54 +L99 +L801 +L85 +L27 +R53 +L13 +L266 +R9 +R92 +R7 +L31 +R61 +R956 +L77 +R21 +L58 +R13 +L11 +L44 +L17 +R48 +R44 +L41 +L34 +L76 +L69 +R62 +L17 +R573 +R10 +L1 +L82 +R41 +R78 +L19 +R15 +L74 +L41 +L618 +L82 +L69 +R188 +L601 +L590 +L32 +L14 +R7 +R402 +R54 +L2 +R42 +L36 +L440 +L78 +R69 +L55 +L45 +R54 +R20 +R26 +L1 +R94 +R56 +R89 +R77 +R85 +L6 +R85 +R94 +R27 +L59 +L65 +R21 +R3 +L26 +L163 +R89 +R49 +R12 +R939 +L80 +R65 +L85 +R493 +L6 +L949 +R40 +R590 +L68 +L31 +L617 +R9 +R14 +R25 +L118 +L302 +L80 +R21 +R745 +L56 +R90 +L22 +L63 +L68 +L47 +L14 +R88 +R26 +L48 +L53 +R33 +R47 +R421 +R89 +L34 +R45 +L88 +R47 +L63 +R56 +L24 +L76 +R99 +R49 +R90 +R59 +L386 +R37 +R41 +R20 +L61 +R94 +L16 +L30 +L34 +L14 +L28 +L388 +L86 +L49 +R70 +L19 +L93 +L7 +R43 +L43 +R30 +L30 +R84 +L63 +L65 +L7 +R364 +R87 +R144 +R63 +L43 +R36 +L54 +R64 +R22 +R27 +R41 +R71 +R333 +L633 +L71 +L40 +R13 +L98 +L401 +L49 +R75 +L55 +L745 +L25 +L45 +R77 +L47 +L60 +R61 +R24 +L21 +R36 +R40 +R236 +L76 +R995 +L71 +L6 +L57 +L87 +R48 +L22 +L50 +R50 +L68 +L689 +R76 +R81 +L74 +R22 +R88 +R36 +R76 +L48 +R507 +L78 +R71 +R958 +L97 +R5 +R90 +L956 +L36 +R67 +L243 +R12 +R84 +R713 +R3 +R14 +R86 +L22 +R24 +R698 +R19 +R17 +R34 +L270 +R62 +L27 +L45 +L528 +R38 +R348 +L548 +L2 +L98 +L26 +R21 +R86 +R313 +L94 +L21 +R908 +L801 +L86 +R147 +L47 +L370 +R56 +R79 +R83 +R55 +R97 +R63 +L63 +R8 +R31 +L15 +R961 +R15 +L449 +R250 +L301 +R83 +L67 +L498 +R902 +L20 +L80 +R80 +L75 +R75 +R47 +L93 +R46 +R806 +R81 +L89 +R2 +L51 +R95 +R84 +R434 +R910 +L72 +L49 +R249 +L79 +R747 +R28 +L97 +R201 +L93 +L65 +R58 +R40 +R60 +L24 +R24 +R84 +R16 +R90 +R79 +L69 +L97 +R9 +R93 +R230 +L324 +L50 +R39 +L217 +R77 +R3 +R37 +R28 +L28 +R550 +L832 +L267 +R98 +R26 +L17 +L58 +R77 +L529 +R48 +R4 +L37 +L63 +R40 +L240 +L54 +L569 +R12 +R12 +L3 +L39 +L39 +R8 +L28 +R18 +L82 +L710 +R74 +L7 +L31 +L33 +R71 +L22 +R489 +R39 +R794 +R30 +R71 +L68 +L42 +R145 +R84 +R29 +L964 +L85 +L241 +L40 +R260 +L79 +L15 +L87 +R102 +R21 +L621 +L4 +R504 +R74 +R617 +R9 +L5 +R84 +R21 +R36 +R45 +R13 +L54 +L11 +R788 +L43 +R54 +R81 +L9 +L2 +L39 +L76 +L367 +L16 +L794 +L6 +L21 +R21 +L40 +L616 +L50 +R97 +R85 +L37 +R175 +R86 +R282 +R11 +L136 +L997 +R65 +R275 +L14 +L89 +R3 +L94 +L6 +L59 +R379 +R88 +R81 +L89 +R206 +R94 +R90 +R42 +R21 +R628 +R53 +L17 +R83 +R38 +R35 +L73 +R16 +L64 +R48 +R27 +R73 +L97 +L15 +R12 +L33 +R33 +R67 +L93 +L89 +L20 +L49 +R81 +L97 +L95 +R95 +R31 +L726 +R355 +R105 +L61 +L423 +R19 +R36 +L36 +L96 +R31 +L35 +R721 +R83 +R71 +L75 +R558 +R17 +R725 +L507 +R17 +L10 +L24 +R46 +L52 +R45 +R85 +L82 +L783 +R62 +R303 +R425 +R675 +R21 +R79 +L327 +L453 +R525 +R253 +R49 +R86 +R67 +L72 +L960 +R60 +R61 +R211 +R75 +R762 +R36 +R82 +R432 +R13 +R851 +R48 +R72 +L71 +L586 +R86 +L90 +R140 +R650 +L22 +L27 +L7 +R34 +R50 +R672 +L45 +L55 +L42 +L66 +R8 +L7 +L93 +R421 +L21 +L96 +L20 +R16 +R75 +R84 +L93 +R43 +L99 +R90 +R60 +L225 +R52 +L87 +R71 +L45 +R925 +L32 +L81 +L64 +L574 +L24 +L76 +L7 +R6 +L72 +L427 +R68 +L68 +R87 +L78 +R91 +R64 +R698 +R89 +R49 +L15 +L85 +L188 +L64 +L89 +L86 +L95 +R22 +R854 +R75 +R37 +R13 +L479 +L54 +R76 +L22 +R71 +L71 +L311 +R367 +R666 +L31 +R65 +R44 +L69 +L31 +L4 +L28 +L68 +R55 +L8 +L47 +R4 +R72 +L76 +L30 +L735 +L835 +L54 +R7 +L53 +L64 +L36 +R26 +L988 +L41 +L97 +R330 +L830 +L80 +L20 +R5 +R95 +L807 +R7 +R79 +L19 +L15 +R55 +R7 +R38 +L45 +R12 +R85 +R790 +L66 +R938 +R80 +R261 +R999 +L87 +R470 +R35 +L49 +L46 +L24 +L90 +L17 +L40 +L7 +L44 +L40 +R29 +R11 +L36 +L64 +R513 +L246 +L69 +L332 +R34 +R67 +L27 +R560 +R701 +L82 +R81 +L35 +L67 +R2 +R786 +L58 +R72 +R608 +R641 +R51 +L70 +L34 +R61 +L580 +R54 +L42 +R786 +L975 +R33 +L85 +R708 +R77 +R7 +R71 +L7 +R90 +R29 +R43 +L166 +L527 +R62 +R65 +L61 +R60 +R79 +L46 +R26 +R71 +R28 +L131 +L60 +R855 +L78 +R27 +L84 +L90 +R86 +R518 +L65 +R60 +R52 +L364 +R57 +R55 +R43 +R385 +L15 +R91 +L97 +L2 +L93 +L329 +R7 +R13 +R351 +L428 +R94 +R85 +L5 +R610 +R31 +L99 +L13 +R76 +L76 +L24 +R22 +L43 +R121 +L3 +L61 +R85 +R82 +L673 +R84 +L4 +R90 +L558 +R608 +R5 +L1 +L72 +R6 +R63 +R49 +L890 +L87 +R94 +R94 +R68 +R212 +R26 +L76 +R97 +L38 +R60 +R40 +R32 +R14 +R68 +L9 +L80 +R55 +L55 +R75 +R203 +L68 +R524 +L75 +L79 +L5 +R52 +L22 +L66 +R186 +L79 +L71 +R21 +R29 +L54 +L48 +L48 +R48 +R56 +R96 +L14 +R14 +R37 +R863 +L95 +R45 +R850 +L13 +R50 +L37 +L51 +L82 +R33 +R144 +R57 +R93 +L69 +L25 +L79 +L98 +L58 +L65 +R83 +L83 +L85 +R85 +L55 +R55 +L64 +L36 +L94 +L908 +R87 +R87 +R76 +R97 +L45 +R849 +L48 +R79 +R671 +L9 +R58 +R881 +R9 +L60 +R63 +L93 +L413 +L87 +L45 +R58 +R87 +L28 +R28 +L59 +R27 +L786 +L6 +R66 +L24 +R95 +L13 +R88 +L49 +L39 +L24 +L176 +R8 +R12 +R482 +R19 +L2 +L37 +R31 +L59 +L54 +L423 +R323 +L39 +R7 +L54 +R86 +L305 +R35 +L41 +R76 +L36 +R20 +L49 +L91 +R45 +R63 +L17 +L6 +L20 +R26 +R54 +R59 +L76 +L37 +R84 +R32 +R49 +L21 +R28 +L72 +L49 +L23 +L50 +R30 +R92 +R27 +L27 +L57 +L47 +L50 +L11 +R29 +L6 +L58 +L49 +R82 +R67 +R51 +L51 +R66 +R34 +L37 +R37 +L29 +L76 +R10 +R95 +R35 +R65 +R9 +R91 +R88 +R12 +L44 +R44 +L57 +L43 +R81 +R19 +L81 +L19 +L16 +L84 +L61 +L39 +L63 +R64 +R9 +L11 +R3 +R33 +R3 +R45 +R21 +R20 +R43 +L7 +L50 +R41 +L10 +R31 +R43 +L3 +L34 +L30 +L44 +R4 +R38 +R16 +L20 +R22 +L37 +L6 +L34 +R21 +R47 +R41 +R19 +L29 +L1 +L33 +L26 +R18 +R3 +L13 +L19 +R26 +L12 +L49 +L16 +L48 +R10 +R1 +R48 +R2 +R36 +L30 +L16 +L17 diff --git a/run.py b/run.py index 167eeeb..31a4668 100644 --- a/run.py +++ b/run.py @@ -70,7 +70,7 @@ def generate_commands_pladcl(problem: Problem, flags: Optional[list[str]]=None): run_compile_command(["pladclc", problem.source_location, "-o", problem.build_location] + (flags if flags else [])) run_compile_command(["python3", preprocess_location, problem.resource_location, "-o", problem.resource_build_location]) - run_run_command(" ".join(["cat", problem.resource_build_location, "|", "dc", problem.build_location]), shell=True) + run_run_command(" ".join(["cat", problem.resource_build_location, "|", "./dc", problem.build_location]), shell=True) def generate_commands_pascal(problem: Problem, flags: Optional[list[str]]=None): diff --git a/src/c/2024/day16/part1.c b/src/c/2024/day16/part1.c new file mode 100644 index 0000000..4158c52 --- /dev/null +++ b/src/c/2024/day16/part1.c @@ -0,0 +1,146 @@ +#include +#include + +#define BOARD_SIZE 71 +#define NUM_BYTES 1024 + +#define WALL 10005 + +#define IN_BOUND(x, y) (x < BOARD_SIZE && x >= 0 && y < BOARD_SIZE && y >= 0) +#define MIN(a,b) (((a)<(b))?(a):(b)) + +struct coordinate { + + int x, y; + +}; + + +struct coordinate queue[10000]; +int queue_len; +int queue_start; + +char map[BOARD_SIZE][BOARD_SIZE]; +int values[BOARD_SIZE][BOARD_SIZE]; + + +int queue_pop(struct coordinate *coord) { + + if (queue_len == 0) { + return -1; + } + + memcpy(coord, &queue[queue_start], sizeof(struct coordinate)); + + queue_start++; + queue_len--; + + return 0; + +} + + +void queue_push(struct coordinate *coord) { + + + //printf("%d, %da\n", coord->x, coord->y); + + memcpy(&queue[queue_start + queue_len], coord, sizeof(struct coordinate)); + queue_len++; + +} + + +void check_and_push(struct coordinate *coord, int depth) { + + //printf("%d\n", depth); + + if (!IN_BOUND(coord->x, coord->y) || values[coord->x][coord->y] == WALL) { + return; + } + + if (values[coord->x][coord->y] == 100000) { + //printf("%d\n", depth); + values[coord->x][coord->y] = depth + 1; + queue_push(coord); + + } + + +} + +int dfs(struct coordinate coord) { + + queue_push(&coord); + values[coord.x][coord.y] = 0; + + while (!queue_pop(&coord)) { + + int value = values[coord.x][coord.y]; + + //printf("%d, %d: %d\n", coord.x, coord.y, values[coord.x][coord.y]); + + if (coord.x == BOARD_SIZE - 1 && coord.y == BOARD_SIZE - 1) { + break; + } + + coord.x++; + check_and_push(&coord, value); + coord.x -= 2; + check_and_push(&coord, value); + coord.x++; + + coord.y++; + check_and_push(&coord, value); + coord.y -= 2; + check_and_push(&coord, value); + coord.y++; + + + } + + return values[BOARD_SIZE - 1][BOARD_SIZE - 1]; +} + + + +int main() { + + char *line_buf = NULL; + size_t buffer_size = 100; + + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { + map[i][j] = '.'; + values[i][j] = 100000; + } + } + + struct coordinate coords[10000]; + int num_cords = 0; + + while (getline(&line_buf, &buffer_size, stdin) > 0) { + + sscanf(line_buf, "%d,%d\n", &coords[num_cords].x, &coords[num_cords].y); + num_cords++; + + } + + for (int i = 0; i < NUM_BYTES; i++) { + + struct coordinate coord = coords[i]; + + values[coords[i].x][coords[i].y] = WALL; + + //printf("%d, %dwa\n", coords[i].x, coords[i].y); + //values[coord.x][coord.y] = 10000; + + } + + struct coordinate start; + + start.x = 0; + start.y = 0; + + printf("res: %d\n", dfs(start)); +} diff --git a/src/c/2024/day19/part1.c b/src/c/2024/day19/part1.c new file mode 100644 index 0000000..be555ca --- /dev/null +++ b/src/c/2024/day19/part1.c @@ -0,0 +1,90 @@ +#include +#include + +char towels[1000][100]; +int towel_length[1000]; + +char wanted[1000][100]; + +int num_towels = 0; + +// returns index of first mismatch +int first_mismatch(char* a, char* b) { + + int i = 0; + while (a[i] == b[i] && a[i] && b[i]) { + i++; + } + + return i; + +} + + +// returns 1 if found, 0 if not +int find_arrangement(char* wanted) { + + if (wanted[0] == 0) { + return 1; + } + + for (int i = 0; i < num_towels; i++) { + + //printf("%s v %s: %d\n", wanted, towels[i], first_mismatch(wanted, towels[i])); + + if (first_mismatch(wanted, towels[i]) == towel_length[i]) { + + if (find_arrangement(&wanted[towel_length[i]])) { + return 1; + } + } + } + + return 0; +} + + + +int main() { + + char *line_buf = NULL; + size_t buffer_size = 1000; + + int amount = getline(&line_buf, &buffer_size, stdin); + + int last_comma = 0; + + for (int i = 0; i < amount; i++) { + if (line_buf[i] == ',') { + strncpy(towels[num_towels], &line_buf[last_comma], i - last_comma); + towels[num_towels][i - last_comma] = 0; + towel_length[num_towels] = i - last_comma; + //printf("%s\n", towels[num_towels]); + num_towels++; + last_comma = i + 2; + } + } + + // parse empty line + getline(&line_buf, &buffer_size, stdin); + + int num_wanted = 0; + int n; + + while ((n = getline(&line_buf, &buffer_size, stdin)) > 0) { + strncpy(wanted[num_wanted], line_buf, n - 1); + + num_wanted++; + //printf("!%s\n", wanted[num_wanted - 1]); + } + + int total = 0; + + for (int i = 0; i < num_wanted; i++) { + total += find_arrangement(wanted[i]); + //printf("%s, %d\n", wanted[i], find_arrangement(wanted[i])); + } + + printf("res: %d", total); + +} diff --git a/src/c/2024/day19/part2.c b/src/c/2024/day19/part2.c new file mode 100644 index 0000000..e3bc3fd --- /dev/null +++ b/src/c/2024/day19/part2.c @@ -0,0 +1,126 @@ +#include +#include +#include + +#define CACHE_SIZE 100000 + +char towels[1000][100]; +int towel_length[1000]; + +char wanted[1000][100]; + + +char cache_key[CACHE_SIZE][100]; +long cache_value[CACHE_SIZE]; + +int cache_len = 0; + + +int num_towels = 0; + +// returns index of first mismatch +int first_mismatch(char* a, char* b) { + + int i = 0; + while (a[i] == b[i] && a[i] && b[i]) { + i++; + } + + return i; + +} + + +// returns 1 if found, 0 if not +long find_arrangement(char* wanted, int depth) { + + if (wanted[0] == 0) { + return 1; + } + + for (int i = 0; i < cache_len; i++) { + if (strcmp(cache_key[i], wanted) == 0) { + //printf("cache hit\n"); + return cache_value[i]; + } + } + + long total = 0; + + for (int i = 0; i < num_towels; i++) { + + //if (depth == 0) { + //} + + if (first_mismatch(wanted, towels[i]) == towel_length[i]) { + + //if (depth <= 10) { + //printf("%d: %s v %s: %d.. %d\n", depth, wanted, towels[i], first_mismatch(wanted, towels[i]), total); + //} + total += find_arrangement(&wanted[towel_length[i]], depth + 1); + + } + } + + strcpy(cache_key[cache_len], wanted); + cache_value[cache_len] = total; + cache_len++; + return total; +} + + + +int main() { + + char *line_buf = NULL; + size_t buffer_size = 1000; + + int amount = getline(&line_buf, &buffer_size, stdin); + + int last_comma = 0; + + for (int i = 0; i < amount; i++) { + if (line_buf[i] == ',') { + strncpy(towels[num_towels], &line_buf[last_comma], i - last_comma); + towels[num_towels][i - last_comma] = 0; + towel_length[num_towels] = i - last_comma; + //printf("%s, %d\n", towels[num_towels], towel_length[num_towels]); + num_towels++; + last_comma = i + 2; + } + } + + strncpy(towels[num_towels], &line_buf[last_comma], amount - last_comma - 1); + towels[num_towels][amount - last_comma - 1] = 0; + towel_length[num_towels] = amount - last_comma - 1; + //printf("%s\n", towels[num_towels]); + num_towels++; + + //exit(0); + + + + // parse empty line + getline(&line_buf, &buffer_size, stdin); + + int num_wanted = 0; + int n; + + while ((n = getline(&line_buf, &buffer_size, stdin)) > 0) { + strncpy(wanted[num_wanted], line_buf, n - 1); + + num_wanted++; + //printf("!%s\n", wanted[num_wanted - 1]); + } + + long total = 0; + + for (int i = 0; i < num_wanted; i++) { + total += find_arrangement(wanted[i], 0); + printf("%s, %ld\n", wanted[i], find_arrangement(wanted[i], 0)); + //printf("%s, %d\n", wanted[i], find_arrangement(wanted[i])); + } + + printf("res: %ld", total); + +} diff --git a/src/c/2024/day20/part1.c b/src/c/2024/day20/part1.c new file mode 100644 index 0000000..6f852ba --- /dev/null +++ b/src/c/2024/day20/part1.c @@ -0,0 +1,200 @@ +#include +#include + +#define BOARD_SIZE 141 + +#define IN_BOUND(x, y) (x < BOARD_SIZE && x >= 0 && y < BOARD_SIZE && y >= 0) +#define MIN(a,b) (((a)<(b))?(a):(b)) + +struct coordinate { + + int x, y; + +}; + + +struct coordinate queue[10000]; +int queue_len; +int queue_start; + +char map[BOARD_SIZE][BOARD_SIZE]; +int values[BOARD_SIZE][BOARD_SIZE]; + + +int queue_pop(struct coordinate *coord) { + + if (queue_len == 0) { + return -1; + } + + memcpy(coord, &queue[queue_start], sizeof(struct coordinate)); + + queue_start++; + queue_len--; + + return 0; + +} + + +void queue_push(struct coordinate *coord) { + + + //printf("%d, %da\n", coord->x, coord->y); + + memcpy(&queue[queue_start + queue_len], coord, sizeof(struct coordinate)); + queue_len++; + +} + + +void check_and_push(struct coordinate *coord, int depth) { + + //printf("%d\n", depth); + + if (!IN_BOUND(coord->x, coord->y) || map[coord->x][coord->y] == '#') { + return; + } + + if (values[coord->x][coord->y] == 100000) { + //printf("%d\n", depth); + values[coord->x][coord->y] = depth + 1; + queue_push(coord); + + } + + +} + +int dfs(struct coordinate coord) { + + queue_push(&coord); + values[coord.x][coord.y] = 0; + + while (!queue_pop(&coord)) { + + //printf("%d, %d!", coord.x, coord.y); + + int value = values[coord.x][coord.y]; + + //printf("%d, %d: %d\n", coord.x, coord.y, values[coord.x][coord.y]); + + coord.x++; + check_and_push(&coord, value); + coord.x -= 2; + check_and_push(&coord, value); + coord.x++; + + coord.y++; + check_and_push(&coord, value); + coord.y -= 2; + check_and_push(&coord, value); + coord.y++; + + + } + + return 0; +} + +int cheats = 0; + +int test_cheat(int x, int y, int value) { + int v; + if (IN_BOUND(x, y) && (map[x][y] == '.' || map[x][y] == 'E') && (v = values[x][y] - value) > 2) { + v -= 2; + printf("cheat: %d\n", v, x, y); + + if (v >= 100) { + cheats++; + } + + return v; + } + return 0; +} + +int test_next(int x, int y, int value) { + //printf("%d, %d\n", value, values[x][y]); + return (IN_BOUND(x, y) && map[x][y] == '.' && values[x][y] - value == 1); +} + + +int find_cheat(int x, int y) { + + //printf("%d, %d ", x, y); + //printf("%c\n", map[x][y]); + + if (!IN_BOUND(x, y)) { + return 0; + } + + + int value = values[x][y]; + int v; + + test_cheat(x, y + 2, value); + test_cheat(x, y - 2, value); + test_cheat(x + 2, y, value); + test_cheat(x - 2, y, value); + + if (test_next(x + 1, y, value)) { + return find_cheat(x + 1, y); + } + if (test_next(x - 1, y, value)) { + return find_cheat(x - 1, y); + } + if (test_next(x, y + 1, value)) { + return find_cheat(x, y + 1); + } + if (test_next(x, y - 1, value)) { + return find_cheat(x, y - 1); + } + + return 0; + +} + + + +int main() { + + char *line_buf = NULL; + size_t buffer_size = 100; + + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { + map[i][j] = '.'; + values[i][j] = 100000; + } + } + + struct coordinate coords[10000]; + int num_cords = 0; + + + struct coordinate start, end; + + int y = 0; + while (getline(&line_buf, &buffer_size, stdin) > 0) { + for (int x = 0; x < BOARD_SIZE; x++) { + map[x][y] = line_buf[x]; + + if (line_buf[x] == 'S') { + start.x = x; + start.y = y; + } + + if (line_buf[x] == 'E') { + end.x = x; + end.y = y; + } + } + y++; + } + + dfs(start); + find_cheat(start.x, start.y); + + printf("res: %d", cheats); +} diff --git a/src/c/2024/day20/part2.c b/src/c/2024/day20/part2.c new file mode 100644 index 0000000..22f933e --- /dev/null +++ b/src/c/2024/day20/part2.c @@ -0,0 +1,224 @@ +#include +#include +#include + +#define BOARD_SIZE 141 + +#define CHEAT_LENGTH 20 + +#define IN_BOUND(x, y) (x < BOARD_SIZE && x >= 0 && y < BOARD_SIZE && y >= 0) +#define MIN(a,b) (((a)<(b))?(a):(b)) + +struct coordinate { + + int x, y; + +}; + + +struct coordinate queue[10000]; +int queue_len; +int queue_start; + +char map[BOARD_SIZE][BOARD_SIZE]; +int values[BOARD_SIZE][BOARD_SIZE]; + +struct coordinate cheat_deltas[10000]; +int num_cheat_deltas; + + +int queue_pop(struct coordinate *coord) { + + if (queue_len == 0) { + return -1; + } + + memcpy(coord, &queue[queue_start], sizeof(struct coordinate)); + + queue_start++; + queue_len--; + + return 0; + +} + + +void queue_push(struct coordinate *coord) { + + + //printf("%d, %da\n", coord->x, coord->y); + + memcpy(&queue[queue_start + queue_len], coord, sizeof(struct coordinate)); + queue_len++; + +} + + +void check_and_push(struct coordinate *coord, int depth) { + + //printf("%d\n", depth); + + if (!IN_BOUND(coord->x, coord->y) || map[coord->x][coord->y] == '#') { + return; + } + + if (values[coord->x][coord->y] == 100000) { + //printf("%d\n", depth); + values[coord->x][coord->y] = depth + 1; + queue_push(coord); + + } + + +} + +int dfs(struct coordinate coord) { + + queue_push(&coord); + values[coord.x][coord.y] = 0; + + while (!queue_pop(&coord)) { + + //printf("%d, %d!", coord.x, coord.y); + + int value = values[coord.x][coord.y]; + + //printf("%d, %d: %d\n", coord.x, coord.y, values[coord.x][coord.y]); + + coord.x++; + check_and_push(&coord, value); + coord.x -= 2; + check_and_push(&coord, value); + coord.x++; + + coord.y++; + check_and_push(&coord, value); + coord.y -= 2; + check_and_push(&coord, value); + coord.y++; + + + } + + return 0; +} + +int cheats = 0; + +int test_cheat(int x, int y, int value, int dist) { + int v; + if (IN_BOUND(x, y) && (map[x][y] == '.' || map[x][y] == 'E') && (v = values[x][y] - value) > dist) { + v -= dist; + //printf("cheat: %d\n", v, x, y); + + if (v >= 100) { + cheats++; + } + + return v; + } + return 0; +} + +int test_next(int x, int y, int value) { + //printf("%d, %d\n", value, values[x][y]); + return (IN_BOUND(x, y) && map[x][y] == '.' && values[x][y] - value == 1); +} + + +int find_cheat(int x, int y) { + + printf("%d, %d ", x, y); + printf("%c\n", map[x][y]); + + if (!IN_BOUND(x, y)) { + return 0; + } + + + int value = values[x][y]; + int v; + + for (int i = 0; i < num_cheat_deltas; i++) { + //printf("%d, %d\n", x + cheat_deltas[i].x, y + cheat_deltas[i].y); + test_cheat(x + cheat_deltas[i].x, y + cheat_deltas[i].y, value, abs(cheat_deltas[i].x) + abs(cheat_deltas[i].y)); + } + + if (test_next(x + 1, y, value)) { + return find_cheat(x + 1, y); + } + if (test_next(x - 1, y, value)) { + return find_cheat(x - 1, y); + } + if (test_next(x, y + 1, value)) { + return find_cheat(x, y + 1); + } + if (test_next(x, y - 1, value)) { + return find_cheat(x, y - 1); + } + + return 0; + +} + + + +int main() { + + // calc cheats + + for (int x = -CHEAT_LENGTH; x <= CHEAT_LENGTH; x++) { + for (int y = -CHEAT_LENGTH; y <= CHEAT_LENGTH; y++) { + + if (abs(x) + abs(y) <= CHEAT_LENGTH) { + //printf("%d, %d\n", x, y); + + cheat_deltas[num_cheat_deltas].x = x; + cheat_deltas[num_cheat_deltas].y = y; + num_cheat_deltas++; + + } + } + } + + //exit(0); + + char *line_buf = NULL; + size_t buffer_size = 100; + + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { + map[i][j] = '.'; + values[i][j] = 100000; + } + } + + struct coordinate coords[10000]; + int num_cords = 0; + + + struct coordinate start, end; + + int y = 0; + while (getline(&line_buf, &buffer_size, stdin) > 0) { + printf(line_buf); + for (int x = 0; x < BOARD_SIZE; x++) { + map[x][y] = line_buf[x]; + + if (line_buf[x] == 'S') { + start.x = x; + start.y = y; + } + + if (line_buf[x] == 'E') { + end.x = x; + end.y = y; + } + } + y++; + } + + dfs(start); + find_cheat(start.x, start.y); + printf("res: %d", cheats); +} diff --git a/src/c/2024/day24/part2.c b/src/c/2024/day24/part2.c index b09ba0f..c91a9c2 100644 --- a/src/c/2024/day24/part2.c +++ b/src/c/2024/day24/part2.c @@ -21,6 +21,10 @@ int number_from_id(int id) { } +int get_letter(int id) { + return id / 65536; +} + int operator_to_id(char* str){ if (strcmp(str, "AND") == 0) { @@ -148,8 +152,11 @@ int main() { num_rules++; } - int found_zs[max_z]; max_z++; + int xy_ands[max_z]; + int xy_xors[max_z]; + + int rule_applied[num_rules]; for (int i = 0; i < num_rules; i++) { @@ -160,76 +167,32 @@ int main() { for (int i = 0; i < max_z; i++) { - found_zs[i] = 0; + xy_ands[i] = 0; + xy_xors[i] = 0; } printf("Read %d values and %d rules, trying to find %d zs\n", num_values, num_rules, max_z); - for (;;) { + for (int i = 0; i < num_rules; i++) { - for (int i = 0; i < num_rules; i++) { + if (get_letter(rules[i].op1) == 'x' && get_letter(rules[i].op2) == 'y' || + get_letter(rules[i].op1) == 'y' && get_letter(rules[i].op2) == 'x') { - int v1, v2; - - if (rule_applied[i]) { - continue; + if (rules[i].operator == 3) { + xy_xors[number_from_id(rules[i].op1)] = rules[i].result; + } else if (rules[i].operator == 1) { + xy_ands[number_from_id(rules[i].op1)] = rules[i].result; } - if ((v1 = get_value(rules[i].op1)) >= 0 && (v2 = get_value(rules[i].op2)) >= 0) { - - int res = apply_operator(v1, rules[i].operator, v2); - - //printf("%d: %d\n", rules[i].result, res); - - add_value(rules[i].result, res); - - if (rules[i].result / 65536 == 'z') { - - found_zs[number_from_id(rules[i].result)] = 1; - printf("Found z%d\n", number_from_id(rules[i].result)); - //printf("%x", rules[i].result); - - } - - rule_applied[i] = 1; - - } - - //printf("%d, %d\n", v1, v2); - + printf("%d: %d %d\n", rules[i].operator, number_from_id(rules[i].op1), number_from_id(rules[i].op2)); } - int finished = 1; - for (int i = 0; i < max_z; i++) { - - if (found_zs[i] == 0) { - - finished = 0; - break; - - } + + if (rules[i].result / 65536 == 'z') { + //printf("%d", rules[i].operator); } - if (finished) { - - break; - - } - } - - long out = 0; - for (int i = max_z - 1; i >= 0; i--) { - - out *= 2; - int n = get_value(zvalue_to_id(i)); - printf("%d", n); - out += n; - - //printf("%x\n", zvalue_to_id(i)); - } - - printf("\nres: %ld\n", out); } diff --git a/src/plasl/2025/day2/part1.psl b/src/plasl/2025/day2/part1.psl new file mode 100644 index 0000000..0194bb3 --- /dev/null +++ b/src/plasl/2025/day2/part1.psl @@ -0,0 +1,189 @@ + +i64 write(i32, ptr i8, u64) { + `scsbsa` + syscall3(i64(1), `la` as i64, `lb` as i64, `lc` as i64) +} + +i64 read(i32, ptr i8, u64) { + `scsbsa` + syscall3(i64(0), `la` as i64, `lb` as i64, `lc` as i64) +} + +i32 open(ptr i8, i32, i32) { + `scsbsa` + syscall3(i64(2), `la` as i64, `lb` as i64, `lc` as i64) + as i32 +} + +void exit(i32) { + as i64 i64(231) rev + syscall1 trash +} + +void putc(i8) { + array i8[1] `dstr` store + write(1, `lt`, u64(1)) trash +} + +u64 strlen(ptr i8) { + dup while(dup load i8(0) !=) { 1+ } `r-` +} + +void print(ptr i8) { + 1 rev dup strlen write trash +} + +void println(ptr i8) { + print i8(10) putc +} + +void printnum(i32) { + + if (dup 0 ==) { + putc('0') + } else if (dup 0 <) { + `0r-` '-' putc + } + + array i8[11] 10+ dup i8(0) store -1+ `sb` + + while (dup 0 !=) { + 10 divmod 48+ as i8 + `lb` rev store + `lb` -1+ `sb` + } trash + print(`lb`1+) + +} + +void printnum64(u64) { + + if (dup u64(0) ==) { + putc('0') + } + + array i8[20] 20+ dup i8(0) store -1+ `sb` + + while (dup u64(0) !=) { + u64(10) divmod u64(48)+ as i8 + `lb` rev store + `lb` -1+ `sb` + } trash + + print(`lb`1+) + +} + +i32 atoi(ptr i8) { + set string + 0 + while (get string load '0' >= get string load '9' <= &) { + 10* get string load '0'- as i32 + + get string 1+ set string + } +} + +u64 atol(ptr i8) { + set string + u64(0) + while (get string load '0' >= get string load '9' <= &) { + u64(10)* get string load '0'- as u64 + + get string 1+ set string + } +} + + +i32 abs(i32) { + if (dup 0 <) {`0r-`} +} + +u64 pow(u64, u64) { + `sudsl` + + u64(1)`si` + while (`lilu` < ) { + `ll*` + `li`u64(1)`+si` + } + +} + + +u64 range(u64, u64, i32) { + set len set end set start + + println("==") + get start printnum64 ' ' putc get end printnum64 i8(10) putc + + if (get len 1 & 1 ==) { + u64(0) return + } + + pow(u64(10), get len 2/ as u64) u64(1)+ set divisor + + get start get divisor + u64(1) - get divisor / set first + get end get divisor / set second + + i8(10) putc + get divisor printnum64 i8(10) putc + get first printnum64 ' ' putc get second printnum64 i8(10) putc + + u64(1) get second + get first - get second get first +* u64(2) / get divisor * + + dup printnum64 i8(10) putc +} + +void _start() { + + open("example.txt", 0, 0) set file + array i8[65535] set buffer + get buffer i8(48) store + read(get file, get buffer, u64(65535)) as i32 set size + get buffer get size+ -1+ ',' store + + u64(0) set out + 0 set i + + while (get i get size <) { + println("--------------") + 0 set startlen 0 set endlen + atol(get buffer get i+) set start + + while (get buffer get i+ load '-' !=) { + `li1+si` + get startlen 1+ set startlen + } + `li1+si` + + atol(get buffer get i+) set end + + while (get buffer get i+ load ',' !=) { + `li1+si` + get endlen 1+ set endlen + } + `li1+si` + + get startlen printnum ' ' putc get start printnum64 i8(10) putc + get endlen printnum ' ' putc get end printnum64 i8(10) putc + + if (get endlen get startlen !=) { + range(get start, pow(u64(10), get startlen as u64) u64(1)-, get startlen) + range(pow(u64(10), get startlen as u64), get end, get endlen) + + + } else { + range(get start, get end, get startlen) + } + get out + set out + + i8(10) putc + } + + + println("answer:") + get out printnum64 i8(10) putc + exit(0) +} + +void main() { + _start +}