diff options
Diffstat (limited to 'day19')
-rw-r--r-- | day19/data.txt | 402 | ||||
-rw-r--r-- | day19/example.txt | 10 | ||||
-rw-r--r-- | day19/go.mod | 3 | ||||
-rw-r--r-- | day19/main.go | 105 |
4 files changed, 520 insertions, 0 deletions
diff --git a/day19/data.txt b/day19/data.txt new file mode 100644 index 0000000..e515df9 --- /dev/null +++ b/day19/data.txt @@ -0,0 +1,402 @@ +rwgw, ruwgb, urwbr, wu, uurbubr, gbbr, uwwb, rubgwu, wggwbwr, rugubuww, uw, rgru, rgrr, rrg, rbb, uurbrww, br, uwrwrwgb, bwbw, wgbu, wggu, urg, ugr, ugur, gurrbrr, ubgrruu, bb, rburguu, urgg, wggugggr, brww, bwwgr, wugub, grgg, ugw, grubw, gbwru, rww, wbu, ggwbu, ugurw, ggwb, uubuwgb, bbugw, rgg, wurr, bwbb, wburbb, rbrb, bbrwgw, gwbb, ubggr, gurr, rrr, rburg, uug, bbrubu, bwgu, gwug, guw, buwurgw, rruwggg, ubb, wwb, wbrg, wgr, wgrw, gubrr, rrwru, gbub, rbr, rwr, rubwu, ub, bgwr, gu, ggggwrbr, wrw, grg, rbuwu, bgbr, ugww, wrg, brwub, gruu, gbwbw, wubw, wur, grggwb, uuwuug, wug, rruuw, wgwg, uww, gbgu, rurr, gwguu, gwrwbw, guuww, rbugw, gg, uwbw, ubgrubur, wurrb, rgugurr, wrr, buggb, urwrb, ubuu, rgu, gwggb, uuu, uub, bruubb, bww, uwgb, rrubwg, ubwu, ugu, buwrrbwr, bbr, rbrww, ubuwg, bwwrr, gbwg, bw, gguugu, bgbbw, ggb, wrruuwbr, rug, uur, rgw, gbb, wuwg, r, guug, gwb, wbgr, bbbw, grwgwr, gwg, rurur, bubu, rguu, brb, ugbbbrr, wugrrr, bbw, bbru, bgrbubg, ubw, uruu, wgrgrwwr, bbwrugu, gbbbwur, rubbwbuw, wuwrwbu, brwbru, wub, rbrg, wwbwrbu, grbbu, ubbbwb, urw, gwuw, uu, urwugu, bgw, gw, rbwwwurg, gubr, bbu, rur, rburwgr, gwwgr, gb, rbur, rbw, ug, wurur, gbbrrb, ruuuwugr, wwrgug, gbrugu, wrww, wuwbgw, uwwwgrgb, gww, grwwu, ggu, rrurr, bgr, ubugwu, wwgwur, urrrbw, bwr, wrbgbu, wrwbb, gug, bwu, ruurw, rw, wbb, bbwgwrr, wgg, ugwu, wr, wwwr, w, wbwbuw, guugg, bug, bbbb, brbb, brur, rbg, wuu, wurwgb, rru, urrrbugr, grr, rubu, uugrwbb, bgbrurr, wgw, gub, ugwwgr, urwr, wbwbg, wrrb, rwrgg, ggwgrgw, bwbu, uwb, rg, urr, brrur, wg, u, bu, ubbbrw, brgbbbbu, wgrgu, bgb, ubu, uugubg, bub, rwrr, gggbrw, gwwrww, grub, urgrgw, bru, wgwgb, wubrg, ugrwwbb, wbgwrru, gbwb, wugu, uwwwg, ubr, gwr, bguwb, guwbw, wrb, grw, gwwgbb, wbwwr, grbwub, ubg, bwbgw, rwu, uurb, rbwgur, ubbr, grrr, ubwg, rgwuug, rgb, grrbub, bwb, uwuuubg, wrugb, brurub, wurg, urur, uru, bwwrrr, urwub, uwr, brr, ggg, bbg, bgg, guuruuu, ubwb, uburgbb, gbgrgug, rbwr, uwu, rwwbuugr, ubwwg, wwr, brg, wruububu, bgbb, ww, wrgbu, ugb, gru, bbwgbr, brw, bwwbb, wbr, grbg, wbbb, brbrwwbw, gbgwrrub, wwu, wgb, rruruu, wuggr, urb, bwg, wbg, rbu, wwg, wuw, wrbbugg, rb, rrgrbrg, guu, bwwugr, rwrb, gwbrb, wrugub, ubbrwu, uggbb, ggr, wwru, rgbb, bbgbgrr, wuruw, gbg, ubbwrg, bur, wuwuu, bgu, ruwgur, gbu, wwuwb, ggbgg, ugrbb, bugw, rggrb, rrw, rgwru, ubru, grbbuw, wbrr, wruu, ggw, wbgguuw, rggrugw, gbgwwg, gwwru, gur, rr, wbgb, burbwr, rggu, wgwu, rwuug, gwrbr, wbbwbgb, wurb, gbbuggg, gbbgbg, ur, ugwwu, wgu, bg, urrbgr, gurwg, bbb, urrr, bwurbrr, gbr, gwurb, ugg, uwbbrr, buggr, rub, bwrgbw, uwbb, ububggw, uuwrbbu, rrrwr, ruwgub, bugb, wwrw, gwbg, wwwrrr, urgggwb, gwuwr, www, g, wgrg, wbuwb, grwrg, uuw, wuwgb, buru, rgr, rrgu, urbgb, wgrr, gbuwww, rrgrgw, rgbrg, gugbuw, rrb, rrgbug, ugwbrgw, rwuw, grugrrbr, gbgww, ruw, wubb, gr, ruu, ubbg, brgurb, rwg, gwu, ruwr, grb, uwg, wgww, bgbbrww, buu, rurbgr, rwbw, gwwr, rwwbbugu, grgbr
+
+rubbgwuwbrwgrgrgrbrbbubgbggrbwrurwuggggwrbrgwbrrwb
+urwgurrubuguruwuuuruwbbgrbbuwrbwrruuuubbuububuubrw
+gguurrubwbuwgrbrrurrgbgburbrrurwbrrrubburuggbbgb
+rgbuuwwwgbbwgurrwurgwgrgrbbbuggwgwugbrwb
+rwggurbrgwrrwuururwwubgrurwwrubgguububururwb
+ggrgrruwwwgrwuubgrggbbwrrgbrwrwgwwububrubguurggbrwbg
+ggurrgrggwrwruuwrbrgbrubrbuggugwgrwgwurbub
+wwwwuburrwbwugguwuwgwwrbggbwuwuuuuruwwurbwurgbwbggrr
+urburguuwwwgrbrbgbbgbgrbgbubguugwubugwgrruuuugbbbbgubggu
+guurrgwububururwgugrguuubrwrguurbuuuugrgbuwru
+urwuwuuguwwwgrgbuwbgubwuwuurwuwggbwgubrbrguurrgrwb
+bwwbbwuwbubgrbbgwuubrrbwgbggubbrbbwrwuuuguugwrwbub
+wwwguwbgrrgbrgggwrgwuuwwwgwgwrgbrbgwgwruuruguubruug
+gruuwuwbugubrwbbubrubgrruubuwugurbggrrbbbbg
+wurubbwuggrrurbwwgrwubgbwguurbrwgwwwgrwuuuggwbguwwr
+ggbguwrwguguwubgurgggrguuwugbuwbwwgwburgbwwuwgbrwbub
+gwugrwruguwuugubbbrubbwbuwwwrgburrbbguwbgbgwrwb
+grgugwwrgggbbbubububwuggrrgwruwrubwbrbbgwrwrggbuwrururrrrg
+guwgggwrwrggbgwrrubrwburbuuububrbwrrrgurwugwggr
+wuwwugwrbbuuburuururuwwrggbubwwugbuwugbburrwuwbubgbw
+ugbggwbgurubbwrgwgggggwggrruubrgrwrgugwwgurrrbwbrwwur
+wurubwrrbbgruurbbgurbbubuggubrrwwgbgwrwuuuwrgwbbrbw
+rwwbruubgwrrugggwubgwwubwruuwggwrbwwbbrrwb
+ugwgbguggggwwbwgwwuggurbwwgrbbuwurugwwrrrgugburruwb
+brrrugbwrwbwwurbgbwwuugrbwbrgwgrgrbgrurwgwurgwruuguwbrurwu
+rruwrrbgubguurwwugurrgrwbbuuwuburrbwwbbrggwuwr
+uuwrburgruurrbuwwguurwbwwbwggrbubrwuuwuuwrbbg
+gbbrrwgggbwwggwgwuurubrrurgwgwgbwgubwggrrbggug
+wrwuggugbrwuuubbgrbugubbgurgrrburgwrbugrwb
+bbbwgbuwbgrgggugrugwwwbwgrrbbbuubuguuugwburrrwrggwrrruwug
+urbwwguugwrgbrrrrrrrbbwggrrubwgwugbbbuurugggrg
+uugrugurbbruubwgbwbbbwubbrbbgwuuuwggwwwuubrrrwuwubrgrbrw
+wbrugrwrwrrgugwugrrugugwubugrrrwbrwbwrggbwurrbgubgwbgbbgrwb
+uwwbbubgrrrurgwrbgurugwbbrbbburggguugbwbrbgwbubuwbbgubgwg
+rrbwbrbruwurwbwgggwrguwbbubuwuwurwubgwbwwgbubggwbbubbrbr
+wwrwggbwwwrgubwrbwuuwbuuuwbrgwwrbrbrguruwrwbrrgrugb
+wwbwrrubbbgwurbrbubwwbbbgbrbgbwbbuggrurbrwgwbubguurrwrwwb
+rwurrgwuugrubggwbuubrbuwrggguwbgrbbgrgbbuwggbgwrbwgwbuuru
+gwrrugbuurgrrwgbggwggguwwrrbgrbwwrrgwwbwubwbwrgbrgbgwwbgu
+brrrwbururwwrwwrrgbwbubgbwgrgwwruuuwgugrwwrgbubru
+uugbwguruwuwubburrgbbgbbrwrrbubuguugwgwwbw
+gwburgbrwgwwubugrrrbuwugrbbwrrguwrbgbbgrggggbwuuwwgwgbww
+rwwwbgwuubugurwbwururgbwbwwrwubgwuuruurbwbwgbwwbuwgg
+bwwwbuwwrwgurbbwbguwwgwubwuwgwwubbwwwuwuuubbwr
+urugrwggbbrburugwggbwbbuubbrbguuggwurgbrbbbgrbwuw
+bgrbrbgbgwrrwgugbubbgbrurwrrgbwbbgrwrwbwwb
+gbwubwgurggwbbgwwgbrrubguwgwwbrgwgrgwwwgwwbruwrwbuurwb
+wuuwrwrbugruurrrrgwurguggbgwubugrugwwuguwwruuwbrrrwwruggb
+ugrugbrrwuuwrwuguggwwgggubuwrrbwrugwwuugwbburrbrwb
+wrrggbggbrgurbwguurugbwgrgwwgbwbgrbgwrbrwb
+bugubbrwbuwugwwrwbgwugbuuubrwbugwrugggbwwrbgbwuurgw
+bwrrwbrruuuugugggwgrgrwwrwwgwwgrbggwruwrwwwgrurwgggwbbw
+gwwuwbuwwgwuurwwwgbruwuugruuwrgbbwugwbbwbguguw
+uwrwwrurwwuwwwuwuubbbwbbrrwwbrrgbwbwggwgwruurrwb
+rguuugbrbgrbwbbrwuuwwubwrrwggrwrgwwrgwuubwgbbwubbwbgbrruwu
+gbgrgrwgbbbrwgubugwwuuwrrgbwbwgbwuwrugrbururbwrwrwbubrr
+ruwrgurgguuurrggrurbuurubrbbguwbbrrbuuuwrgrwb
+guurwgbwrbuurrrbugrbgbbrurbubbuugrgbwugbru
+uggbgwrrgrrubgbbgwubwurgbbugububwrwbrgwbbbwwrwb
+gwwgbbrrurbwwwrrrbruurbruggbrgwbgurbrwggwbrgurbbbwubbuw
+wbgrwbuguguwrbbuurbubgubwgwwbrrrrbugurgggbbgb
+buurgwggbbwgrrbruwuwruububuubrrbrrwrgbwbbwbwwururbgurbrrgrwb
+rbgggbwrugrgwrwgwurggbrbgwgwgwwrbubbrwrbbuurugrrgwbrggbu
+grrbbbwwguwbruwggwruwurrgrbgwubbubggwuugwubuwrrugurwb
+rrbububbrrbbuwwuuwggbbwuwuwwrwgwwgwgrburbgrgrw
+uuurugrbrrgwbrrggurrbubbuwguwuwgrurwbrbgwurwurw
+rwubrwbuuuwbggrbwrwgwwrgrbrrbbwgrrwrwrrgbruggwwwgbbrwuuwrg
+bburuwbugrggrwggrwbgbbuurwubuuugrbrrwgwgbrggrgggwbuuwbwbuw
+wrbrbugwgrbuwrubwgwuwugbrgbwrwrgwururwrrrggrgurrwb
+rggrbururgwuuwgbuwuwrruguugwbgubuwrubuwbrggbggbggrwb
+gwurbruwrrgrrwbbwuwbgwrgwubbbuburrgbwrwrwb
+urbrugbrwurgrgbrruwrbbrgwbrrbrwurbbbugwuugrwguwr
+brrgurwwrguuubrggbggwwbgbgrrwwbburwuwrrwggbwubrrbggugubu
+rwgwwuugbwrwrguwrrbrgwrurbwurrggwuwuwbgwgwwguurgrwb
+guggggubguggwugbgbbwwgurubwugrbwgububbggbbrwb
+wgwrguwggbugwwgrrrrwgwwwwrwwubgugwugbwgwggubwubrwb
+grwwgbrwbubbwrwwwubugbgrubuuwbgurwurrugbwrgrrr
+uugwwbuubggggruwugrurguwwwbrggggggrwwwrbrgugu
+rgubgwbwurrguwgwburwubgrgbubbrbrruugrugbgrwwru
+wbwwrubbbguggwbuugrgwguruuggurwggrrbruwbwrgbuw
+rgugbrwuurrrrrurubrrgguuwbrrwruggubbbubgbwguurburggbrwb
+rbuuggwwurwuuwgubgrbrruwrburugurwuubbburrguuruwr
+rwurwrbbubgrwgggwwwbruuubwrwuwuwgrgbrgrgbugwrubrrbwbwbwrwb
+gwrgbggrwrgbbbuuggbgrrgrrrruurbrwuugbubgbwur
+rrurrwuuwuguuwbububrrwugbwuurbbgguwrwrrgrwwgbrggrburwg
+ubruwgwbrubwrgbbrbbubggggwrggrgwbgggbgrburuwrbbrurgrgbbww
+wrwgubgbwruugwubbggwugbgwwugwrbruuuwrwbbrrrru
+rwubrrgbwrbgrbrwggugbbuugrguruwwwugrgurwb
+wrgruuwrgguwwbrurbbugbrgruwrgrwggrbwwbwbgwrbrwubwubrwb
+bggwugbrbwbgugwuwwurrwrrrwrgrguwuwurwguggwbrrbugrwr
+ugubbwurburwrrbbbgwrbgwuwgbubrrgwgubrubrgrbb
+gbwuggwruuuguurrwuurubrbwwbbwwuburgwgwurbbubg
+uubwugrgburwubbbuururrwrwrgwurbwrrwurrubrwb
+urbrwgwbuugbrwgbugggbbwwbuguuubbubwbguuubgbrrbububrru
+rrbwwwbgrgwgurwwuwrbgwrwgrruwbgwbgugurwgrbugrbgbrbruw
+ugrwbgrbrburugwbgugwugurrgwgrgwwrbgguwgrwrwb
+wwbgbrgrwgggrbrugwwrwrbgubgrwguwbwubwwbgguggbbrgugbugrbbr
+ubrwgwuwguwbwgguugrrbwuggwubbwwrrurbwruwbuw
+gubrwwrbbrwwbuugrbwwugbgwwbbbugwrgbwbwwbwguggb
+rurwgbbggugrwbubugrrwugrubuwwwwrwububgwwrwgwbr
+wgbbrbbubgrrwwwgugugurbrubbuwbgwwwgwwgwrbwbw
+ubgubwgwrwbuubgbbgrwbubugbbbrugrgwurubwgubguwugrrbu
+gruuuwggwwwguwwguubggbguguuugwugwwgugwrwb
+wrwbrgbgurwgbrbgurbbbggrbgwgubwbbggwrbwgbbu
+bggubwbggbgrrrrggwbwbbgrguurrrggwbgurgrgwbuwbwurg
+wuwbggrwwwbubrbwgrgrwgbrurggwwwubwwgwgbwuwwuguuwwgggbb
+rwrugrubggrbururrwuwurbrwbuuggrbrbuugrwubbruggrbwuuru
+wbrgggbwgrwwubbbguuuugrburubbrbrrrwubwgwguu
+wrugrwruurrbwwwurggwbbwbuggrbwuruugwrburrwb
+rburbbrwwrwgwbrubgwgwrwgrbwurgubuguwwwruuggbbuwwwggrwb
+gwuugurgwwwrwwgbrbwwugwgurwbbbrwuwwwgrgbwbbgbbgruwgwwgwrb
+rruwgbbwwrugugugrwubgrguguuwggbrrbrbubbwugurbgbubb
+uuubwuburgrrwuugububuuwwrwrgbwbbgwgubwwgwgubrrbgbruggbu
+wgrwuruuurwwbrwbwgrrwwrgurrbubwrwbgwrggbrrgugbuu
+ugwbrgbbbwrgrgwbrguwrbrrgggbbuubgwbwgbgrwbrrwrrrgbrbgg
+rgrggguuguwgbgrgrrgwrbbwbgurrrgwbwwguwbgggrbugugrbrurwb
+bbwuwgrbbbbwrbrgbrgbbbburgruggrrrrbwrbbrwb
+wbwuuwrruwggubggbgwbwwbggwbgbrrruggbwrrrbrwrb
+wuubruggbruggbwbwuuugwrrwuwrgbwwbwuwwwrrgwrr
+uwwgrbuubwbwbbrwburbrggburubwgguuwbwgbwburggwrgbrwb
+ggbrubuwuurubruuubrbrgwuubguwbgbgwrrubrrrwb
+rwgbbburwggwwgbbbrruuurbgrgbggrbgruuggbrgggg
+rwwbwgwgwwbrbugbuuwbgggggwgrurbgrgwgwrgbbbuugbbgruwgwwwbg
+rbwubbwuugwggrruuuugbruwwwwuuuuurgbgwwwgwbggwgbrurww
+rwguwwrgugrbuwrwwbbugurrrwubruwugbrwubrwrgrbggbgr
+ubbbugrbugrwgwggbwugwwbgwguubugbggbggrbuuwwbbbbbwr
+gburuuwbrwrguwbrubgbwgruuwrwgbrwbrwwgwbgwggw
+ggwwwguwgbuwrggbugurrrwwwrbrrbgurbbbgbruwrwwrbgrwwbuugrwb
+rgbgrbrrubwuggruuwbgggwguuwwwrrrwuwrrgrubbbgrr
+uwwgrrbugrrbwgggwuruwuuwggwbgwggwrbbuwbrrruubuguwugbrurwb
+brwruwruwggrrubrwugbgbwwuggggruubrruugbgurrgwwugrurbrr
+rgbbrrrbubrgbbbuuggruuurguubwgwgrwwgrbbwruwwb
+rrbuuwgbuwwwbggrgbuurrbwwbwbwbrwwubuurrggrbg
+urgbuwuwwugbrbguugbrbbggwggwgburgwgrwgurrbwwgrbbgw
+uubrrugwggwgwbgbbwggwrrwbruwbrwuurgwwugrwgrwg
+rgrguwguwrgwwgruggbwwbugbruubgurgrwuwrugbbggbuwrrggrwuug
+uwubrubgbbwrgbgugwwwwwubwwubrburbbuurgwrrbwbubrbw
+rgrbbwggrbgrrggrgbububggwggwwwwbrubguwgbuwbruwgugrgwrww
+bbrwwrwgbgbgbrwwubbrgwuruwbrbubrrburuurwb
+uuwgwgubwwbburwgrrbwgwrugrbwwgbggrurgwbuwru
+uuggrgwuguuwwrbwrbuwrbrbgbuburuwwbbgbggbbugwwbu
+bwbgwgwbrbbbwwbwrwgwbwgurggguwugrubrubrbrbuwwuugubru
+uwuwrgwuubbruurbbbururrurrrbrwggbgbbgwrbuwubgbrrgwuurwb
+bwgbbrgbbbbuugurgrburrrugbuubgbbwwwwgbuuwuggbgwguubb
+uubwbuurbbwgbrgruwbugguguwbubbgrgbbgwbubggrrbwrwb
+rrrguwbgwuwwbrrwrrwguwurbgbrburrwgrrburgwbbrruwwrrwbwrb
+rruguburbgwgrgbguggggrugrgwbwwbwrbggwwgbruwuwrwwbubgburgr
+rurgbwbugrbrgbgrurruwbubugubbgwuubgrwgrwwwgwbwrwbbwb
+bbgbwggwgbbwbuugrrubbubgbrbrgubrugugrwbrwwbg
+gwgugbburwwwwgbwwubwrwrwuurruuwuwwurugrrrgb
+wwwrrrgruwrrrwuubwbrrurwbwrwrwbwggggrrbwuwggg
+gbwrwguguggbwwrrbwgwwbwgbbbgwbuwuwrgwwrgbwuurb
+guguuugbrbgruwbwbubwurrwggrubruwwggbwwubguub
+uubbrubgrwwwuwrwgugbwbgurgrbbrugbrurguwrwwbbuguuuburwb
+gubbuuuuubbwubgrwwguruggrbrgrrubuuuurrwrwb
+uwwgbgrgrbrrgrguwgubuuwbwgguwbgurbwugbbrgguw
+buwbgrggwwubrgrggbwurubgrbuuuwurrbuwurbbbbbrubgbrbuwwwrw
+uwbrrbbwwruurgrrgrwruruwuubrgbrwwgwbugrbbrggrbwwbgrrwb
+rbwgwbrguubbbugwguwrgrgbggbrruggrwubrwbgbwwuuwrrgwg
+rbrbbgwggwuuburggwwrruruuruggwubruwwbrurubwbu
+rbubuuurbwrugurggbwwbugbguuuuuwrubbguwrwb
+bbwbubwrbuwgubguwrwrwgbgrrwwruurwwrbugrrurwb
+bbuguurruwrrbguuuugwrguubwuubrbggrwubgugbwbwrrurugrugrwb
+gbuuwurrbrwwrubgurbuubugrrbwubuurwuwwwgbbgbrwbrrrubggrwbgwb
+grggrugrrbruuwbbbrrugbbbbuwbrwurrwgbwbuwrwb
+bguurbwgwgbgbgrgrbbwgbbwubbwggrbubrwrbrubrbrgrwbburwb
+grrrbrrwubuuggrgrurruuwwubwuuwubrrbburbrwwggrwgurgwgggwr
+wbgubuuubwuwbrububrbwgrugrrbrrwbugguwwuuugu
+rrgwgrguwruwgrwwrbgrgbbbbbwrgbugbggbrrwb
+gwbrrgrruurwurburwbgrbggruuurbrbwubguwgrrburbgwwwu
+bwwbugbruwrrguubruwbruuwrrwuwbruwgrwgwruwurgrbgurgruguwbg
+brgrrbururwguwbburgurgrggbgubuwgruuuurbrrrrwugg
+uwrbugwwrwuwgwwbuugbuurbwwbrwwrgrbggbgwwwrbrbwrrubbgrugw
+uuggwbwrrwgrruwgggbggbgbubgwgbugwwrggrgbrgrururgugur
+bwwwrugrrgbggbggbwubburrgubgwgwwrbwwgwbgurw
+gburbuurwgbwgwwgggwbguwuwruububuwububwuwbgg
+gbwggbgguwggbgwwrurwggbuburwrrgrbgbbuwuuuwrggwggwb
+gbbwwwgbgwurgrbbwbgguwrwrggguwbugwbrgbwurgwuwgrrug
+rgbugwrgugwbbbgggrwgwubbbwuurbrbrwbrgrwuurwgrg
+ruwbuwurgwbuwrrrgwbrwrrruwwgggwugbwwrgruwgwubbgrwrrrwu
+brrbwbbgwwwuururbrbuuwwwuguwwburbrurwuwgbwrbuubrbbww
+rrrwrwugurubugbubbgwgrggwbbggbrugwbwrbggburgbrwr
+ubrggrgbgwgruggrgrrwbruubwrrurubrbgwrwbggbrgbbrgwbbbr
+ggrbbggrurbrbruwwugwrbrwrrbwgbrwwgubwrbrrgrbbwwwruwggww
+wugbrbgwwwwrbugbwwrrburuwrbruruwuuuurbuwwwbgrgbrwb
+bbgbgruurgbubburgwruwgrwuuubbwbwgugwbrbuuwwgurrurgwwrrb
+wwburbbgbwurubrbrurwwgrwgubbgwbgrguuugurbwuwbuwuwuru
+bwrgbuwrrrbubbwugbbrrgwgrbbbuguugrwbrurwrugguubbrubuggrwb
+rgrwugwgbuuwubwrguuburuuuwuwbgguwuubggrrbugrbugwbgwwubwwbb
+wbwrgurwrwrgggbbgggwwrbrbgurggubbbgrgbwbug
+rbwbuwgurbbbgwuubwbgrwwubwbbwbgggwurbbbgbuu
+wbburugwgrwwwgwwrwrbubrwuwrbgbwgbbwbrrbwbubbwbruubgrug
+wrwggwgwwuuubbgrrwggrguubrgurrwuurubwurggwbrbbbugwuuwubwgu
+bggrgbruwguurrurrbwuuwgugbrbwbuwwgwrgurggwburbbwgbuw
+wwwbbugrrwwbrbwwgwububbuggrgrurggrwgrurruggbburwwgwurwb
+rbrrwubgrwrbrbrggwwrurrwbwrurbwgbubggbrrrwwrwb
+wuburwgwrwuwggbwwrgwwwugbwbggrurgbrurruwburuugwrwb
+gwbwurbrbuurgwwbuuurrubbbrbwgruwuwuuuugwgbbb
+wguwrbrbrgbbbggbggbgbgwgwbrggbggwguwurwwbbwbrrrrbwrwgrwb
+wwwbruruubrurbugrrwwuburubbguwwrrbbwbbbrgbbubuwrurugr
+brurrgggruwgrburwuggugrrbwbuuwbwuubgurwubruwrgwurbrwb
+gwrruuwbrbwwbbbuwbwgrgubgggggwubgugubrbgugwuuburubugruwu
+uubwruurruwwbrwburwggugggrguuurrgbbwbuggbwbuuurbgrwb
+ggwrurbgrwgbbbruuurbbuubrwururgwwbuuwgrgwrgbubugrbrrgg
+gubrurubwbrgrwwgggwwbwwguubbgggbggwbwwrguwrgwuggr
+rwwugrbggburrrrbgwwgwgrurbbrguwrrbbbruwubgrgbrrwb
+bgrrrbbgrguwgwwgurwwwrwugwwgrgrrwwguugbbruruuuwburbbuur
+gwrgubrbubbbbrggrrbgwuwwbgbbuubugwgrwubgbbr
+bwwwgwguwrrguruugwwbwgrgrwwbbwbrrgwbburuubbugbbrgggw
+wburrbwwgubwbbwrbrgrwrbwugwuwwgwuugwwwgurgrguwuwgrgruu
+wggrrrbgbgwurwrrwbrubbwbrwgrrwuugbrwwuwgruwwurw
+rrbwggggurwrbwrrwubbrrurwwgbbrwuuwrruuwbrwb
+ugwwwrbrbugbgrbuwbubwuggbwwugbgwrrwurrrwrrbgwrub
+gbwgguuguuuugwgbuubggwuwbgrrbrbgwwbgugguruwrwggwwrwgwgu
+wuubbbugwgrugububgrbgwugrurruwbwrbggwbgbbgurgrgbw
+gwugwbbrwbwgwrwbrgurbwuwuugrrrbwwrburubgwrwwbbg
+wwrgrrbubbuuwwbuwgrrwrrgggguwrrubbugrgwwbbug
+gwubbruruuuwbbgrugbbbgbgwurwgwgwbwbwugggugbwuburwb
+grgwgwrugugbgbwwbwubgwgbrgwguuwrrwwwugbgwgbgwruwwrwgwwrwb
+rwrggugrwbbwgbubuwuwrrrgguguwrggbwbbwrrwb
+rbgbwuwbwrbbwbbgugwgbbbwbrrrugwbrbubgruburwgwrrwb
+wrrgbbbbwwuwgrgrrrbgurugbuwuubrgbgrbbbrrwb
+ggrbwgwgrugrbrrwgugwguuwubuwwrugbbwwbbwuwggwuu
+rwuuwwbugruwrruubuwuruuwubrugwrrwgruwrwrubbruruuwwg
+rwrwuwbuwugbubgbbrguwgubuubbuwbwbgurubggbgubgwu
+ugrrrruuwruuguwggubguwwwgrwuuwrwugwruwgrrbbw
+ggwgwgurwrggrrwgwruuguwrugubrbuurwwruwbgrgrwb
+rwbrrwuwbbbgbrrbwburwbbgbggwbbggwggugggrrrwbugg
+ugbruwrruwgrbwuggrwwbruwwubrurrggbubgubugbgruugrrwb
+wwwuubbwubwrubgubwrugrurbugguurburrrrwgguwwuggugurguwurwr
+bwwbrruwbugbwguubbgggbrwbbrurgwbrwgggbgugbbgrbww
+brgbwwubgubguwugwwuruubggwwuuwgwgwggbbwwbubbbggu
+rbbrbbrurbuwwwguggguwgwggburbggubuwwbrbbubruuwwbgbru
+rwuuugbwgwuugurbwrrwwbugbggbuururrbgwbwuuurggrurbgwbgggrrwb
+bbgrgwwugwbwugggbugbgubgbgwbbuwrruurbwurwrgwurwb
+bgwgguuwggrbbugbgwwwrwurrrbugrgguugrbgwbgwgwggruwwggwwgrwb
+urrwggrubuwgbwggbbuwwbwbbwwrrgwrwbgurwurru
+uwwbugruuuwggrrrrrbrrrbrurgwrrwwrrwbwbruwbbbuggwuu
+wrururubbrugbggubggrbruuuubuubwuggggwwwubbwbbwbgbgbbgurwb
+ubrubrbrgugurbuwrwuuwgbgwwrrwrrbbgwgbwruwrrrggggr
+rbwguruwbgbgbbbbubbrrrugrruggurwwgrrrbrwb
+rurgwubwbwgubwrbgguugrruururgwgbuwwurgugww
+bwugrgruugguguwbgrbbbwuuwrrgwrrwrrubgrbrgbrggbww
+rrgwbrwggbbgrggugurwgrgbrgwgbwrruwgwggwgrwuwrwbburwwbu
+uurbwggwubwgwwguwbbgwwggugrrruggbgwbrrgwrr
+grwbwbwrgrwrrubbbgwgrbbwrbgrurwrguwwwwggrbwbrwubbwrggr
+gbuwbugrgubbrrbwwrbgwuwrwrbrbrwwbwbwrwuurrruurwb
+ubrwurrrwwrbgwwgguubuwwgwbguwggurwbbgrugwbbrubug
+rbugbwbguwggwwrwbbgwwuuruwwbrububbrurbubrgwwrbugugwbubggru
+uuguruubgwwrrrwwugwurbgwbubrgrurrgwuuuuuggwbgrwbugu
+gwwbugrrburuuwbwwbbugguubuuwwbuwbuwgubuwbruuugrgurgbuuubbw
+ugwwgubwubbrubbrugbbbrurwgrgubgubugururgwgwwburgr
+uggrgbruwrrbwrwgrruurwgguguwrwrwgbrggububgwrbguwbugwwguw
+gruruurbgwrggggbrrugrbrgubrurrgugbbgrbgrwwugbrubw
+ruggggwgbubuuubbgbburuwwgbbugrwubbrubgbrgbggrgubrb
+wrguwbuwbrrbbbwbwrbgrrubwggbuwrrrgugbbrwbrguugrbrwgbrgg
+rrgrwbgurgbbrgrbgugwrgrruruuugrgrrbbrrrwb
+uuggrwugruuggrurbwggwgrwbwrgrbbbgbwbubugwg
+rwwwrwrrbgrrgrgrwrgururgwrwburubwgrguwbuwwrrugugbbrwb
+bbgguuwwuwbbuuwgwgurrwrwgbbrgurwgbrrbwrwbrwrbuggbwwrwrbuw
+wrwwbgwgwruwrubbwrrwurwubgrrwrggbbgbbbgwwbgwggrbbwbrbbgbg
+wgggrbrbwuwgubrguubgrguwrwuuuwbwwubuuwgbgrgbruubb
+uggrwrwwbguwurbbburrgwgwururgwrgruwbwuubugubrurbuubrwrbuurwb
+wrugguwugrgbuuwrbugrubrggggwwrbuwuurbuwruwwuww
+wugwrwbbbrbbbrggrwbuwrwgwwbbrbwwgbruwugwruggggbw
+uguurbwgwbbuuguwrwguubuugwurbgwrrbgbrrguwuwug
+uwwuubgrrwgwrbbrgwwwbwugbbggbuuuurgubgwugrbgurbbwug
+gwuwgwrrwgrwbwggugrbrggubbuburbbbgugrbuwrurrwbrwgggr
+wwgrugrwuguwbruwugguurguwrugubwubrbgwwbrwbrwgbwrgwrruwurbr
+gwgburrgwuurwburubuuwwwwgbbwbggwwgwuugrgwrbwrrw
+rbgwgbbruuwwugugugrubbuugggwgubrguwwgrwgrrrgwbggbuguwu
+rwwrrbrggruuubgruburgwubrrguwbwwgrgbwggruggwg
+burgwuwugwbbbgrwgrubguuwugrbrbguubwwwrbbrwbrrugubuwwguuurw
+gburugwwrwrrugugbbubrwrburrugrubbrurbrwwgrbbww
+wuubbrbubbrbuubuwuwwgbuubugbrrgrugwrgwgwwwwwwwuurb
+wuwgrrgwbbgrurbrgrrurbbgwuggggbgwuurwggurrwb
+grbbggbgrugwbuubruwrgbwrbbwuugwrrugwrggbrurbwrrurbrwb
+uuubbgrbwrurbwbuggbbgrwuguuwubrwgbgrrwurubbrwgggwbggrwb
+urgwrgbbuwwrbrrrbbrwgwugwwrgrugwbgbbgrwb
+wgbrwggguwwruuwwggwwrwbbbugbruwugbbbuuuwwgurrrbwwbubbwgburwb
+buggbbgbgbbwwwurwrwrwbruwgwbbgrruwwgruubgwwwuggur
+rbgbwubgbbgrurwwguwubrwubbuuggrugurubwuwgrwgubgugwguugrgw
+urbbgurbubwwgbbwburrrbgrbwwubggwugbrrbugwrbgubrb
+wbrurrrbgrgbgbwwwrwurrwbuuwrwwgrburwrrbgruggubgrguwgbwur
+uuururbwrrwgwbwwrwwgwgruwurrbugwrgburgwrwrbrbw
+rrwrurbrgubuguwurwgururugbgrbgubrgrgggurggugurgrbbuwgw
+rrwuwrugwwbbubbrbrwrbwbwubgubgwwgrbugwgrugbgb
+grwgbggwwwgwrwgruggbbgwrgwubgwrwguwgrguuuuuwgbbubgguugg
+rbuurugruurwuwgburwgwgugrwgwwgwwgbrrugguwruw
+urubgguwggurwbgrwwbubguwggbbbgrugwgrbgbrwgwrrbrbbrguub
+wrbrurgwbubbwbbrwbbrugwgbubrwbgrgwguwuugbgugrgbg
+rwuruwurgugggrgrrrugrurgggrrubguurbububugugbwurwuwwug
+uubwuwrwwgrbbwgrrgubwgguggbrrwuruuwuubgrwuggbgruggbrr
+uurbbgrgbrgbbgrgrbwwugbrrubgubgurrbbrrrbubr
+guguggbgggwbbwrwrbwbgggrurburgurgbbwwgruru
+wbrrbbuurwruuuwugrgubwuuurbrwurwurbwwbwububwbbbrwb
+ubbrwgggwrwbwwwrbgbrrrbrubwrgurgbbgbuuuuugbwgwgrwuwwbuu
+bwrbggbgrbbgubbwrrrubgwburgrgrrruurwuuggbguwbwwurrwrwb
+gwuguuwbruwuuggrbrrbuwurbggbbwguwwgwwbgrurrwb
+rrggbbgurwbbbgurbgbggubgrruuwbrbwgbrguwubbggguwbgruwwrwb
+uwugbwwwrbbruubwbrgbuuubbgrubururrbrrgwwbgrwgbrwruwrwb
+bwurruruwuguwrbuuggbwbrubbrwuwurbgwwbrgurgwuggr
+ruuuwugrrurbwrgrbgurbrwbrbubbwwuuwwuwwuugugbbgrbggwr
+uugrgwgwwgrbrubbugbgbrguwbbwwgrubbbgbgbruwugrrwb
+brbgbwwwbbuuugrwrugbwurrgggbwwuubwruuburrbrr
+wrwrgwwrwrugrwrrurbuuwgurgbrgbrwwbwrggwbrbbuugrbbwugrwb
+rugbbggbuggwgwwuruwrwbggwgburuubuwugbggbrbgubrwgr
+ubrrwuwguwwrbgwbbbrrgrggrgrgwgbrugubuwwwwuwguuurwb
+ruguguwuruubbwwwgwgrrrwrwwuuuruuuwuwgwubwwrwu
+brggrwrbrwwwuwwbwrgwbwurbuwwrbrgrrugbwugrbguuwb
+gwuugwuuuggrgurbbwggrubbwuurruuwrggrggurgrrwrrgbrb
+ugwggbgbbrrwgwrbuggurrbuugbwrurbbuggubwbgwgwuwgwrrrwubuwurwb
+wwuugrrggrbrrgwuuugbwbwrurrbuwwwubwrbrggubbubbgrrr
+ggwuubgurubrurbwgrwwuggururbrgruwgruugugrbwgrbubrbrb
+rwggguwwubburgwwuurrurrrgwgbrgbbbrruguwbwugguuurr
+rrbwbrrwbuwwbwrrbbbwwubuwgurrguwugguwrbuwuubbwuwrbggbuu
+grgrbggrburrbgwbwbuugugbburbrwrrrguuwbugggugrrrgrwrwb
+buubrrggburbggwgwgrbgurwbwwwubbwbgbwwuwbwwrwb
+wguuurrggwguurburgugugbrwrgbwrrwbgrugwuugbwgbbuubggrugbub
+wbwgruuugggrrubbwrwwubugguguwwguubwurwgwwrbgubwrgbbubrwb
+ruwrggugbbbbgurwggruuggwwggrwwrwbbbrwguuuuug
+bggwwuwgwbuguwggrgurbwugbbbuurwgwuggubgrwbwwwbwgrrbuug
+rrgwugbuwugubuuggbrwwguurwuwugwuuuubgrwrrwrbgrgwbuggwr
+grguwrrurgbwbwrgwwwrggrwbwgbuwbbbwbggrbrwbbrwb
+uubgbrgrwbbgwrbrwwgbgburbuurbubbguuwbgbuuwburbubggguug
+gwbgwrbwwwubuwwrwbbwrrrgwuwbrubwbgggubugbwwgggburrbugrgu
+bwgwguugggbrrbuggwggwgbrbugurbwwuuwwwugbbubbrwb
+rwgwbgbwwuwrbgbgwbrwuwruuubbrbwwuruwbwrbrwrwrgru
+wwrbwwwurggbgggugwuggubbbwgrrwrbwwuugwrbubwgrbgrrr
+ubrubggrgguugburwgbbrwurbrburuuwwrrbrrwwbgwbgggwugurugwwrwb
+gbggrubrgubgubbwwwwuwrbburrgrwbrgrwbrwguuwwuwrgguwrwb
+bbwgbrwggwrbwugbgubugwwuwwggbgubwubgggwwrbgrwrwwgb
+uubrbgbbguugrruurbrwbbuuuubbwwuruuuwbbgwbgrbwrrrgb
+bbbwugurwrwurgbuuugrrruubrwrgwguwubrurgburbgrrwrr
+gggwwgwubwwwrrbubuuuggrgrgburugbgbuurbgrugrwrgwgruu
+burugbguwbuwgubugubbburrgrrwuruubbrbrwwbwrburubwubbb
+wrwbwrbggggbgbruwwwubuurwbgwgrrgrwubwrrbbggrgbwbwbbbuwbbrwb
+uuurggrbbwubuwbwbwrgrbbwgrgugbrruguuugrgrubb
+buuugbwbbgwrgruuwrbwbgwbbrgwbrgrwruwwwgwruggrb
+rgwrrguwuugbgrbubgbuburgrbuuwwgbbwgurrwwubrgwguw
+ruuwwurgwurgbuwurruurbbbbugrubrrgwrgurgubbgbbwgugrwb
+urrwrwgugrrbbrgggrgubwbrwwgbgururbwruguwwrgburg
+rugrggruuubgguuwwwbgbgbbgugrwgurrruubrgburgrrwb
+ubwwrugbguwrrrbwuwggrwrwrububurbgruwbgwrbbbgrrrgggwr
+wuggwbgwbbbwugrbbwwubgrbwrgrgrrgwuuwgrwgwwurug
+bgwwbbbwrrwugwgwwrruggrbwuwbwwgrwrgrrguwgrurwgurgggrrwb
+guwrwubwrwwwgugguuwwurbgugbuwrrbwrguuwgbwbbgbgurrgwbbu
+gwugguubwruguubuguguugbuuugrrwrrrurrbwgrbwgwugburuu
+brwgwrbbgwurgrugggrrbbwruugrgburrwggwguwuuwrrbw
+bwbugwurgbgurwwrugurgbbgbuurugggwugubrwb
+bbbuuubggggggwrbrgbbwruwuuwugurbubgwgrrguugbwuggrubrwbwgr
+wgrrrurugrbgwbgbbrrgurrgwrurrwwwbgrguuggrgurwww
+gubbrbwurgwwbbggurwgbgrwrwbrugrwrburgrrugb
+uubuubgguwwbrrwwwwubgwbbwbwwwwugguguwburgbrbbbg
+ubgrwugugrruwuurrwguggwuwbrwbwrugruuuwrugwwuwrubuugbrwrrrwb
+wrgwguugruurububuurwurrwuggrrubbrrrgugwuugwurgrg
+bwubggubrrburbrbwggrurwrbwbgbbgwggubggbubrububrwb
+urugwwbubbrrwwwrbrwuwbwurwgrurbwbrurbrwrgrruburwb
+rruubgwwwgrwrggubgubwrbbgwgbguruwwgrgburgwrg
+rgugrgrbbrgwbguwgguguwrrubgwwgwgwuwubwbwrggbwuuuwrrbwgwu
+gwuwbwuwwbwwggbbgrgwugwrgugruuubgwguwwgbbrwb
+bbwuguwwwuguuuuurrbbububurbwruuubugbgrbuwgrururwb
+bbbugrrrbrgburgwuuruwrbwgwrgwgrugbrgububrbwwgrbrgbuwbgguu
+bubwuuwwuwbggrwwubruwbubbwwgwrubuguwbuuwugwrbbugr
+uwrgubbrrgguggubuuwrrrwrrurbuubrgbbbwgrwub
+wbbguubbbbguwuwbwrgwwubwrurgwurbrrwurrbgrbbburw
+rgbwugbubggbrbwgbuuubrwgbrruwggbbggbbuggwg
+rgrugbgrwbwgwuwrbggrwuburrbguwguguuugwgubrgruwwbw
+uuuruwuurbwubrwgwuuwbugrrwggbwwubbugwgubbrwgwwwugbwwrwb
+brgbguwuwggbbwrbggggbrbubbwbrwbbgwuubbbbgwrgwgbbwu
+uggrgrubuuuwruuurbuwwugbwwgwwguubuggubwwugrrwbggwrgubrbwrw
+wbburbgbbrbbggrgrrurwwgurbubwuurwwgwbwrgbguuuwrubwwubuu
+buwbgbrwgbubbrbrgwuwbgbrwburgbbrwgguwwbwgbwbgbww
+gurwggwurgwbbubbgbgruggbrbubuwbruwwrwguggrbbbrggwgbrgbgu
+wbwwwbbbwgruuuwubbrrgbbggwbrgwwbgurbbwgwgwgrbggwrugrugggbrwb
+bbgrwgruggrwwurwwrggbruugbbrgwggrrugrwuuugbrrwb
+wwbugbwuguwgbrwrwgrrbuwgwuwgwrbbbubwwgbrguwuw
+ugwbgbwrrgbwrrrbrwwguggruwugwwurwrrbgwubbwrggugbruuw
+bbbruuwuwwurrwbuwbuguuggurgbgbruruwurgbgbgrrwb
+bggwgrggrrugwwbuwgbrbbgwbbuwwuwbrgbwbggwbbgggugwggrwbbur
+uuurruuuuugrbuwwgrbwwuuwbruggggbgrbuuggbuuuwgrrb
+gbgrgubggbgrgguuwbwbrwbggwurgbwwwbrubwgwrggrbwurggrwrrr
+ggbrbrbguwguuugubruggbgwbbuwwrbuuugbuuwgww
+wurrbururbgrbrgwggwggrgrgrgbgrrgbbwwgbrgwururwb
+uubugrgbrubuggrggrbwbbbruwbrrwugugrurwbgwwwbubgrggr
+rgwwbwgbwugugrwrrwubrwbgwuwuruggbguubbwbugururu
+wbuwrbggrrwbgbrbwwwbbgwbwrrggubrubbwbubrgwrwburbgb
+gbwuruuwuwwwbggurugrwgwubbgbwwwurgwbruwgbgrbwrgurwb
+gwururwwugrrubbruwbuwrbgwrbruugbuuugggwbubwubb
+wgrgrrgwwruugbrrrbwwrwrrgbguwwgwrbgwuuwbgwuwrugg
+ugurwrbgrbubwbbgrwgrwrbgwbwuwubgrbuwwrubrggwuguwbgbu
+ugrrburuwwrrwgrugbruwgwbbubrbuwbwwruuurgbuwwgwgbwwbuburwb
+wurugurbrbubbbbburuubrbrrbwubguwggwubbrbrbrgurrbwwwuggwg
+bwrburggbggbbgbuguwbgwwbbbubugwguwbbgbgwbg
+gbwrbgbgbrugbbguruuwgurwwruggggbuburbgwwrwb
+rubrgwubrrrrrwbwbrurbwwggrrburrugrrubwbbguwbbgrwwrbburrwbr
+wgbuurbrrbgrugwgubuwbgurrwwuwgrbrgrbgwrwwbrururuuwrrrwb
+grwuuggwugwgrbggggbwbgwububwrgwgburrugurbugurrrwrwrububrwb
+bbggugurwurrgggrrbbrurubbwbuwbbwwbrwgrrrubrgur
+gwwwugwuguubuuwgbgruruwguugrbbwgbbwwgrgrwwrrrrrbuwbbwburwb
diff --git a/day19/example.txt b/day19/example.txt new file mode 100644 index 0000000..50f9d21 --- /dev/null +++ b/day19/example.txt @@ -0,0 +1,10 @@ +r, wr, b, g, bwu, rb, gb, br
+
+brwrr
+bggr
+gbbr
+rrbgbr
+ubwu
+bwurrg
+brgr
+bbrgwb
diff --git a/day19/go.mod b/day19/go.mod new file mode 100644 index 0000000..565d400 --- /dev/null +++ b/day19/go.mod @@ -0,0 +1,3 @@ +module stevenlr.com/aoc2024/day19 + +go 1.23.3 diff --git a/day19/main.go b/day19/main.go new file mode 100644 index 0000000..96dac55 --- /dev/null +++ b/day19/main.go @@ -0,0 +1,105 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "strings" +) + +func main() { + patterns, targets := readData("example.txt") + fmt.Println(part1(patterns, targets), 6) + fmt.Println(part2(patterns, targets), 16) + + patterns, targets = readData("data.txt") + fmt.Println(part1(patterns, targets), 280) + fmt.Println(part2(patterns, targets)) +} + +func part1(patterns []string, targets []string) (okCount int) { + notFound := make(map[string]bool) + for _, target := range targets { + if doable(patterns, target, notFound) { + okCount++ + } + } + return +} + +func part2(patterns []string, targets []string) (okCount int) { + combis := make(map[string]int) + for _, target := range targets { + okCount += combinations(patterns, target, combis) + } + return +} + +func combinations(patterns []string, target string, combis map[string]int) (combiCount int) { + if combiCountCache, ok := combis[target]; ok { + return combiCountCache + } + + for _, p := range patterns { + if len(p) > len(target) { + continue + } + if target[:len(p)] != p { + continue + } + + if len(p) == len(target) { + if p == target { + combiCount++ + } + } else { + combiCount += combinations(patterns, target[len(p):], combis) + } + } + + combis[target] = combiCount + return +} + +func doable(patterns []string, target string, notFound map[string]bool) bool { + if len(target) == 0 { + return true + } + + if _, n := notFound[target]; n { + return false + } + + for _, p := range patterns { + if len(p) > len(target) { + continue + } + if target[:len(p)] != p { + continue + } + if doable(patterns, target[len(p):], notFound) { + return true + } + } + + notFound[target] = true + return false +} + +func readData(fileName string) (patterns []string, targets []string) { + fp, _ := os.Open(fileName) + scanner := bufio.NewScanner(fp) + + scanner.Scan() + patterns = strings.Split(scanner.Text(), ",") + for i, p := range patterns { + patterns[i] = strings.TrimSpace(p) + } + + scanner.Scan() + for scanner.Scan() { + targets = append(targets, strings.TrimSpace(scanner.Text())) + } + + return +} |