diff --git a/day19.py b/day19.py new file mode 100644 index 0000000..71c5e45 --- /dev/null +++ b/day19.py @@ -0,0 +1,51 @@ +import sys +from tools.aoc import AOCDay +from typing import Any + + +class Day(AOCDay): + inputs = [ + [ + (6, "input19_test"), + (296, "input19"), + ], + [ + (16, "input19_test"), + (619970556776002, "input19"), + ], + ] + + def parse_input(self) -> tuple[list[str], list[str]]: + towels, designs = self.getMultiLineInputAsArray() + return [x for x in towels[0].split(", ")], designs + + def get_options(self, design: str, towels: list[str], part2: bool = False) -> int: + if not design: + return 1 + + if design in self.DP: + return self.DP[design] + + options = 0 + for towel in towels: + if design.startswith(towel): + options += self.get_options(design[len(towel) :], towels, part2) + if not part2 and options > 0: + return 1 + + self.DP[design] = options + + return options + + def part1(self) -> Any: + towels, designs = self.parse_input() + return sum(self.get_options(design, towels, part2=False) > 0 for design in designs) + + def part2(self) -> Any: + towels, designs = self.parse_input() + return sum(self.get_options(design, towels, part2=True) for design in designs) + + +if __name__ == "__main__": + day = Day(2024, 19) + day.run(verbose=True) diff --git a/inputs/input19 b/inputs/input19 new file mode 100644 index 0000000..14955aa --- /dev/null +++ b/inputs/input19 @@ -0,0 +1,402 @@ +urb, ruu, uuw, brwwug, gwgrrb, urr, ggbrw, gr, rrg, ggrww, wbuwu, wb, rggbwg, bbru, ww, rwuuwr, w, bguu, bgb, bwwug, gur, uub, burwu, ugbrw, gbbw, buug, grwbb, bwur, wgub, bgwruub, rww, rgg, wurgguw, uwwr, wuuruub, uwub, bbb, urgbb, gubbg, rw, bubru, wuwgg, urur, rgru, gbgrgg, rwr, wwwr, uwuwwuu, rbgbbu, wwrw, bgwg, rgggw, bbugwru, bg, wuw, bgbrw, gg, uubbb, bgu, gwur, ubbw, uw, rggw, wrgb, bggrw, rwgguuwr, guugrr, wbw, gwr, ugbrrg, wrbuw, wru, wrbuuw, ugrwrw, rrwgru, bgrbrw, wrubbu, bgr, bgbububg, rggr, ggg, bwwwwgb, gbwg, wbuwgw, wwb, ugb, rubwur, gbw, uuubr, ugg, rwgr, rwrgg, bbgbr, urgg, grrurrbw, wwbw, rurrrgug, ur, uuu, wuu, brwuuw, wug, gwrguu, wbr, gub, rwuu, bwuw, rrwwuru, gbbgwwrr, rggrrbwr, brbuu, uuwruuw, gu, brwrgww, urwuwurr, wbwr, rbb, ggb, rwu, rrb, bwbuwwu, uwb, bwg, uwwb, rbgbbw, rgbbgbww, wurggb, rugu, wrb, rwg, rrbgw, ubgbwg, bbur, rrr, ubrbgbuw, bur, uwugb, wbrb, wwg, ruurgr, wwbwuu, wrwgbb, gbwbwgw, ubw, rgwb, gwu, rwgwbug, rgwrw, wbww, grrwgug, guww, rwugr, ugurw, bbburwbw, bbwgrr, rrww, wuugb, rrggbg, bggw, uwgw, ggrbggr, wwr, bgw, bbr, uuwwug, uubur, uwbuurrg, guw, rb, uubb, bwwur, wurgbgu, wuwbr, uwruw, wwwgg, grrw, ggrg, uubuu, bwbg, ggbwbb, uwuur, bwwuw, bbrrbrg, rgwu, ruwubg, ruuw, rrrg, uwbg, bwrggub, b, gbrw, urw, rbu, bggwwbg, bgbb, wgg, wwubwb, wrrurw, gwrr, gugbbww, ug, urwb, ugurb, wwu, ubwubu, wubbr, ggw, wurwb, wu, rgw, urrr, guwuubgu, bbg, ubggwrb, uwurrr, ggrggwr, rruuwur, brgbbrrg, ggwgbrgu, bubuu, gwwbbbb, ubrru, bbww, rg, ruw, urwrg, ubbu, bbw, brb, ggr, wggu, rgr, wrbu, brgugggu, rr, ggguuub, wbbuwru, rruug, gurbbug, bbgb, uug, ggwbu, rrugwuw, rbur, uu, rub, wgrbwww, wgu, rur, ugr, brrr, ugw, grrwugu, wbgrug, gbgu, rbrrgbu, ubwrw, bwu, bggg, ugu, rbbwr, ubwuwg, gbwgwu, rbbg, bwwgw, bgbwbgu, gwubr, uwuggw, uuwuu, rbr, buguwbg, bwrgwb, rggg, gwwbwwg, wuwgwg, rwb, uur, uww, wbb, bwrwb, ub, wbg, bwrg, uwr, gbbr, buw, wrww, ubwuug, uru, bgrb, gurr, grubwuw, wugrg, wuuw, wgb, gbwu, urrbr, rbgbggg, urbr, urbwwggw, wg, grr, wgubu, wgbur, wrbgubu, rwrbwu, bug, gug, r, ruwu, brbw, uuggu, ubb, uwwub, bwgu, gwubb, uuwug, wwgg, rggbur, gwg, brr, brurb, wrrwr, brrg, uwg, gbrr, grrbwg, gw, uwu, urbg, rug, wrgbg, ubrg, ugru, ugub, uwwuuw, www, wrbwbu, bbwg, wur, gguwgg, bugrrwr, rgb, buwb, ruggrg, bw, bwwbg, bbbbubuw, wrw, brwwu, wrg, gbubr, bwuwubr, brbgwr, wgrr, wwbwr, burw, uwwgb, wugu, wuwb, rrgww, gbu, bbu, ugguw, grgwbb, gbg, wruwuugg, bww, gwb, brgbb, bwr, bu, wub, gggbr, bru, gruu, wbguw, brwgwb, wr, rrbrb, bub, wwubwwgg, bbrgbr, rgrw, wwrwu, bgwbg, ubu, ru, rugr, bugur, wwbr, rru, bb, wrwrw, brrb, brbg, bwbugw, ubggwg, bgrw, grgubr, rrw, grb, buu, grg, urugw, ggwwbr, ggguu, wgr, grw, wbwg, gww, ubww, rgu, ubr, brwbbb, rgur, wbu, ugrr, bgg, rbg, bubu, wwgwrw, uubwbgr, ggu, rwrwu, gbb, urg, rbw, wwrb, guu, ubrr, bgbbwu, rbrbr, rwrb, bwb, ubg, ggggwwr, wrbbw, bwgrgrrg, rgbrwu, wbgrg, u, uurg, brw, rwbbbb, gubbuw, wrur + +rwuurbrgbrrbwwbwbugbggrbwubgbuugwbggwgurgww +gbruuruwbuurrgrwuuurwbggrbrbwggwrggwrrwrrbrwbbwgwwugrgwrw +uuwwurbbrwbgrwubbruubwguggbugwwbbbggrrugwwrbrbbwwuruggrgw +uruwgrrrwwuubwgwrgrgbrwbgguruurubrwrbgbbrggguwwwurwwb +brgurwwbgbwruuuwgbwwurwbgrwwwugbbwgurrgurugur +gbrburgbbgbwwgrbwggbrrrrggubwggrrwuwbwbguguggu +guurbrgguwuuuugbrburwuubggurbwrbuurwgbbgwgwwwrwbrgrgub +uruuwwgwgbwrgugwrurrrguggrgrgbrgwwbrruubuurwubbururwrgu +gbrugrgwuggrbbruwrbuwurggwgbrguwgwwuuwbr +gwbuburwgbrwwurgugrururbgubrbwwbrbbubuubrwwubgurgwuwuwbr +ubgrbwwgggwbrwrgrbrwgugbgbrwuwrbgrrbuwwgrgwwr +ubwgubwwuubwugurrwrgwruuwwrbbrurbbbbugwrgbbwrw +wguwbwwruubgrbwbgrbbwgwgbgrwwwgwwrugbbwwrrbwwg +gbrgbrwbwubguuruubrugrrwgbwrwwggwurbwwuwwuggrbbburwu +bgwwwwbubwgrwbwrgbuwgwwwgubgwgrwrruruurwubbgbb +gbrgrgbrrggbgbgrbggwrrwwgrgrgrwrrbbuubbgwru +gbrggwggrrwbgbuwrgbgrurbrwruwrbrgrruwbrggwuwgrg +rruugrwwrgwbrgbuuuurugbwrrgbbbgurbrrbbrwwrggbrrw +wbwggubbggrwbbgwgrwbwubrgwuuugwwgwubrrwburgugrguguwrgubw +wurrwgurugurwurwuwrwrgrgrrwwubwwgggguwrbwgbgrbwrbb +gbrugbwuubwgwrwgrbwgubrgbwrwrwrguuwrgrrrgugwgwgbbbguububrrw +burruwugugburgwgugwgbugubugururugbbbuwrurbbbw +wbrrrgbwuurrwbbuwrurggubwbugwrgggwrrgubgwrgwuugwbgbbb +gwbrburbbubrbugurrbububgguurwbgrwwgbwrgrrrbgrubwbwbb +rrurwrwrwwrugwbuurwrwbwugurubgwwwwbbbwrgrgrwrbu +gbrgwrgwwuwbuggbgrubwruwbbubwrbwwgurwgwuwugbbruuurrbbuwru +wguggurbuururwrgwugrruuugrugwuwrrugugwbrgrburrwrwrgburb +gbrgrrwguugggwuugrurububburbggbwbgrwrbbgwggggwurgguubbrggbr +wruuurrwgrgbbbgrwrugbguurrwggggrbbrubgrbbrbugrubrrurwrg +gbrugwbbbburbruwbburgwwuwwrubwwgruubwwuuwubgrugrbwgrrbugrrg +wbwrguurgwrbbuguruwuuuubrbbuuuugurrrbbwwrruubuwbbwwbwu +rgrbbgrbgrbuuwubuggguggwbgruubbwgrgbbuuubgrwggbgwu +gruwububrrubruuggbrrwggbwbggrgbugwugurbbwugurwwuurbrbgwgb +uwbgbrgburgurgbwgubugwgugrbbgrurwbbgbgwbwuwwr +rwgruuwubuwggurwwububbuwwbugbgugbwbggwrguurwrg +uwuwwwbggrrbwrgrwbuggbruwrgwuwrbgbwwwuwgwrubrburgbbuuu +gbrguburggbggrwbgrburwurgbwuuwgwgurbrwgu +gbrbrwugwbuwgrrrrrwrgurubbrrwgbuwburugrbwu +gbrburggwbgwgububrgrguuwbwwgugbwrubgubwbwrgbrubrgburgbuu +gwuggwggugrwgbwgbwrrwbbbbrwgbrwugwgbggbrwbrwbbbw +gbrbgruwbuburgbwruwugrgbrubbuuuwwggrbggubbguurwrbwww +rgbwurbuwurgwurbbrwuuwwrubbwbuurbrbururwurgubrwuw +bgrrwgrrbwbggrgbrwbubrgwgugubguuguwbwburbugrbgwgurwwwwg +gbruggwbgwggguwbggwwwbwugubwbbrurwurrrubggrb +brbrgwggbbuugwgbwbugwurubuwbrugwbubwrgrgugwbwggwbw +uggbwwgwbugwwwugugbuwgbggbugbbuurubgwgrbubrgbwuwguwuwb +wuurugrgggurrggurgugwuwrbgwgbuggbgrwbwrugwgwrbgwbbgguur +urwbwrgbbburruwbrbrrwbrwwgrwwwuwwbbugbguubgurubu +gbuugruuubbwwrurrbbggwwguwuugbgbbbruruugburu +uguwwugrwbbrwggwbrwrbbuubrurugbgbrrrwggwugugr +urrggwwbbbwbgggguugwrgbbwwuwrubwrbgwrwrbuwrg +gwbbuwubwwrgggbuwgbrrrwwrwuwgrwggrwrbbguwbwgguggrw +gbrgurwwggugbwbgbwrwubgrubwwububbwuurguwuwuuwuu +gbrbwwwbgrrwbwbuwbwwbrggburwgwgrwwrurrwbwwwbwbrgrurbuwuuurr +bgbrburrwggwuuwbwugwuwbgubuuwbrurgbuwwuurububrwbbrbguubrg +wwuwrwubbrbgrrubuuwrbggrwbbrubuwbbgggbgbuuwbrw +ugbrugbwgrugbwubrbrbwwggburrgrwrrubgrubrwwgrggbbbw +gbrggguwgbwrwrguwbwuwgrbuguwugrgrgwruubwgruubbwuubrgrb +gbgggwbgrwgwwbwbggrugbuburbbrwrgggwwwggrbrwrrru +gbrgggbbgrwgwrgbbubggugggbgwwwwuuggugbrwuugwuurgwguuuwu +wbwrbggruwuuubuuuguuwgwrrrurbuuugugugugbrguwwbrug +gbrbubruuubgubugubgwguwggrgrgburbrrgbuwbgrg +brwggwbrbgbrubwrbgrwwurgbrgbuuruwrgrgbbbbubuww +urrwgrgbbgbruugwbuguuubuwrubrbrruwwbgguuwbbbb +bwgbrurrruwwrwbuwuwgbwuwwruurugggugrbbrubuwb +bubwbgruurbwgggbgbwbbrwwubwrbbbggwuugurrgbubuuuwubbgub +uwrrgbuwwgrwrrubrruubrugggbwbbwwwugrruguurgbwgwgww +rrgbwbggwrbbgbugugrbguwgburwrwbggwwgbbuwggburwurwbbbrg +gbguuwbruubrwruwwbwurbbgrwurwgwrwrgugugggurrwrgbggwu +gbrbugwgwwuggbrwurwrrbuguwbuurguwwbrggrbbgggrwubgwww +gwbwuwrbgrbrwgwurbgbuwuwwrwgwbgwgbbuwrwwrwruurrbbgubb +gbrbrwbwbbgwggrgguwbrwrbrgubggrbwwrrggwrw +rrwbwwubbgwwbbbruuwrrbwbbwbbgrrgwggwwbbwuruwbbuugbuwrw +wruwbuwbbgwbbuubuubguuburbbgrwuugugbbrrgwrrur +wuuwurggguwugurwwurbgrgggrgrrrugwwwuwgbururgwwbubrrrugr +bwuggwwrbrbwrrbrgrgrwgbubgwwwbbwbgbbwwgwbgubr +bwrubrbgrgrbuuubgwrgurwwwuwbrgwwwbwwrwgbuubuw +gbrurgwbrubrgrgrwugugrrrgugwrwrgwgbgrwgbgur +gbgbwrwwgrruruwrrgwrurrburruguruururugubrbwgg +wuwubrubrrugbggggbrbgbwbwrgwbrugbbgwrurbgbbubrrrubgbgw +uwwurugbwubrwugbwburwugbbrrguubbwgwwgggbub +gbrgwgwwgubrbbgbuwbwbbgwgbuuugbwrrrubwrgbgubgrbrwbbrgwb +wrgbrwuwurrrrwgubbgbbbbuwrrwbgbugbwbwwbubgggbr +bbgguuwwuguugurugwbubgwuwrubwguurbwubugrbwgrwgwb +brbggwbrrbbwbrrwrrurwwbgbrguwwrururbubgwgugubwburubwburug +rwrggbubwrrwbwrguuwgburrrwbuuwbwbgrbguubbu +gbrubrggrguuwwbbgwgbwwrururrwbuwrwuwuruwgruurbwrrwur +bwgurugwuuwrbwrruwrbbbruuwwgubuubgbugburgrr +gbrgbwwbgwrgugwgubrbgbuwrguggrbwgububrwrburbwrwwgwbbbr +gbrbbgrrurrbwbgurrgubruuuurruuwuwwbgwwrwwggbbrwbgwugwgbw +gbrgggwbwrbrrbwwuwwubbbwbrbbbrwugrgubuwwurggggwuwrb +gbrgbrurgwwbugwwrgwbbrwrbbrrbguwrwurgrwrgrgubwwrwwgwgr +ggwrruwbwrggwwuuburgggwgbuwgbrbrrwrgbgrbuwrbuwb +brrgrwgwbwuwgwrguuwubwubuwwbruggbgrguwbuguwgugwggbu +bbbbwbgbgwgwwbwrwurwuubbwwgguwuwurubburggbrgrbububwurgbur +grgbgbgwwbwgrrwggwwwbuuwgwgrbgbuurwrbggwgg +wwruburwbwwbbgrbrguuuuguwuuruwrwuggwuwgrgrrubrrwbgrrgrrru +wwrrbbbgbwrubggurgrbbwrruugwggbrrwuwgburrbrrgrgrwgbwwub +gbrbgrwbrgrggurbrgwubwburgurwuurggbuwbugggugbuuggbuuwuwuugww +gbruuggbbwrrgwugugrwbbguwrgurgwruuggwuwgggwbb +gbrguurrgbrrbwugbrbggugbrwwurbugurgrubggugrbuwbgubrwug +wgggbwuburrbgrwrrgrwugburbgwuwrbugwgbuuwuur +wwubrbwubbgbbbwubbrgbbgwwbwbbrwgbggwurwgrrgwrwguuwgw +rurrugbggrrbwbwrubbubuggggwwbuwrwgbggwuurguuwu +rwgwuwgrbgwguugrbugubugbbuwgrbwbrbruubrubrb +wbguuuwbrrubgwrubgrwbwrrwwugurgwurrggurwrwwrg +rurggbgwgrgrrbrwrrbbbugbbgbgbgggrwrwgbgbuugrguwgbuuurr +gwbbuubrubgwburugbwgbburwwuwbgrwugwugbrbrbgrugbruuggb +gbrbgbguruwuuwgrrruwwugbwwwrbgrbrrrrrurrrbgburwbr +wgbwrbbugrrguwrburggbgwgwurwubgbgrugurgbwrrgrrwgu +grbwwurwgugbwrrgburwwuuuwrugguwrbuugrrgbubgbw +gruugbbguugurrruurrbugwgrwrbwrgugburbugrrggu +gwbgbrbguubwbrubburugbguuwgguurwgrbuugbburbg +gbrbbgrwwbburgbbuwruwrgbuwbrgugggubbgbbggruurbu +gbrurrrguggbrrrgbwrgrbbbubwwbrgrugwuggurruwrwrgrgwrbwbr +rwwgruuruwgbrbrwurubgrgugbbgrgwrrubbwrruguwbrr +ugwgrurbbubrwurubbbwrrwwbgwwbbwggwbgrrburgu +gbggbrgrrgwururubwrrggwrububgubwgrrrbrrwrwuwbg +wbubggwrruwurwwuwggguggwruguuwbubbruugrbwb +ubwbrrrrwbrrurwugbbubgrwrwgrgwuguwbgubrwuruuwwgugugubbrg +wbbbggbubggbwrwwrwggbwrbrwgwbbwbrgbbrrgwgugbgrgbbbbguu +guubrbwbwwgbgbggurguwwgruubrugrwgubgbgrrbwgwu +gbrbgggwrguwrrgrugrgbgrwwuwrbwbgbwrgwwubbrbggwgguubbb +gwuugbwbgwbuwgrgwrgwbgrrrggwrgrwgrbwgrwgrbggrbrbg +wgrbubwbugugbbgbwwuggrgubbbgrguuwwwuurbbbbrurbuu +wbwggbgbwrbwrgrrwbrwuwburgrwrugrugugrgbugbbwbr +wrgrbwgbwwwwgbrrwuwbrurrbgrgubuuwbrurwurbrbwrwbwugruw +gbrbgrggwwrwgwwugbgrurububggwuugwwrruggwgururwuuubwrrg +wrurrwrwrgbwwrrgrbgubbwwuggrgubgrrwgbbwuwbbrgugw +bwwgubrwwwbgwugwrwruguugggugrrbrbggurgbbuuwgrg +gbruwggwwrrgbwrwrgubgrbwgbwbbwguuwbuuuwwbbbgrwwurgwwwrwg +wgbbwguwbgwgrwwubbgwgbuggbwuwgrbwwbwubguwwgbwrbuwrbwgrbggr +wbrrrrgwuwbuubwgruwuwuggbrrwbbgwgbwbbrrbgurrruggrbburw +bugguurgwrbgurgurbrugbuwrbbuurwuwbgguurgrgrbrurbbggbugrwuu +buurrwwrggurwrrwgbbwuwbwuuggguugrgwugbuubuubrur +gbrbwbrbggrruugugubwwuwrbrbbwgrgrrguwbuwwgubggwrbrbwgugbgg +wwwggwgbrgubgbbrugrrruuwgrrururuuurbrbuwguugbuu +gbrgruwbrgrgwwgbbgwwrrruugwrrgbgwgruwbrbwwbwwgbrbw +rurubbrbgbbbgwbwwrgrbrguugurgbwgrwburwugugwgguuugruwrguu +gbrrubrbrubgurbbrruwugrggwbgwuuurggwwbuubb +wwbburrgbrbugwubrggbrbbwrggwrwgubrwgwbuuwrrurwbwugrubgr +rwwgubwuuwrwrbrbggbwwwguurgrgbbbbrbbbubbugbrguu +bwggwwwbrrubruuubuurwgbbrwruguggbwubwrwrwrwwbwrgru +grwugbguuwrrwbbugwbuugwgrwuwrgwbbggbrgwgwbugubgbrrbgbbrr +gbrbrgrbguwurbgbbbruwrrgbbrurrbwuuwugguwrrbgwurbrwuugrrgrgru +bwbrgbbwbwgguwbbggbrwbgbuururbwrgrburwwggurgbrgubwbrruggg +rrbruwrbbrgrgrwggrbgrbbrrrbggrggrrwwruwuwwwrrwbwrgrrbrg +bbbgguwuwurrbuwrbwbwwrgwgurwururwwrwwgwbburbbrwgu +bgubrbrrugruubwrrugwwbwuuwgrgbwguwbgguugrwurbrbgwbrbwrwwgw +wbbubgbbgbuuugguwwuwwgrurgurbrugbbwgwwurbwwggww +guwbbuwwrrrwrwbgurbbgurwgggbuwuwbgwgwrgwugwr +rbwrwubuurwgwbbrwgguuwrruwwbuwwurburbwubwrugugbbrwwrwb +bgrwrbwurbbgguubgrbbwrwbgwrrrgwbbwuuguuwguugggrrrgggw +rrbgbbuwuuwwbwgwbugburruugurwuugbuwwrbgwruggrgwggrubrbwur +uwwrggrgbubrwugrwbrwrbrrugrwrwgwgwuwbrbbugruugrbugruuwg +ggggrwbgrguubgrrwwwrrwuwbbuuwguubbbruwgwgruruwuwrb +rbrurugbguurwuwrggrbugwrrwwrgurwwbrrwwbwuwgrb +ubuggwwurggruubwwubbwrbbguubugugurrubuurggbgg +gwubuwrgubgwrwugwgrrwrrguubgrgugugurbgrrubbwwbubwwwrw +bwugwwgrgbbwubgubbwrururugwbwwwguwrubwgwbwgurbrgw +gwugbbbuwwrubrgrwrwbrgwggbbgguuggurrbbuburuwg +rbburuuuwrrugwgwrrgrggwrbbbrrugrurgubwggwubwugwg +rgubbgrwrwrbuugbwgbbrwwggrgwrgwrwgrwbguuuwbugr +rggrggugrgbwwggggbgguwgrgugbubrbgggbbuubgbbrrgwububrbggwwb +rwbbgrwwbgrubgggbugrurwwrwbuwurrgrbrurgrrwbrbrwwbbrguuuurr +gbrbgburubrgwggwgwgbwuubrwuruwwggbbgbburwbguggguuwrwu +wwggbwuwubugrurugbugrwgwgwwwbgbwwuuwuururgwgubwwg +urwrrgrubgrubrwbuuwrbbubbwggburruggguggubrrwbuubrurbwwub +rrwbrrwrbrbgbwwburrwwbgwuruuwwugruuwrurubrrwgurggwrgbgruu +rubuwguwgrugrururwuubrurgurwrwbwrrbgbbbuuubg +gbrbbgubwuwbwbgwrwuurbwrggwbbrrbguwwubrbgwbbbwbrbwggbrbub +gbrbrurggwrgwuubuwgwruugbugwgwrrgubrwuurgbuuggggwrgubbgbgbbg +rrrugrgbuwuwgrwubrgwrwwwbuuwrgbrwugwrrbrbrwgbuugbbwbu +gbrgruwuwrrrgrggbwuwgwbuuruuwrugguuubwrrrruwuwgwbbrw +gbrubgrgrgrbbbwwbuggggugbuuubuurbwuguwwrgbgbuwburrgruwr +wuwbwguuugwuuwrrubgrggwwurguuguugwuuwgguwurbrbgguugbr +ggbwbrwrgwrwwwwruubwbgggbuuubrwggugrbrrubrugg +gbrubbbwrwruugruubgwwgbbugurwugugbwbruubbbggbwugw +gbrbrrwggwgwwuuwwggbwgwbbrwurrgrggguuubwgugwuguwbwugrbbrrbr +gurwgbwwwggbwwubbbwwggbubrrbwwgrgrurbgbggugbrwrugwubbw +wgubbrbuguubburugwgrwwbubruwwrrwgugwggruwwbwuuwgrbgb +wrbruwgrgwwgbrbbgrwbruuuwbbuggwrrgrurbrugrruwrgurrwg +ggggrwbuwurrubwuuuuwgguwwbubwrrrugwgwuubbbrwwgwuurrw +gwuwwrrubuwgwwgwbgurguubggwwwubwurbbwgurgwuwwwb +ugbruruurggrwrgwuggwbggugrbgubbruwwrbugbggbrwuwbwr +wrbwwwgurgbruwuugwuuubrbrruwwwruuggrgrwrbggwur +gbrurggbbrbbrrbgwwgrubwwwuwgwbrwbwwwrrubuub +grrurgwguugrwbugwurbggbgruwgwrwgwuwggruwbgrbbwggbbbrr +wrrrrugbuwbuurrguburbgbrrbrgwurbuuugrbwbwggrubwwwugb +rgubrruwwwwrrwbwwrrugbbbbwrrrgugwwugugwwrb +brwwgwrbrbubbbubrwrwwgbwbwgbuggrbbgburubrurgugrwgwwrbgrgbw +brbbgwwgbgruwwubuggwubgbwgwgwbgwwwwbbgggbwgrbgwubbgrrwgu +gbrurwurbguuuuwwgbgbguwwwwwwbwbuwbwbrurgbbwguwurgurrrbbubb +guwwugbwwrrwbgwggurbruuwwrruwurbgrgbbrwbwrrubwbrurbggggru +gbrgrrrwubwrgggrrrwrugrbrwgbubrgwrwrgbuwbrrggggrbu +wwrbwwrbbburwbwrgubrrwbbbwgugruwwbgrgugbgwgrwgggggb +gguggwugburwgrrrbgbuwwwgbuguwbwgwgubggbuurggwbugwgw +gubbbrwuwwuurruwwrbuubrbrggrrwwrbubuurrwbururwwugg +wuggggbwgubbuwbrwbrburwguuwwubrubbbguwuuuburwbuu +bgrgugggbwbrgwbrbrrwwwububuububgbgbrrgurruubbugbugurgru +bbggwgguwbwwwuubuubrwwrbwwrbggggrrbbuuuwbrrubg +bgurwbrbgrrugbwwgbgwrbgubwgburubbwuruurbbrgrbr +gbrbububbbbbgwwwgugrubgbwubrguugrbrguwwbbguguuuruwuugguw +uuwrururugbggugrwbbrwgururuguuwrbrgbgwuguwbururbbruwgrbwr +gguubbbugbwrwgbbgwwrrgrbubggbrbwwgugrwbbwuubggb +gbrubrgugruwuurwubbuggubbwrrurrruburugrwwwgbrw +uuugugguugubwwrbbbbbwuburuguwuguwruurbrbbgrwguubggrwr +wbubguwguurwwgbrbbuwwbggrrruwggguwwbbbrurbrguwbbrubwuurgur +ubuwrubggbubwrwugwugggwggrbrgburbrbuggbwuuubr +gbrgwuggubwuggwggwgwuuuuwwrwrwwrwbubwgbrrgrrwugubrwgrrw +rrrbbrruugwgwuwbuurburbbruurbwgurburrgrrurwbgrb +wgwbbgbubgbbubbuwwuwubgubrwwggbrgwgururgbrugwgwrubrwwugrbw +gbrgbbrrggwbrbgrbgurugwruwgwbgrwugrurwwrurubgguwbrw +brwgbwuguwgrbwgbgbrrgbubbuubbrwwbgrwuugggwuwuugbgrrugw +gbrggbbburwbwrugrggbwwuguwwurgwgbrggbgugruwguuubbwwrwgwwbbu +bbbwubwrrwgrruuuwbbbugrwwggrwruurbgrgrgwwbrwu +urwgbrbbrgbguwggurrrgbbbruwgurrbrrrrurrrguwurbrwb +grurrrwrguurbbbgwwbuwgwgwgbwgbbwruwrwrgwgwwrrurubbw +gbrggbwwwgbgwwwruuwwubwwgguwbgwbburbgwrwrgwbruruuwwwww +rrugbwgburgbbbgbburgrgugwgbbwrggbbbbwgbgrubbbwbwurwgb +gbrbwrbgubwgwrggbuggwwgbbgggwwwrwwrurwwburwgbwwurgub +gbrgwgguurwwbwugrgugbbbgwbgwbgruggbwgwwrwbrr +bgwwuurgbbgbwwbubwgggwbgbwrgguugrrgbrbuugbggrwgbrwb +wwuggrrwubbrbrrgrgburwbwgrrwrrwbgwuuugruuuwrbrubwbww +urwbwuubgwwrgbrbbbbbgggggggguuurggwrgbbbbrbubwwrgwwrg +bbwuwbwgrwbwrbggrggrrbgrbruwubrbbwuwrbwgwbgw +ugggugrruuwrubrrrubbwgugwubbgwbuggburrrugwgwwg +rgbguurgwrrrgwbbrurwwrggruuuwrwwugrwugbbwugrubgbrbwuwgurb +rggggguuwbbgrubwubwgwggurbwgwbrwuugburugwggrbr +bbwuwrbwgwrrgurwrugrbrguwwrruruwwgrwbgurrgwbrgr +wwwbgbugguguwbrrbugggruwgurrbgbbrgwrrrrrwguwrwgwrwwrwgg +gbwgruurugwwbrbwgggrwwbrurrgugubbwbubgwburbwbrrbbuw +ggwrwwbrrbbuuugwbbrwuruwugurrururbrwwubuuuugugug +gbruubuwwbwrgbbbwguuggwbuguurgburgrbrrwwwguwu +wwgggwwwgwguuurrubrbgrbrggubruwubwbrgbwwwrrugbwwru +wrbrrwwbgbubbbwguugwubbwbrwbgbbwgwgbggbguubuuuww +rwwrggurbrwuurbrgwrwruuguggwbwrbbrgbbwbrggrrrrwgwbrbwrugrb +brwgurugubuwrrbrgrrrurggubbggugrwrggrbbbgrwburwrwu +wggbguuugrbgwwbuuuuwrwwbwbbgwgurwuwwrrwbwbrgwrg +wggbgrgggurbbrwrbbrwbwgbbrggwwwgrbrubwruwwrrrugrwggruuubbb +gbrugwgrrgwgbwgbggrgurwrrwbrrwrbbbugbbwuwururrggrwrgu +wrwgbugwwrbrrbwurwrgrwwgwrwbrgurgwwgbruuuubbwguuwgbr +gugrguwwwggwgwubwurwrbwbuwrgruburrruwgbuwbrgurwg +gbruurbbugbrwrurrrggubbbwuwuubuwbgurgbgbrruuwuuwrwuubwgwwbu +wgbgbruugbrbrubwuubbgurgbgubwgwgguwrbbgrbbbgubgwwbwgw +uuwugbwbwuugbrwwbbwrgrurwggubrwurrgurubugburruwrr +gbrubuurrbbubwrbgbruugwggwrugubwbrwgrrrbbuuwrwugggb +rwrwrwruuggurbgrggwurbrgrwuwgggbbuurgrburwurgwwggurbrrr +gbrggbrwwrbwrgwbubbuuwbgwrwgwggwuugwgbwgurrbubgwbuub +gbrgubrwurgrbwbgbbwbuurwgrwrbrbwurwwrbwgbuubwrrbwgub +gbrguurgrbbuugruwguubwrwruuwbuburgubwgggrrrrwbgruuww +uubgrbubbruwurbwgbbuurrbuwwbwuwwbuubuwwwwubbguugwugwuwu +rrgrrwrwgbgubuggwrbrgwbgurbwuwgrbrbuwgwrgbgubbrwgwwrw +gbrbwbbwbbguwwgrgwwbgggwbwrrwwguwbgrurwwggbgurbgbggbg +gbruururbrggugubrbwwuwrgbrgubrbguubuuwuwguwrbbbwgg +gbrggggurwbwgwrggbggurububrgrbbbbbubuwrrugruwgwrw +gbruwrguwrrwwrbggwuggwruwrrruwwrurrbrrgruwwgwru +bgubguwrwuuwuwwrgwwugwrrwuwwugruggrrubgbuuwrubburwgb +ruuggbwrbgrgwbgubburuwgrbgrwrbwbggwwrrbuubrguggguwuwrbbw +bburwwbgrwrbgbbwgrwbgrgbrgwrwgrgwgbuubuwuurrbbg +gbruuwrrrbgwugrbgwgrwbubgbrbrwbbrbuugubuguwbggwwrbrug +ugurwgbwggwrwrgbgwggrgguuuuruwgggbbrubrrwgrrbgbubwbrbgbr +gbrgwwwubrrwwuurruubburbbrgbbgbruuwwrurggrubwubbuurwwuwrgr +ubruwrrbwbrwuwbrgrgurwwbgrrgrgurrurbwuuwggruu +gwrbbuggwrgwuguubuwgbwgrgwwbbwruwggurbguwgrgu +gbwuwwrrwgbrubbbwrugbggbbuwrrrggwwbugwruugubbuburrbw +grrwwuugbbuwbbbwugwubwbugbgggwwwrurrbbgwbbgburbrwbrwu +bugbubwuwrbwwbrgrggbrugwbbuugrruwwbgburbrruugrgbrbugwgbu +rubgbwwwubwwwguuguurgrwrurwuurrwbrbgrbwbrrbbguwug +gbrbuguuuwgrurgrgggbrrbwuggwbbbwbbgugwwuubwbwuwgwubgr +bgbrbwrwbbbrwbrgurrubwugrbrbugwbubrgwgburuubwruggb +gbuugurgwuguwgbgwbbrbugwurwbwbburbggurrbbwrurbrw +ruubguugbwwgwgwbrbbrrrbrrwbuggrbwbgbrwbbuwwbuurrbrwugb +ububwbuguugrwugwguurgwbuwwurgbrbbwrggubbwrrbugwrgbbbwwb +bguwrwwrgbwrrwuwgrrrurwuruwrrubgbwgrurgggg +uwuuruwwwrwwuugrguwbwgwwburwwbwguwggwbwuggguwguguw +wubwwubwrubrbwbuwubbbbbuggrburubbrurbwbgburgwubguwgubuuw +wrwurwbrbwbbgbbwbbbrwgbwubwwugruuwwuwgrbbbugwwwubuurg +gbrbrururuwguubbgwururuurrurbgwggubbgugwrbugubbuubwuuu +gbrggwggwgubrbrrbwbwgugwwggggugbbwrgwgbruubrwurbur +urrrbggwruwrbwwbrrggubrgrbbgrrbugurggrurgb +gbrbwrggbggrgggwbgwrbuubuurwrrbbgrwwrgggrbubuwbgwubrwwbgww +rgbbggubgbubgubwwrrurbuuuwbrbwbbwrrbwbbrwwbrggrwgwwrbg +bbrwuuwubbuuugwwwbbguubbuubbgwrburrbwrugrggwruurwbbuwrrur +ubrugbggbgwuwgwbrrbwrbbbrbggwrubgrgbgwbuuuwguug +gbbwguwuwrbuwuuwbwrwwrbgububuruurrbbbrwrwwbwrbbbbbgwwr +gbrugwurbrwuwgruurrwbbguwwbwuruubrbuwugwgbg +rwbwrwugbrgbbwwwbuuwbbbubuwgwbbwbuuuwbbgwgbrugg +bwgbgrgguwbbbwbrrwgrruuwrgruuwggwruwuuggrwuwwugburu +gwwbwrbrgwgubrgruwbuwbgwbwgbgrwbbgrgwbwgbuwgruwwubbu +rwggbgrbuwrrggwbguuwruguugrubwbrwrwwbubbubguuug +rgggwububwbuggrubwuwururgbrugrbbrwugbrugguubwubbugwwwwgugb +gbrbubwubrrrrwwbwwbrbggbbbrgwuwwuwrrguubwg +gubwgrgrrggruuuubuuubrrbwbrwggbbugwuwwwrwgbwwgr +ggbbrrbgbuggbgrwbbgbgwuwrwrwuugwbbuuruuwwgu +wubrggubwbrgrbbbrwrwuruwgurwuuwuwwruuwwgbrwrggg +gbrbwwubburubwburwrwubuggbuwguwrgurbbuwwgrggrg +uugwubguwbrrwrggbgbgbwwwrrgrgbubggrbgwwrrrgbrwurgwrrgbwwur +gbrbgrgwurwgubruuwwggwrbwwbugrrrbuguwwwb +gbrugrbbggwurrbbwrwgwwruwwurgbgwwruwuugguuruuwrgbuggrwwug +wgruwbwugbgbbubrbggrbwururgrrwwrubgrwrwwbwugb +gbrbbrwuurbggbrbgugbgurwbrbugbuubrgwggbrrgwwurbwwggwrgg +gbrgrwruurgwbbwwwrrurwbgwwrbuwwuuwwbrwbwbwrgwr +gbrgrwurrbggwwrgrgrwgguuwrbwbguuuubugwrrwug +ruwruwbbubrwgwwwbwbgubbrbbrgggwbbwuruuubbwrwuurbgubrwu +gbrgwwubgrgwuuwbgubgggwwbuuwbbruugwbbgrwwwurgwurgwb +uurugbrrguruuwgwrbugbuuubbuugbwrrrgwwwugugbrb +uuugwbubbgwbuwuwrgurrrrrubggrbwgwbgruwruubugwgwbrubgbb +bwgwuugggwrruwbuuwbrrwbgrbbbrbrgurbgwburubgbububgbrbrr +rrbbguwbrbwgbuggbbwrgubrwbwrbwbwwbwubrguwwggwwwbrgugwubgub +wwuuwuwgbrrwbwwbgrrbgrrurrggbwrgbgruubwrwub +rruwwbrrurwurbugbbuwubgwbuggrbuwugbrrgbgggrrwrgubwrrbrrw +uwrbggubbgwwwrggbuwbbgrgwurbbwwgrrwburgrgurbw +gbbggbbbbugbgubbwuuuwugbrggbguwuubguwrrwggwgggwrwuruww +gbrbguurguguuubrggwgrwubgubgurwugrgwwwbwwguwbwbwbuwbw +wggrgruggrgwgwwrgugrgrwgrbgrwbuwruwbbbrbggbrrugurggb +ggbgbubbgwbwururwwbburgwwururrbwrbrruwbwgguubwbbbgbwbgwb +gguguwrwurgrwbwgwuggugwwgrgrurgrwwubwwgburbuuubrrrrwu +uuguguuruugurbrrbgrwwgrrugrbguwwuurwwrwwuu +brbgwgwgbrgugbrgbbwbwrgbbbrgwbrgwubrrgbgrbguubg +wguburbgrgwrrubwubbwwwuwbuugrrgrrbwrbrwbrgwwwrb +uwgbwurubgwbrrgwubuwguurbbbggruguuwuguwrbwgwrrur +wgbuuugrurgubbrbwgbwrrwbgbbburwwbgbrgguwubrrrugwrw +gbrbubwuwwrbuubrwugrwubuuuggrwrbbgwburwrwggrgb +bgwrwuwuuggwugrubbrgbrguubgbuwbwbwgbwuwbwbbuuugrrrrgburw +rggbgwwurugrrbugurbggwuwubrrgbubgbuubgugwuwrrwbubuggbwwrbr +ururbrwbbgbbrwugwwrrburbguwrrgurggbguggburrwbgbgwbbwwub +grwbrbwguwgggrgubrrgurrgbrrrrbugbrwguburbrbubbubrb +gbrguburgbbuwgwrburrgrbrrrugrwgwbwrgrwgbr +bwbrbbbbbbwuguurggurruubwwgrurrgwuwuwbgwurbbubwubwgbbu +gbruwrwrugbwburrwwgbbrgwgwrwgwgrwubuwwubr +bwwurbgrurgururwugrwburgrgurwbgbbbwbrwwbgrgurrbgg +rbwgwugubwrbwguwwurugrbrrwgrbbrrgrggwuubrbgwrguggw +uwrwwugbbgwwbbrburgubuurwbbgugrbgwwuwuuuuuugbgrrgub +grbguubgrwruwgwwbrubrbwubbubwgrrgwrbwrbgwwwrwburrww +gbrgrbrrguwrrrurrruwrrrrwrurwwwrbuwbgrbgrg +gbruurbuggrubbwugugrbuwgbgurbwwbubbgggwbrg +gbrurgbbbwwuuggrbrurgbbwrguugbrgwrrrwguwuuwwrbubgggggw +rrgbwrbrgrurbwrruwuwwrwuwwwwwbbgguwguuurrggbgubwguub +gbruguggwbrgwgwurwurgrurgbbgugbrgugwbgguwububurbrbrbbgg +bwgwgwbugbwgbbwwbrgbwwgwgrguwgwrrbbguwgwbrugwb +ggwugrruruwugwgrgguuuwgwgwwbbbrbgbrggbbwbr +rurguuwgubrggwbwgbuugbggurugbrruuurwrwgrbuwrurwwrubgwwg +rgwrwgrurgruggbuuguwwwbbguwurbuwguguggubgbrur +rruuuuwruggubbubbgrgwguuwuruuurwruugwwgrwbbgrwuurrwwbugrg +ruwurbgwrurugurwwgbrgrwwrwrugbrurwwgrguubb +rrruugbubrwruwrurbbbbrwururugrgrburgggubugwrruwuuggggrwwwr +urbbrbgbgbwbbugrgruuggwwwbuubugrugguwbwgrruuburrrbbw +wgbugrrrwgbrrugrurugbuurbwrbuuubrbgbuwbggbg +ggwbrruuuwbrgrwgwggwbwrubrgbuwbbwbrubgurbggwrrgbbw +gbrbwugrgugggbrwbwwubgbububgbbrwgwgbuggwwbburbbbw +ugwrbwwbrgbbrbgbwbgbrrguguuwbwrrrurggurbrbwbubwrbwrg +rrbuwbguwwrwuguurrbrbwguuuwrwwbguwwurwwurwuwurrw +rwwggbwubbbbuuwrbbrurgrggwwbbgrugbbguruwuruugubwuugr +bwuruuuugwbwrbgbuwbbubrwrbgguuubggwwbgugwggguwgurwbwggrg +bubbgrgrgrbggbwuuruwbbwrubrrbbuuruggrwwwwwgrg +gbrurggugruuwrbuuuubgburwuwugrgbwuugbbrgrwbwrguwruggwggb +gburugbuwggrguuurbgugbwuwgwrwuuguurwgguubgggu +gugbbrgwubrgbbuwurgrwrwbwguuuwbbwbbwuuuubrwgrr +brgwwbwrgrgwbwrrrrwgurrbwbwwbugwwwgbuwugbuurbur +rwrwwbggugwbbgwubgurwgwburubgbuugbrugurbugburuuggguww +ggbuwubrwbruwubgubbwbgwgurbrwbguwgbrgbugrurgww +wwrgwrbuwrbwrbrgwggbwrgurwgbrrbrruwuwubwubbr +gbrbwubruguuguwwrrburuggwgbburbbwbgbrrggrgwwuuwgrwwb +gwubbubbbgubrububugguuurgrwgbbwrbrubwruwrruguuuwgrwru +grwwwugwurbwwuwwbwbwwguwbruuuguuwrgugbruurgu +ububuggrrwrwbwwwugrruurbwwgrurguwbbwgbwwguguuububug +gbrgurgbgwbwuwwrbbbwwrbruubgwwgbruwgwgrwgbuwuuwrwrubrg +wurwgwuwguggbuugggrwbuwrrwbguwgurwugbbugwrggggugg +ggbrbwgbbugwrwgbgrrugwrrbgwubuurrrwgbrwbbuwggububuwurbwbg +ruuruwrgubuwwwwrgwrrbgrbrgwuwrrbrrugwuwbwguwrgwbbbwu +gbrbguggbrrwrwbrwgggrbbrbgrwbuwrurwuwurrruuurbu +gbrugbrbgugwbgbgggwrrgbrbgbggrbgrrgurrggrrbwruggurwgwugbwb +urbbgurrbrwgggbbbubguuwrrgrrurrbwrbrwurruwrurbrwgwu +burrgrrggrrbwruugbuwrrgrgwguwwwbbrrubugrbbr +uwburbwwgrburubuuuwuuuurwuwwbuugbwbwgwguuwuurrbrwbggrrwb +wwbbbwgguwbrbgwggguubwurbuurruwrubwwwbuwurwbbrgurwbuw +wgugbuuubbubbwubuwbwwurbbgrwwugbwwbgrugrwwuwgbb +wgugbubrggurwggwwguwbwgubrbrrugwurrwguwgubgugbugbbuwwwbug +bbuwbwrbrwbwruugbbuwugbbrwruubuugbgurwubwggbubgu +bubuggwrrwrbrgrwbgbbrubrgggggwwwgbwubbuuwbruurrwrurug +ggbrubbguubguubwwugubbggwbwwuubrrgwwgrrgrbrgwguuwgrbr +ubrugwbrbwuwwuubbwbgurbwugbwwugrgwuuuugubgbrgurgubb +uurwwrurrrugwuuruuubuwuwburbbgugwugggwwwwrrwugugugbbbgb +gbrurgrgguwuubgurgubrubrbrwurbgbbrgwwwwuubbwuwrwg +ggurwrgbwbbwruruubbgwbbbrbrwrruguguwwrbubwrgwgwrrrbrgbb +bgrrwwwguugbrrgbbwbuuguwwwuggwwrbruugwgrwwbggguwuggwu +gbrgwgrgbwbwbrwubbbbrwwrgbgubrbubbbwruuuuggguwguur +grwgrgwbubugbubwwugrugwbwgbbwggugwgwugrrrwgbwwugrrbbw +wbwwbubgrgwwwgbuwrwwggrwggwbrwuwbbwugguwrbubgg +wwwwgwgbruwggggwuubgwrubrwugubgwgrwrbwgwggbuubb +bgbbguwuwburrwrrururwgbbrbgbbwwwwgggurrwuwgrbrugggbub +wwugwgbgwrrburwbugrrgguwggubururgurbrbbrgrbuuburwgguggrgg +wwuuwwuuruwbrwwrrgwurbuuuggggurgbrbugwbrwwuw +ubrgbbwgrrrrubugwgbubbgbwwwrgrwwugubbrwuwwrrbbuubwg +wubbbwuubrbwwbwwgubbwrgwrrbggbrubrwrbuguggbrr +bgggrbggrbuwrwbbbubgbugrbuuurgwgrwwugrugbrgbggguuub +gbrugrggrggruwugwgggurbwuuuugrugbgwrwuubburrrrgwrwwbr +rgbrwrrbuggwrgrbrrwugrrrwuuuguugggbruuwgwbwrwgrubg +gbrbbggbgwwrbgggggugrbwrugwwwrwgrurgggwwwubwgrggwurbbb diff --git a/inputs/input19_test b/inputs/input19_test new file mode 100644 index 0000000..ad43a74 --- /dev/null +++ b/inputs/input19_test @@ -0,0 +1,10 @@ +r, wr, b, g, bwu, rb, gb, br + +brwrr +bggr +gbbr +rrbgbr +ubwu +bwurrg +brgr +bbrgwb \ No newline at end of file