Solution 19-1

This commit is contained in:
Jack Jackson 2025-01-20 13:02:20 -08:00
parent 6a8d9325e0
commit f06c75a2e2
4 changed files with 508 additions and 8 deletions

402
inputs/19/real.txt Normal file
View File

@ -0,0 +1,402 @@
guwgbuug, bubbb, grw, wwrbbgug, wrruwb, wgw, wgubbrwu, rrgb, gbrr, gbbgb, rrr, grbrgrur, bgrrub, uubrbwwr, ubwug, rgggg, gwggb, rruwbbbw, uubr, gugwwru, rwru, bgg, rrbgug, brgrw, brwwgrg, ubrrb, wugb, ggrg, buu, bwu, urru, rguw, uuwu, wbr, wuw, rwubww, uwgggb, gbb, guubur, ruw, bwwgrbur, bbbrbbbw, wbrbg, rwgrw, bwgb, uwubwug, bur, bbuwgbug, uurw, rwwbrr, ggur, ugr, wwu, uwbwbu, brg, bw, urg, ubwgguu, wwbuwug, bbgbw, ubrgu, wub, rruur, ggg, rgwgr, wgrrg, wwbr, gbgbru, uuugru, ggbwrbw, rbbrg, bgwrb, rgrgubb, wwbug, wrrrwbwr, b, gurb, rurwg, wuwb, rrw, rbub, gwr, bwr, wuwuwbw, uugb, ugggu, gw, ugubbw, wurwwr, ubw, bbw, brugru, wuwuu, buruw, rwrru, wwurubr, gwu, ugrr, wuu, wgbgg, ugrw, bwgbwu, rwuu, uwbb, bgggr, wwgbu, uwgwwuwr, bwb, gwrwg, wbrb, bgbuug, gwwwgb, uwu, ggr, ubuguu, gbuurb, ugbuu, wrbgww, rrbugug, ruru, rruwr, guug, rwb, gbwurg, uuurgwwg, ruwrb, gbg, guur, gwb, gb, uwwbrb, gww, ggbwrg, grr, uubu, urbb, ugu, ggwb, buurw, bgr, rbw, uwr, urw, bgugrrg, rguuwb, wrggg, brw, urgbbw, wwrb, bgrw, ugug, brrbbb, wbwwuu, bbbu, bww, wrg, bwbgu, rgu, urrwr, gugwu, rrub, buw, ubb, rrgu, ubu, grrug, ubugbrb, uruub, gwwrg, ugg, wuuuurr, bubwwu, gbr, rwgurw, wrw, uruw, rbr, grgb, wwg, rr, ugrb, rgb, ggrw, wg, wrgwrw, rgwb, rbb, rgw, bwgw, gggg, ruu, grww, rgur, gwuu, rwwg, bwgwr, rg, bgrgu, bu, uru, ubg, gur, ubbur, rb, ggwuugw, gg, wruu, wbb, gwrrgr, bgb, bug, ruuub, ug, brr, uwg, urgub, rwu, wubr, bbbbur, bg, rub, wgu, bbwbbgw, uur, bbb, rwr, g, wbwb, urgrurgr, wgg, wbgug, ugbbb, bbr, uug, rgg, gguub, bgwg, rwurubgw, wwuwu, ubgr, bbu, bgww, uuu, bgugugg, wbbruwug, rwgg, uuurb, bwubw, bb, urrbb, grbbbb, buru, gbbg, wruuw, wwbwug, urwbrbwg, gwrb, rgug, bru, wrrbwrg, www, rur, gggw, wwgwww, grb, rgwg, wgur, wwrwrr, gru, grwug, bwuw, rru, wuruw, guw, uu, brrbgg, ggrr, ww, bwbbrw, ururgrwb, wu, rwbg, gbw, wgr, rgru, gbrg, wbub, ggb, brww, ggu, brwgu, bbwbrrg, gbwgrub, rgr, gubwrb, rbgg, rrbu, rbrw, guuuub, bwwwb, uwggww, rrg, wwwub, rrwwu, rbbr, ur, rubrurg, brb, rrwubww, rrwru, gbru, u, wr, ruwu, uruuggg, gu, uubwg, bggr, wurggw, uuwwurb, rurbuuu, wbu, gug, bbuw, urrubb, bugwrwr, urb, bggbb, ugrrrg, ugwwgg, rwg, wwrwbb, wbg, rrbrg, uwuw, rug, ugrwgbw, gwbgu, rgubbw, wbw, gwww, brruu, gwgw, uugbrub, gwwruwr, rbg, gwwwg, ru, grg, wwurg, uubbb, ugw, gruwr, uubg, gubw, wru, rwwwg, urrgwg, ugb, wbbbuug, urgrrur, ugwwguw, w, uww, urrwwu, bwgr, ugbbbwg, uub, urbww, uwwb, gubrub, uwrg, urr, gwru, uugg, uwb, uuwb, burbbu, wb, uurr, gubuu, uwuu, rbwu, wrr, wwrub, bbg, brgrb, ggw, rbu, wwbburur, wrggbwww, gbu, ugrbrr, ruurrwgu, grwrwb, uwruru, uuw, guu, gbur, ub, gbwwg, wguu, gr, ubuubr, uwgu, bub, rbwgruu, wbwrgrr, ururu, bwg, rbggg, gbubrw, wrb, buwbr, grrr, gwgbu, buug, rbrbrwg, bruurrb, brrw, ubbb, wwr, rw, bwbw, grrb, wrwbuu, ruuugru, wgwwgwg, wwb, urbw, rbrwbb, uwub, gbugg, gwbr, rwrrb, urwruuw, buuwg, rww, guburw, bggubg, wug, urggbr, rrwwg, bgw, gwg, ubrgwur, gub
ubwwwrggbwwwburgrwbugggubwrgwwrwuwwgrbrgwuwwurwrggrbggubr
ruwbwwgrgrwwwgwrgrrbrrurrwggrgrbrururgwruw
gbguggwwuggbubugbugurwbuwbuggwgrbrrbugrburggubr
uwgrrbggugrurrruugrgwrwgubrwrgggwrrrbbbruwb
gwruuugwgbbgbwrwgubbbuguwwgrruubwbrgugbgwwbwbbbrgwbubr
gggwbggwgurugbwbgwwwggbwuggbwgbbgbuwrururwwbuwwbgg
uwwburbrburwrrbwbrwwubrggggbbwwggbbugwbbwbggrrgbwgggu
gwruruguwuuburuugrgguuuwgwrgwubbgruguwrbwubrrubr
bgrbwbbbgwwwbrbbrbbbuugbwugbburuuwbbbbrgwwgrrgg
ugguuugbrubwrwbuwbgwwgbbbgurggwwuwwwbwgubuwruurbr
rurbwbrrbwrwrruurgubuubuubbgwrrwwbbugrwggwurrrbggwrbgwbrug
bbggburbbuggbrrwgugubwguugwbguuurguwrrwgwrgrg
ugbuuwgwgwwurrwbggugwburbgwubuwwbgugruwrubr
rbwurbrggbbrwggbbrrrgbgrurrwggubwgwwwrrgwrrguurug
rgwwrgwguubwruuuurwgwbwrgbubrubwwugbggugrbugggrwwgwbrw
buwrgbbrrgbwbrgwbubrgugwbgbgbwbwbwwrgrwbwgurbuwu
rubbwbrgwggbbgwgburrbrbrwbggbgugbgurbbwbuwbbbbubg
rgggbubwggubgrbgwuugburbubbguwuurwububwubuwrbugbuuugwgr
wuurgugwrwwwgwuwugrugrwbbburbwrruwbwgggguwgbruwbg
bggurbrwbuggugwbubguuwwguwguwwubwwrwrubgggug
rrbgbrgwwgrururwbgbbubururruubggrrurwuurbbgubr
wugrgbbuwuwgruruwwbgwuguurgbwugrwbbuwwgbuwugugbubwgwgr
brwwwguwrubgwgrrguwrrgrbbguuwbrruwwbgbwuwbgwurgwbgb
grggugugrwrwurbwrggrurrbubbrwgwwrurwgrbrgrurbwrgubr
wrrurrwubbgbbbuurbruggrrwgguuwbuurgruwbuugwrwgwuuugurgru
grrbbbwwuwurgwrbrwugubbrrguwbguggwugurbbrrrb
wugbguugbgwuubrgguuubbubbbbgburrwgrurbrbbu
wwuurwwwgbbwrwgbgrrgrwrgbubbuubgwwurwgbwbubwrwrbbbgbub
wggbwurgrurgrrwuugbwuwwuuwgbwwrgruwrgwuwwbububr
gwuurguwbrrbwgbwrbbgubbggrwwrbbuwuuburrwgugbububr
ugbrubwgugwwrugbrgubbbuurguuggwwubgggbrbwbwbwwgb
gbbuuwbrrggbbrugrwbbbbgrurgbbguurggwurwbrwuguwwwgrbubuw
wubbrwgbbgwguwggwrbgwbrgbrbwwugbbbrrwrbubr
bggwbggrbrggrurrgrbbuwrwggrwbuuurguubrwbwuwrwuwr
bururguuuuwwrgwububrrugwuuwwwwwugwwwgrugbggwrgrgrurgubrwug
gwbgrguwurgrbgrwuwgwwuwruurrbbugrwwbbwbwgwuggbbgbgwugww
grggbbwurgrrbugbwbgrrruubwgbugggrwwgwuuwwuwrgugwwwgg
wrwbrgbwbrwbuwwwrrgggbbguuuuubuwurgwguuwurrggbwwrwugwgbrg
gbuwgurgrwwbgbwuwgbwrruuwrrgrgbguguwbrgwrgrgrr
uuurugbgrwrrubwbwbgugguurrguguuurrgrrwbbgwurwwwrbgwgw
rgwrugrugrgbwwburwwwbggwwwwbwbwgrgbrgurbguubbguguubrb
uggrwguwurubwbwrugguwggbbrrrrwwbruugwbrrgurubrgwbgwggr
wbwggwwrbgbubgrwbubggwbwbbuggrrbgggbgrrurwggwwbbrrubr
rrrbguburwgubrbubuwwwrgwwugbrwwwbuwuwrgrburbw
rgrguwrgruuuwrgggbrgwgwwwgwrgwwurubuwurruurrwgubgwbwbgubr
bwwgrwwrwrrgrbuuurrugrugurgwrurwrubgwwwurwuug
rgwrggbrrbbgguwbbwwubggrbggugwrwbrgrruwuurgbwwu
wwuurwugrwuguuubuwwurrgrrggggurrbbuwwbgrbrwwgurgrbggrruwg
ugugwwwrggbgguwgwgwwgbggbwbgbgurrugugubr
brrubwwgugwrrugugurruwrwbuuuruubrbbguwggurbrwuwg
wgbbuwbgbgwuurwbbuuwgbuurbuggrwwugbgwgurwu
gwwgguuugugruubrwbwbbwwgurrgrrgrwrbbuguruub
wbuuuwrbbbbbbbwgwubuugggrubwubgurbwugrgrubwrw
gurwrruwbguwrurwrbwrbggbbrwwgrbwrbrbururbubwbrurwwbubu
rrggbbbrrrrwbbwgwrbbwwwwururgrwbgbguubgbwruru
bgrwggurgwuubbrbgwgwguubrbwwwbrggwgbgrbwrrgwwubrgug
bgwwgwgugrgrgwwbbgubwgugbuugrgrruugwwggwbr
rbrugrgurbwwrburbgrugugrubbgrgrrugwggwgubbrru
urwwbwgbuguurbbugrwrgugwwwgwuwgbuwwugbgbgrrrwbgrggrwbwu
wrwubbwwrgrbrurwrgwrgwuwbubrwuugwggbwbbrrugrgbwwbubu
rgbrubuurubgbwgbrgwrurgbggwgruruwwruurwugwwwurbbgwburguur
gbrruwrgbwwubrbwgruuwuurbwugwruuubgruggwubugrbrrbrgwburgbb
bggbwbgbwrgggrrggrbgubgwbbuwwrrwwggrwruwrbbbb
brwbwrgggbbuwwrrgrgwguwbbwuburwwrgwggrggwbrgwububrrbr
burburuwgwbguuwwugububgugbrbbbwwbuwggguwgwuwwbwugubr
uwbrwwgbwwgbbrguubbrurbwgwwwgwugggruugrwrbwrugbw
ggururbbrbbuubwbgbwurggggurrwubwurrrrrrgrbwgubgwrwbbgrggw
wgwubuguwuuggwuwwgugbgugbwbgguggwugugguuurwbgwwwbururgwwru
rgbrwgurwbwwgbguuuubuuuwuurrrguwwbwwgbruwbubu
brwgbwwrubguwwbbruugbbugurbrwgbrgbrrwguubwuuuubgggwwgr
gwrwburubgwwwgggubrbrguburbuuuggbwrrubugrgbguuwgubrgbr
uwuwgwugwuwurgrrgwwurbwubbgbubgwwwggruguwbgwgbuggrrrbuwggr
wbwwuurbbbubbbbubwuwrwgwuuguwwgwgrrwrrbruwbrw
brrbrbbbuwbwrrbrrwurubrrgrwwbwuwbrwrwuururwgr
wwbwubgbbugwgubbuwrugbwrurwwuruwbruuuguggbwrurgruuugbwwgww
gbwbruuurgwwgwrbgrbrubgwbbruwurwrgurbugwubbuubuwguu
gwwwugurbrburbbbbugrwwguwgbuugrgubgburuururwrrubwugurr
bwggwurggguubbbggwrbbuwgwbrwgugburbrbwwrwu
gurrrrgburbwwguuwburbwgwgwrwgwwwrrrbrgrgrwwbgg
wbubbwwrggrururgrbwuwuwrurggrwbbwwrgwrbbguuwwwbrrububbrubr
ruuwbrguwwguwwrwrrrbwrrgruggguurgrbwruugrrgwrwwbwrrbrbwbubr
grgwubggbbgwwggubgbwwrbbuugwrbwuruuwubggwuuw
bwwwurbburrgubbggbbugubwbgruguwugrrbggrurbwwru
uruuugbbbuwrrwbugbggrwwurbbrbrwbwuwbuwuugwuwrb
ubrggrgrrbbbbrbbbwwuubbrwrwugbrbbrggggbgrrwrgurbbbgb
grwugbbbwrburgwguwrrbbgwgrwwbubrbbrrgbbgruwrwurbrgugubrwbr
uburrrrwugububrbwugbugwggggwbgwugugbbrbwbwwggbbg
ruwwbbuwwwrrbwbugbrurbrbbrrbguwrrrrwrwbwbubgggbbwrurwrbw
gguugbuburbrggwuburwrrwggbbrwgguwrrrwbugwbwwuubrwggbubr
gwrbgwuwrrbuguuuuuururgrwbbbrurgbgbuuubbrbububgggbrubr
bbgggubgwgrwgguubuurbbugruwbwgbrbuuugggbwbburwwruuwwrwg
uburbwrwguuruuwrbuwrbwruuwrgggwrgugurbbgrrgrbguu
rgubwbbbbgwugburbrrugruwruwgwururbugrrwrguu
rbgbgrgwggwbguggwuuwbuwruguguwwbuwwuurbbgrruwbugwwgbrg
gwwbggwwrubwurbrubgurgrrwbgrwuwgbwuwrbgbwbrwrgbugwrgwrgub
uubwwrwrbuubbwguuwwrurrurwbgurgwuuwbgbbrgubggr
gwrwgwwbwrwugrbwgrgbbwrrrwbwrwgwuwbrbwrugrwuruuwrbbuuurubr
brwuwbrgbuubwbwwbgbwrwugbgwgbbubrbwgruuwbwubgururbuggggur
gwwbburwgwwrrgrwbwurrwbugrgwwwbgbgbwwwbrgbrwugbrrub
wrbubbrgwwwgbgbuurgrwurrgwgrubwubrggrwuubbrwrbbrwgwrggbwww
buuuwgruggwwwgggwbggwwrbruuubruubbbrwggggrgbbrwrwr
ggbbwgwurrwuuwubrbwuguggbrugrgggwwrgubbuuwrburrwgr
rwbwurbrwbrbuugbuggubbgggwwbrgbrrggugruurbr
bggrgwuuguuwbruuurrwwbgwbgrgrbugbbrurbbwgurwwrwrrgr
uwwuwbwuuwbwbburburbrwbrggbggurruurwrrwuwuubguuwbrbrgubr
rrwuwuwwruwwbgwrgbbbrbrrbguguurubbwuurguugubbr
wrwrbwbrurwwwbggwrbwrrrgrubgrurrwubwbugrrwrbgguwubruu
rwuuubrruuwuggrruubrrgguwwwgbwbrgwguuwubbguru
rbrubburggbrwbgrwrgbruggrbggrurrrwrbuurbubbuw
rbbbwwrurrrgubbrwrrgrrwuwgrrwbbuuubgrwubgbbuug
rrwgwbggggbrrrgubbbrbbbwbwwbbbwwgububwugwbubwbrbwubwwgubr
urggbwurwbwwuubrwuurbuubbgbwuwwugrubrubwbwwrwrrubr
uuwrgrgbrwuurgrgrrbbbwrbubgwgbwgwbuuwgbrurburbrbrruurub
rurrrgbwwbbrubgrbwbbggrwubrwurubgwgwwuwrwbrbwgugugbubgbg
rwurbrruwuruburgugwwbggrurugwggbgwuwgbwwurbuub
ggrwbbgbuburwguuuruwbbbrububuwbburugwgrgwbbb
wbgbrugurgbugwwruwggubrrbgruguwrbrgbwgrwuburrrurw
gbwugugbbgburgurbrugbwrgbwwwgwurbbrwwgugrubwgrwwbuugrubr
wrbuuwbrubbbrwwwwrgrrwubgrrrwwuwubrrruugbrurrrgugg
bbwwbwuubbgbgbrrwruwruwbbwggrwubguruwwwrguggwwwgrugrgwww
wwwrbwrgrbugbrrrbrrrwburuwguruwwwrgrbrugurrwbug
grgbbwbrggrbrwrbuuururrwgruggwbrwwgbwbrwgwgruggbggwrwbbggg
wwurgbbgwrrwuubguuugguubwbrgubggwrwggwbwwrgrugbwbg
uwugrgubrwwwgugwrwgbggwbggbwbuuurguwwggbrrgwgwuggrgruuu
wuwrububwgrgbbuubrwbrguwbwubbwuwwuubggwwwuggbw
rgrbgwubgrrwbbbuwrwrrbbwwburubbbguwbgrbgwgrubggubr
wgbwwgbrwurwrwrrrburbwgurwbwbwbbugrwrbguwwgubwbrugruuu
uwrrbbubbggbgbwuruggrugwbwrrgrubwbrgbwbwguurrubrb
wbggwgggbrbwurwbubuwwggrwugbgrgruugrurrrwuuwwrbugubr
rbgwrrurrurgrrgwburbrgbugbwurwbbgurubuwruuwbbwbwgr
ruburgwrgugurgbwwbugrbrruwrugugwuwwbguwurbugguubrwugubr
rwwuwgbwgbggburgwwugrrbbbgwbwgrbgrrwgugbgrr
ugbgbggbwwuwggrgwrwwwwuurwrbwbwrggbwwrwwrrrbwwuwbrgbggurb
uuwrwrwuwrguwuwwbbwbggugguwrrbbuuurugrubr
gggggbuwbggbugbrrwubrrbwuuwbbrugbbwrrgbwrugwgubr
bbrgwrwwbggbbwbwrrwwbbwubgguwgugrrgbrwgbrgurggwwbuwuwwu
grgwgrbugurburbrggwugrrbwwguwbwgrrrwurwbbbggwbbbggu
rwbbgwuwwrwbwbgrbgrrguuwbbrubbgrbgbbuwwrbggubggrugur
ubwrgrwwgbwgwbgwbbuwbuurgwgruwrrurubwbgbuww
rggrwrbbwwrgbbgggurugugugbwbuurrrgrguugwwwubgwugubr
grrgruuwurgwrbwbrubwugrggwgubruuubgwbrrwggrbrwr
gubbruwubwuwwbrbwgbguuwbguwwgwwbbwubwwbwururbbrwurru
gwwbbuuwwrggruguubbbwurwwgwwbrbrrubrrbwwrrrbwrrgburwgwg
ubrugrgurrgugwrubwrgbbuwwgggugwuugruwbbbbu
uwgwuuuguugbruugwbrgwugburwbrbggbbwgbgwbrgwwbrbbwbbww
wwbrguurbrrrwbwurrwrgwbrrwurrgwwuwbbbwwwgbrbguubgbguwgu
ugggrgbwwwrwubbbgurrwuwuuwwwwwgrugwubbbggugugrrbubr
wuwbguugwbrgrgugwuwbgrgrgugurgbbwrrubruguwrwbburrwgbuwwr
gwburgbgrwwwwrrubgwubruggrubgubwruwwrwruggubrgrwrubb
gbrwbwgwwwbbggwubwggggwbwbuwuurwggwurbwwgburuw
uurgurgwwwgwbrgbgbwwwrrgugrbwwuguwbwbwwuwurb
urrrgrrguruububwugwrwgurggwbbrbbrguuwbrbrwbwburgrwb
ruurwgbwbwrbwbgrwrbbwggwrbbgrubrbwwgbrwgbwuuuwbuwrwrwwg
gbuuuwuggrwuwgwubbububbuwgwgwrrwgguwwgwgurrwubbb
urrubgbrbugrgwguwbubugwbrwwrurrrrwgrwuwuurrru
gbbrwbggwbbbwguwwrwwwwgbrbrgururubgrbbuugbwggrwgurbrbuuub
wgwgrugbrgbbwuuggbugbgugurbgruuugrgwwwuugwr
guurbbbruububgrurrgbwuwwrbugbrguwrwubwbwgbwurrrguwuuuwrugr
ggrrrrwwgwwbruurbrgguguwuuurgbggubrbrwguurubr
brgbbbwwruwrrwbbbbwwwrrbwbrbwbwubwbrrbwgur
rrruwbwbgruugbugurgrgwgwbrwgwgrrrgbbgruugbwuuggrrubu
wggrbuwbuurbwububwrurgrugwgggwruburbrwrrgwu
rubrbuurggrwwrggrrguruwwbugbgugrbrbbuubugrggurw
rbwrrrwwugwuruuugwbwbwwgrburgruubbrurwwrubr
gbgwurwurrubuubbbbrbubwuruurbwwubgrrwbuuburgrgbwwbuug
gbgwbrrwurwrrubggwwbbuwgbuggubwrubbggwbuuwwburgbrbgrgrwrrw
ugwbggbuwbgwrwugrbwbggrrggwbgugruruwrgbguwrwuubgur
urwggbwggrgggwgubgrbururgwwbrgbubbbgbrugubgggwrbr
wrwbwuguwgbrwuuwwbwbbgwuwwgbuuwbubuggbwwbgwwurrbrgwr
buwubwgbguwuggruurrurgrgrugrwggrgwrrrwbwrwburugwgbgwwg
gruwwugwrrurbggrrbbbbbuguuwurwbgurgwgggrbubggbgrwrwwwbr
uwubwubgwwuwuubbuburruwwruwbubugruurrbrburwgwbbwuwwrgwr
wuwrugruggrbgggwugwwubuuuwgbbbbrrgbuubrururbrrurwwruurbggr
wrrwwrbugurgbuwggbguuuwbbruwugwugugwruruubbrgbgubr
bggwuggbbbgurguruubgwbuwuurgrrwurwwwwrguwwggbrgbrwgbuwuub
rwugugrbrgbwrbrugbwwrrbrrwbgrwguwrgubgubwgbrgubr
bwubgwwugbwgurgwgbwrbwugbrgwrgwgwwbbubugrwbggwbgwubg
gbwbuubbubbbwbgbwuburbbwubbwwwubuwbrbbrurwwbggwuwgrugwbwrubr
rbbbrrgbugugwgbuwwbrrbwwuurwbwwbgbgwuububr
wwbubggrubrbbwugurwrwbuuurgrgwuggbbgbubr
wrwrubbuuurgbbwgrgrugugbwuwwurbgwwrbbrbwgugrurwuruguwbbr
buwgwgggubuwrrruwgwggrrurwuwrbwgugbrrgrruuwrrugugw
rgwbrubrwwwwugugbbgrrruwgrggubwgrwwrbbgugbrugwwguwr
gurbruguwwgrwrwubbgbwwgbuubbruuuuwgwwuwrrgubgbrubrrbr
ubrbuuugwgguwugwgbgwwburwurrggrggubrurggugwwbbrrgbr
ruububuuwbggrbugrwbrbrwrrwbruugubrurrrgugguwbr
rbguguwbbbuwwwruruwbgrugugwbuwbuwwrbugwrrrrubr
wwgbwuwwgrgurguwbrrrwbgwwggbggggbuuwwrbwwgrwrgurgwrwrwrwww
wbgrgubguwrbwbgggbwbrwwrgubbrruuugwgbbrwggwwbwru
uugbwrgbrwrbruwguurggggugggbbrrwbwbruwgrubwgr
uwwbbuwguggrurgguurbuuuwbrguurbbbrrbruurgubr
gbguwruubrurwrgbrwgrgwugbgbbgugbbrgbrwurggb
ugbuggubbwgwrruubwugwwugbuwrbrrugrwgrbrbrggbwwuwu
grrwgwbubuwwuugrwgubbrwurwrbguwrrwbwwwrwbggg
bgguggwbwrbwrbubbbubgwgwbuwrwggwggrbuuwguubbrbguugrurrwu
rbgrguugrururggwwwurwgwggrrbrrwguwubgurwubbbubrrgwu
ubwgururrugggbwuuwwbruggubuuruwwbruurrwuwuwrwrwwuuw
wuuwrwburwgwubrbwurbbgrbrbwuurgbwbbugrbgrgugbrbrbubgguwr
uugbbrbburrwwwgwugwwrbgrbbuburuggbwrrugrbbrbugwgwgwrbg
rubuwgwburbggbugbggbbuggurwbgrwgwubggbgwwgwwr
bubbrwgwwwbrwggrrbbrgrbgugggwbwugbwbbrrgwbgggbbuwrbgr
bggbwgubgwrgrbbggwgwwwwgrrwrwwbbugwurugwwgubrbwgbgbb
wgrgrrrgubwgrwbguwrgbwuggwuruwggbuggwuwugrwwugguwgwburrrg
bbwuwwbuuwbbgwuubbrrrbgubrubrrrrruuuguurguuwbuwguubu
uugwruwubbugguubgubgubwrguwgrrwbbbbruwbwbwub
wbrwwgubugrwubbuubgrwwwrubgrwubrwgrrbgguburrubbwuggguu
bbrwggwrrrggggrwwruggwrguubwrggrwbugwwuguw
wruruubrbugbgbrwwrrgurrbuugbuubuwguuwgugru
gurbwbbrububuwwgwuurwwbwuuuwbuuugbbbuururrwuubbwwgb
brrrrwurbrrbbbbbuwbrwgrwubwwwbbguwbbrubgugugwbburrbburguu
uguwggwubbgurwwrrrgwbuwgwbwwwgubggruuurgrurgrwrr
bgbbgwbbbwgbbwrrrgurbuwugbwuwbgwuurgbbrrrrguwwuw
wrrruwuwwgrwbrwbgguuubwubuggbrbrwwgwbwrbgwrwbrwrburw
wwgurwrwbbwgubburwgrguububbguuwbrubrrgubbbr
rwbgwwbbrugrgbbgguruwrruwbbwuuuuuubgrgrgbuurrrurrrggbu
rugbuuuuugurwgrgubggbgrgwggwbuwgwrwbubrgwgrwwgubbrw
wgbwbbrbbbbbwggbuuggguwwguwruuuwwguugubr
grwuwbwbgbrwgwggbburwbrurbuwurwbwwugwwwbwwwgggwwrrbgu
wwbrurbgbugrggrrwgubggubwrbbbgbrbwrwwuggbgruububbwuwgu
bwuburbwbuguuuuwrwrguuwrbbuuwbrrwgrrgugrrbbuwbgwugwgg
wbwguubwbugruwgburruuwrbbrwbwbubrbwwrgrbwbuw
rgwurubrrbgrbburwbgugrrrbgbrbgwruwubbuuwrg
wbgwwwbrgurbbrwuuwbggwwgugwrbbgwugubbgrwbgrrgwgg
ugugggrggrwwbubrbrbgbgwgrgbuburbgggbugbwbu
bgguwuwbbwbrrwburggggbbwrrwubwuuuuuurubr
wgbwbrwggbuguwwuwrwgwgruwrrgwbgwwguburwrubububrguuguw
wbwrugrgbwrurbguwggbguwrurrgrwwwrrbubuwwwrwbwwwrgrgbrr
wuguuubrbgwguwwrgbwwwgbubuurrrgwrgrgbuugugrrbwbugrwurgg
rgrrgwuwugurgbwrrwrubwbguwgwbguwugggwwgrrbrwrgwburbrwu
bwbwwguwubrrgbrrbwrwwgbuuuwbrrgwbwrrgbggwuwrugrwwbwbburu
uggwuwruugwbbruwuggurgwburwrrgbuurwbbgrwuwrgugguw
wrggrbuuwbbbwugbbuugbgbwwbgbwuwrurwbugbrgurbbubgurrgg
guwbbgbwbugubgrbwgrrugwbbgggwwbbbrwrwuguurrurwbrbwgubb
brbrurwburugwbwgwgrwbrrwggbbbbubrrubwrbbbbwgurbbbwwbrbubr
wbwrubgruuubgbrurguuwwbubbwuuwgrbugbguwrbruruwgrug
bgwuugrgbuwgwgbuubbrruubwwwgrrububggggwrrrbgrugwguburrrbrr
urgbgwwgwgwubbugbbugwbrrguubbgrgrwugurgugrrububrwgwbwub
rwwrwbggwbbwwgwgrbgrbgrgugruubgwrrwuggugugbgu
gruurrwgubbggububbrbrrubgrguwwuwbgburrwrrw
grguugwrrrurbwgguurbuwrbuwrwuuubruggbbwbubuubgwbbg
ugwuurwggrwwwggbugwgbwurrrbbgwwgbuuwwburrbbw
ggwwuugrgwwrbgburggrrgbbbggrrugruwbgrgbwgbwbuwbuurgrbru
urwrrbrrggububguuwbbrbrbruwbbrugrgwubuggggrgwgbubbwburuwr
bwwwgrguurgwgurururgwbrwrurrgbrrrurwrguuuwgrbrwwubuwubrug
wrwbbwgugubbwbwgbwggrruuwrbrbggurubbrrrgbw
bururrwrbbgruwuggwgrwgrwwgwwuuwbbbgwuwgrwuwwbubgbgwrrrbw
brrrbrwgrrrgrwrrugbugubruububrwwwgrwwgwubbbrrggrugwwbbgww
rbrbuubuurugggubugwrgbggurugwbruwurwuuwgurbbbrwgw
ugbugrrbwwbwrwrrwrurwwwgurgwgubwgwwrrwgrbbrbgwbbu
uurbruwwwbrugbwwgrubrwbruuuggrbwwggbwbugurwgwubbrbbgwbww
uruwugrubuwguwurwwwubruwwrgwrwuubrggbrguuwrrbggru
wbbrwrrruwbbbwwwurrubuuggwgrwrgggbwubgruubwrruwgubr
gwwwgrwwgururguwwbrwgwuuwrubgbwwrbwubbbwwbbr
guwbrbwrwggugggwuwgurbrruubrbbwrrbwuguubwubuurbgrbuu
bgguubbwgbwuwwwrgwgwbuurwgrbrwwbguuwwruwgrr
bbrbuwrgurrburuwrwrwurugrwwwbruuuwrrrbbubr
burrurbbwurrrbbgrubgwrbbrguwrwwwugggbruuwurgw
rgguruuwgbgbrwwwurugugugurrugbbrrugwgbuwguwgbuugwbubbbbrubr
ugbwubrwgbggbugwuubwruurwgbrrwgurwggbrwrurubbgwrru
wbgugubuwbwrugwwwguburguugwrwgrrwwgrwwrwwrggbbgubr
rbwwrgwguubbgrbguuwggrbbgbugbgwurrrrwbwwbr
grgbugbwugbbuggwgwwurguwbwuwwurbwrurrrwgwwwuguurbwgwub
ubwbrurrwguwguburrubrrrwwwggwgbbbwrurubwbuugbbrbgwuruwbubr
rgrgwrgbguuugwgrrbgrubwwwbrbwuguggbgbuwuwuu
wugguubgwbbbwbgwgbwrubuugbbbgwrruwwugrbuubbuubr
bbrbgbwurubugurbuuruwuuuwbwrgbubggbwbuwwbwbwuwbrbwrbg
brbubwrgugwwgurbbburbrrbrgwgrbugubrguuuurgwwgrugbgubr
ggrggwguwwuuggurugbwwwgrbbgrburrwguubrwrbg
rrbwgurrwruurwrbugbubggbggugwurbwgbgwbwgbgwrrbrgubr
wwgwruugubbwwuwbwuuwbrgbbbbwwuburwwugwrrwrwugwrrgubr
wrgwurwuubruwbuuwbwuwbrggrbgrgbugguwrbbwbu
rgbbrgugggwurwurggbrugwuwggrbbwwrgugbburuguwrggrwguw
wrbbrwbgrbwbrwgrrwrwurgwggbbbrgubwwgubbrwuwbgwbrubr
uwurbgbwrrbwbrbrubuurgubwuwrrbrbbgwggwrubbgwbwrgburrrggr
brugruwbrburugbbgwuguurrrgbgubrbgwwurubruw
grguggwrgbgbwbuurwbuwbgbrwruurbburrwggbrubgrwurbwbgb
ubugwrgbgrwgwwgwguugugrbuubbrguggbgbwuurbwbburwurgwbugrubr
bgrwbuwruwrwgwwggrugbwrwrwggugbbuwgbugwrwwgurrgwwbbubr
gwbuubrrwugrrbuuurggurruugwbwwbrrbbrbwbbwbbbr
rbguwgbwrrgbububgwbrrwbgwwrgbbrbuguwwggwbu
ubwubwrwbgrggggrbrgbruggbuubwgwuwwbrgrgggubggugbgg
wuruubbuugbbrwubguwgrgwbbgrbuuugwrwbgwgwgwbbwrgrbgrbw
rbbuwuwwrwgbwwwurgwrurggwrrrbrruuwbwwgwgwggrbrrrbbwgrwr
wrgbgbgrggbrurrbrwrbbruwbrwbrrggurrrguwuubwuwuwb
bbrrubwbwguruggwrwrbrggrwwgrgbwrwwgbwuurubrurgugwrbgbubr
rbwwurugwuuwwbbwgbbugrbbggbrguuuguwrbuuruwu
ggrrwwruwrbugwgurgrggwwbugrgurwbwuuwwburwbubub
rrruuuurbwbwbwguurgubrrrgwbbwrrububbrrbbbbrugwwwg
uguwwwbrwurruuugrbrguuwbgwububugbgwruguuuurbruwrrrgwugb
rggrbuuurrrwbbgwbwruuburbgggrurguwbgbrrruuguuww
bwbrgububugbrwgggurrbubbubbgggwwburgbrubr
rrurgrruwbbbwuwgrurwurgbbggbuwbbgrwggrwbrrrgwuubr
rrururbgbuwrrwuggubwwwgbrurgubgwgwbwwguuwgubr
uuguwbwrgbugrbgwguuwrgbrrwuggrwwburrgwguwbrrwubru
wbrbgbwwbbbrbguugbrwgbbuuuugwwrururrrgrwgw
ggwurrgrburbbrrrguwgurgwwguuuubggrubbwguwbru
rwruwrwbbbwwbbwgwgwgruuwbbguuuggwbrbrurrgrgrgwuw
ggwwwrrrbrrwgbugrggbbwrrrbggwuwgwrrwbgwuwbuguwuur
urgrgbrgugugbbwggbugwwgrubgrgwbwurggrwwrbbbub
rgbrwgurbbwbgbbguwwrrbbguwburuwrgrwubrrgguwur
rggubwuuwgugubuggwbwrbggrgubbbubwurwwwurwguggbbgubguu
wuubgrrrugrgbubuwuuruuurrwbuuuwburrubuggruguwurwbbb
wrbbuuggrbrbwbbubugrubwurgrggwgrwbwgrugbubbbgbbrgwu
gwuwbrwrwurubgwgbrwruguugurrugwrgbbubgrurgbrgbrwbwgugbubr
gwuggguuwwwuburwggruwwbubrgwugrububrgurrgu
buwgwwgbwuwrwugubwgggbbwuwrurbgugwrgwrugbwgbrgu
bgbuguurbrugubuggbgrrubbguurgbbbbburubwgwbrgbubrw
bwbrwrguburrguwrubwrwguuugguwbbgubbrbrburugbuugrrrrw
wruuwbwbgggwrwwuwwugbbuuburbwurgbruwbggwgu
bbruwrwugwurgwwwrbwgbbuuugbrgrwggwbubugwwgwwubwrbbrrguggru
wugrrugwwbggrbggrrwwwgbrbgrgbuguggwuwuwwubwbruurbgwrbbwrbg
grgwuwruwbgwbugbuuwgrurbwwwwguuwuwwuurwbuubg
urbwuurggbgwgrgburbbrubwgrbrrgrbbuggbrwwuuuuuuuwbu
gwwbgbubbwuwrwwwuwwrwrgubwwgggubrugwbgrwwbbggububr
wwwugwgbwwbwrrrbgrggrugugwruwbwbwwwubbbrwuguwuwgurrwuwrr
wubrgwwbgwbrwurugrbrgrururrugrbrggwgbwbugbrugguggurgwbwugb
rbbrgwurbbruubgbbgwwwbwwwurbrruugwubrwuubbuwgbguwwg
rurrwgrwbbwrububrruwrubuwugwrbrgbrrwuuwrguwgwururw
ubbgrrgrrrwbwgurugrrgrwrugwgrwgwruurrgwguwuwubbugggurbu
rrbbrrbuwbrbwwwbbuwgwwgrwbugrwbuwgggbbbwguuwgbburbb
wgbrbrrbbugbrwbbugwrbwurbwugrguwwrrurrbwbrguuwrurwwwbguggubr
bwguwgrrurbbwuugbbwgwwurgrrrwwrurggwrggrubuu
ugubrwrwgbuwwgbgugwgrrubuwruwgbgrgbubwwgwwwurr
rurrwgrwrbwwgrbuwrwguuubbbbguurbgrugbgrwurwurrwbwgrwbbuw
uwwuugrwubuwubuuubrwuwbbuwwrwubrrbgwwgrbuwgggubr
gbruwrugbbubggburwgrrbgubbuwbuwbbgguwrggwrrrgur
gbuwwgrubbwwgugwwbgbwrbwwgrburrgruggugrwwwrggurwggbwbgub
ubguuruuwwruubrrwbwuwggbburgwrbwggbguburrrb
bwrrwggubgbgbrrwgruwburrubbrrbrugrbwwggbrurwgub
rruruuwgguugrugwguuwwgguggrwuuuwrbgbbuwwruwrwrrrbubgurg
rbugrrbwrrbrbrruwbbubrubwbrbgggwrgbbuurgrgbwbb
rggwbbuwrwwuwubbbrwrgwruugbwgwgwgwwuwuwbggwbubr
ggrubugurrbugwgrgbbrrwrwgrwbwgubwgwubwuwrrrgb
grrgbubuwwgruwbuburgbwgbgbgrbwubgwbwggbugwwuwbrguwrg
wgwwrwrgbrwugbuwuubgrggrwrurwwgurbrwuurbwgwgbgggubr
bgbwbrrurwggbwwugrrgrwwrwurgwruuuuuwwggrgggwugbrrwwrwgg
wwrwrgugwbwbuguwguugwubwrwwbwggggwgrubrgggbu
wrwgrubrrrrbgwbbwbwuuwrrwruurgbbbwbwbwgwuwggubr
wrrruuwggrwwwwrgugbwbrwwbwuurwguugugbbgrbb
guwguguwugrwrugbrwwrwuugwgrwbuubuwbbuwrbrbbbbgbwwrbrggbwb
ugrbwbgwubruwwgwruwwgbgubgbguggwrrgbguwbrbgwuwg
wrwbubrwrruburubwrugbwwwuuggbrbbbwrrbwgbugurbuguwugrw
rgrurwbrbwgwwrbwubgwrwbubgbgbrubbwbuuubbgrbgbwbrubrwg
wrbbgbrwrrwurbuwruuuugwrgrwgrguwwubwrugbwrwwgwurw
uuwuugbrwgugbgbrrbwrgwbwubggbrrwwwggwbubuubrbwg
ggwruwrwgurwggggruurugbgrrbbwbrugguuugrbbbwg
gugwruwrrubgrubrgburwrbbwgbrrbuuwggbuuwrubrbbgbgbbrg
gurguuwbbbgbubrwgwuuwwwgbwgrwwrrubgurugwwrbwwubrw
wwubuuurbgwbwubggbbrbugbgwugwwuwbgruwwbbgubbguuwbwwwwbbubr
wugwuurbbwgrwrrrbrwbgwrrrwbwrwguwruuuwwuwrgrbgrbru
wgrbububurugwwrbrwrrwbwbggrurwwwbrwgrbuuurwwwr
ubburgububwrrbuurugwuuubgrrbggwrrgwwrgrurubrwgrrwr
burrwgbwggwrrbgwrgwrrgbbbbrgwubugwgrrugbrugr
gwggrguuwgbubrugurrrwrwuwrugwuguuggbbbwrwg
ggrbwuurwbrwrbgbbubwbgwurggrgguurwrbuugbguuwwrrb
rurrgrwuwguuururgurbgwgruuwwwbbururrrubbruugbbbubr
urgurbwrrgurgwwbbwwruguwgbwrubwwbwbbrwuwugrrwuw
ugwrurrwgrubuuuwwwrrrruwubugwwwrgbwrwwubbggrrwgwuwbwwwruu
wuwguuwwbrgubgwbgruwwrbbgugubgbrgbbbwurgrbwbuwrbbubr
rwrguuwbuwbrgrgbbrrbbwubrggrggwbguuwurgggwuguubb
guubrbwwrrgbgrwwrgbrgubgwbggrubuubgubruubr
brubwwgruguwbwwugrwubugrwgbbuwwuwbgrrgbgrrgw
rgrggwbwurwbwrwwubggwrbbbrgbgbwbgrurgrurbgurrgwgburbgbbgbu
rrrrggbrwuggbruwwwgwggubwwuugbbubbuurgrbgrgwrwrubrg
ruuburbwrruwwrgwuwbwguggwguurgburwurugubgrrgbw
urgrbuggugrgubbwuwwwuwuuuguugbrurgwuugrwbgggub
rbrgrgrrwuuwubbbgwbuuwbrbgbrgwuburwrbuuwgbgrug
gbrwubuggwruuwbwwburrurggububurbguugbuwrgggbgubwrugwurwbbr
buwwbrrugwgbgurwbgrwbubwrwbruubwgrrwrwrrrr
ruwuburrrgrgbbwggguwbwwruruurgugwbrwgubwguuwwburg
uururubbrgrugrbwuurrgugrruwrgugrbuuuurwrwwbbgubr
brwrbugruwbgrwurbbbbubbbbbbgwwuggrwrgwrbrruubrbwwrwuurr
rrgbggururubuggwrurwrwwrububruguuurgugbbgbugwggguurw
uwgbwwwrwubgbwbrrgwgbruuwrurrgrwgburwbrbwgbrrwrrubr
ubwruwuuuuubwwrwubguuwrwrrwbuguwurwrbuurbrwruwuurwubgww
gbbbwggrgwrgubgrrrwuggbwwgbwbubrwbgurrgbrrrguuw
gwbwugbwgbubwwbwbuuuuwwggrbgwuggurgwgubr
wgbwugrguwuubgrburbwuwguurwrggrbrgburubr
ruwwgbbuubgrwubgwwbgugwbbrugwuugurrgrrwbgubwgwwrrwbgbgrbu
wurrrguwggwbwuuuurwbbruwbuubbbugwgwgrwbgurrrrburrwuwbwrbb
bgbbggwubgbgwwguwwbgrrgrbrgbbbgbgwgbggrrbwbuubrgguwububr
wwbrwggbbuggruurrbuugwbgbwrugguuurguugwgwbwguug
bgbrbrrrbwbuuurgwuwbugugubbgbruuuwbwwgruguggbg
rwbuuburgbuwuuubgwrbguugbwrbgubwbwbwrrgwurgbwg
wbggrwugbggrrbwwwbgwurgbbuwbwbrrrbrwbwrrugbwgggrbw
bbwbgugurbrwgbrrgugugwruubbwbgguwrggrbgbgwrbbgrbuguwrubr
uwgrwbwgrggwwwuuuubwwgbbgrbrbwggrbbwwbwrrrbwgbwrurgurrrrubr
guwurbbwgrwurwuggwwgwgwbwbuuwgubuguggburbruggbrgrrrw
ggbrubgwgubbbrgruuwggwbrggrgbuguwbwwwurbggwrwbruuubrww
uwruwrrwwurwggwruurwbubrrbgwrbwruuwwwrgggwuuur
grbgwbrbbwbgbruwwbbbrwgurbrgbgbbwurgugwbgbwgbwurw
uwbrrggwugrgwrrgbbgggbggrugrbggwbgbrwgwuwgwubgurwugruwgur
uubggbwwwggubbrurubbgbgrwuwuuurbrgubwbwrbuwwgwgbr
gbwwbwwbuguwugwrurrbbbwurwurggurguguguruwuwgb
uurububbgruwguwurbrgrruuuurruwwuburwrrbbgrgugrgggwrwrrg
rbgruwuugbgbrgrgugrgrrrwruuggubbwrbruubbbr
rrrrwugrrrrrubrbrgwgrrgwrubgwuuuburburburwrrgbwu
ruwgugbguwuwgrwbrbgwruwurbugwwgbwwugbrrbwguur
ugrrwbbwwbwwbbururwguuwwurwrguggggugrwbugwwgwgg
gbwurruuubuurrwurbuwwwubbwbwbbrgrbrwbbwrrrbruwrwubbrbgwbwb

10
inputs/19/test.txt Normal file
View File

@ -0,0 +1,10 @@
r, wr, b, g, bwu, rb, gb, br
brwrr
bggr
gbbr
rrbgbr
ubwu
bwurrg
brgr
bbrgwb

View File

@ -155,15 +155,15 @@ fn buildMap(dimension: usize, allocator: std.mem.Allocator) [][]u8 {
return map_list.toOwnedSlice() catch unreachable;
}
// test "partOne" {
// var gpa = std.heap.GeneralPurposeAllocator(.{}){};
// defer _ = gpa.deinit();
// const allocator = gpa.allocator();
test "partOne" {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
// const response = try partOne(true, true, allocator);
// print("Response is {}\n", .{response});
// try expect(response == 22);
// }
const response = try partOne(true, true, allocator);
print("Response is {}\n", .{response});
try expect(response == 22);
}
// Outline of logic:
// * (Without any bytes fallen) find the shortest path. Make sure you note the _path_, not just the length

88
solutions/19.zig Normal file
View File

@ -0,0 +1,88 @@
const std = @import("std");
const print = std.debug.print;
const util = @import("util.zig");
const log = util.log;
const expect = std.testing.expect;
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
const response = try partOne(false, false, allocator);
print("{}\n", .{response});
}
fn partOne(is_test_case: bool, debug: bool, allocator: std.mem.Allocator) !u16 {
const input_file = try util.getInputFile("19", is_test_case);
const data = try util.readAllInputWithAllocator(input_file, allocator);
defer allocator.free(data);
var data_lines_it = std.mem.splitScalar(u8, data, '\n');
const towels = parseTowels(data_lines_it.next().?, allocator);
defer allocator.free(towels);
_ = data_lines_it.next();
var known_valid_designs = std.StringHashMap(void).init(allocator);
defer known_valid_designs.deinit();
var known_invalid_designs = std.StringHashMap(void).init(allocator);
defer known_invalid_designs.deinit();
for (towels) |towel| {
known_valid_designs.put(towel, {}) catch unreachable;
}
log("Parsed the towels\n", .{}, debug);
var count: u16 = 0;
while (data_lines_it.next()) |design| {
if (isDesignValid(design, towels, &known_valid_designs, &known_invalid_designs, debug)) {
count += 1;
}
print("Checked a design. Known valid designs now has size {}, and known invalid designs {}\n", .{ known_valid_designs.count(), known_invalid_designs.count() });
}
return count;
}
fn isDesignValid(design: []const u8, towels: [][]const u8, known_valid_designs: *std.StringHashMap(void), known_invalid_designs: *std.StringHashMap(void), debug: bool) bool {
log("Checking validity of {s}, with {d} known valid designs and {d} known invalid designs\n", .{ design, known_valid_designs.count(), known_invalid_designs.count() }, debug);
if (known_valid_designs.contains(design)) {
log("***** Already found {s} to be a valid design *****\n", .{design}, debug);
return true;
}
if (known_invalid_designs.contains(design)) {
log("***** Already found {s} to be an INVALID design *****\n", .{design}, debug);
return false;
}
for (towels) |towel| {
if (design.len >= towel.len and std.mem.eql(u8, towel, design[0..towel.len])) {
log("{s} is a valid prefix of {s}, so iterating down from there\n", .{ towel, design }, debug);
const remainder = design[towel.len..];
if (isDesignValid(remainder, towels, known_valid_designs, known_invalid_designs, debug)) {
known_valid_designs.put(design, {}) catch unreachable;
log("===== Adding {s} to known valid designs =====\n", .{design}, debug);
return true;
}
}
}
known_invalid_designs.put(design, {}) catch unreachable;
return false;
}
fn parseTowels(line: []const u8, allocator: std.mem.Allocator) [][]const u8 {
var response = std.ArrayList([]const u8).init(allocator);
var line_it = std.mem.splitSequence(u8, line, ", ");
while (line_it.next()) |towel| {
response.append(towel) catch unreachable;
}
return response.toOwnedSlice() catch unreachable;
}
test "partOne" {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
const response = try partOne(true, true, allocator);
print("Part One response is {}\n", .{response});
try expect(response == 6);
}