day19 working part1, not working part2.
I don't really understand what's expected of part2 and the example is not simple enough for me to step through in my brain so I'm probably not going to get it.
This commit is contained in:
parent
2448b9a538
commit
b0e1983d1f
562
input/2020/day19.txt
Normal file
562
input/2020/day19.txt
Normal file
@ -0,0 +1,562 @@
|
||||
72: "b"
|
||||
45: 46 52 | 9 72
|
||||
85: 9 52 | 9 72
|
||||
82: 52 87 | 72 77
|
||||
133: 52 30 | 72 56
|
||||
118: 7 52 | 70 72
|
||||
18: 52 113 | 72 52
|
||||
119: 72 46 | 52 18
|
||||
25: 19 72 | 103 52
|
||||
32: 90 52 | 78 72
|
||||
50: 113 113
|
||||
71: 72 106 | 52 128
|
||||
3: 103 72 | 18 52
|
||||
41: 86 72 | 19 52
|
||||
96: 86 72 | 108 52
|
||||
33: 44 52 | 104 72
|
||||
127: 52 36 | 72 50
|
||||
51: 72 79 | 52 38
|
||||
43: 72 50 | 52 106
|
||||
14: 32 72 | 129 52
|
||||
6: 2 72 | 33 52
|
||||
108: 52 72 | 72 52
|
||||
129: 6 52 | 82 72
|
||||
34: 127 72 | 3 52
|
||||
74: 128 52 | 9 72
|
||||
80: 52 103 | 72 19
|
||||
2: 134 72 | 13 52
|
||||
54: 128 72 | 114 52
|
||||
19: 72 72 | 113 52
|
||||
0: 8 11
|
||||
30: 132 72 | 39 52
|
||||
60: 72 64 | 52 5
|
||||
4: 18 52 | 114 72
|
||||
57: 72 71 | 52 54
|
||||
111: 52 27 | 72 102
|
||||
76: 122 52 | 75 72
|
||||
134: 86 52 | 9 72
|
||||
49: 17 52 | 81 72
|
||||
124: 103 72 | 86 52
|
||||
123: 72 28 | 52 121
|
||||
117: 18 52 | 86 72
|
||||
26: 51 72 | 58 52
|
||||
62: 85 52 | 44 72
|
||||
55: 126 52 | 92 72
|
||||
115: 72 13 | 52 67
|
||||
109: 128 72 | 106 52
|
||||
52: "a"
|
||||
93: 60 52 | 133 72
|
||||
64: 67 72 | 84 52
|
||||
102: 52 128 | 72 48
|
||||
84: 86 52 | 46 72
|
||||
77: 41 72 | 21 52
|
||||
27: 52 9 | 72 108
|
||||
95: 89 72 | 105 52
|
||||
36: 52 72
|
||||
110: 72 50 | 52 9
|
||||
9: 72 72
|
||||
120: 72 19 | 52 18
|
||||
67: 52 48
|
||||
112: 65 72 | 119 52
|
||||
75: 62 52 | 123 72
|
||||
23: 15 72 | 119 52
|
||||
42: 131 52 | 61 72
|
||||
94: 52 91 | 72 18
|
||||
66: 52 128 | 72 103
|
||||
10: 113 108
|
||||
37: 52 18 | 72 50
|
||||
98: 72 69 | 52 94
|
||||
126: 115 52 | 29 72
|
||||
79: 59 52 | 94 72
|
||||
104: 19 72 | 36 52
|
||||
125: 96 72 | 4 52
|
||||
122: 52 73 | 72 112
|
||||
130: 52 20 | 72 45
|
||||
90: 72 40 | 52 88
|
||||
132: 103 52
|
||||
121: 91 52 | 46 72
|
||||
7: 52 114 | 72 128
|
||||
5: 52 66 | 72 41
|
||||
97: 52 18 | 72 91
|
||||
89: 72 109 | 52 116
|
||||
53: 52 108 | 72 128
|
||||
114: 52 113 | 72 72
|
||||
16: 1 52 | 110 72
|
||||
113: 72 | 52
|
||||
31: 52 14 | 72 12
|
||||
69: 52 103 | 72 48
|
||||
128: 72 52
|
||||
40: 72 3 | 52 83
|
||||
101: 63 52 | 127 72
|
||||
1: 72 91 | 52 114
|
||||
58: 52 111 | 72 99
|
||||
13: 19 72 | 9 52
|
||||
35: 22 72 | 125 52
|
||||
65: 72 114 | 52 91
|
||||
12: 52 24 | 72 93
|
||||
46: 72 72 | 52 52
|
||||
20: 9 72
|
||||
73: 72 37 | 52 43
|
||||
15: 52 50 | 72 108
|
||||
103: 52 52
|
||||
106: 72 52 | 72 72
|
||||
21: 36 72
|
||||
28: 72 50 | 52 46
|
||||
78: 72 16 | 52 23
|
||||
70: 36 72 | 19 52
|
||||
87: 72 107 | 52 47
|
||||
116: 19 52 | 106 72
|
||||
29: 72 68 | 52 65
|
||||
8: 42
|
||||
68: 9 52 | 128 72
|
||||
99: 110 72 | 25 52
|
||||
17: 52 118 | 72 130
|
||||
11: 42 31
|
||||
48: 52 52 | 72 52
|
||||
83: 48 113
|
||||
105: 52 100 | 72 80
|
||||
61: 55 52 | 26 72
|
||||
100: 48 52 | 108 72
|
||||
56: 52 53 | 72 74
|
||||
63: 52 106 | 72 9
|
||||
44: 72 114 | 52 128
|
||||
47: 52 50 | 72 36
|
||||
107: 52 36 | 72 91
|
||||
39: 114 72 | 86 52
|
||||
86: 52 72 | 52 52
|
||||
24: 52 95 | 72 35
|
||||
81: 98 72 | 34 52
|
||||
131: 49 52 | 76 72
|
||||
92: 52 101 | 72 57
|
||||
59: 52 114 | 72 50
|
||||
38: 52 74 | 72 124
|
||||
88: 97 72 | 10 52
|
||||
22: 117 72 | 120 52
|
||||
91: 72 72 | 52 72
|
||||
|
||||
bbabbaabaabaaaababbbbabaabbaabab
|
||||
baaabaaabaaababbabababaabababaaa
|
||||
aaabbbabaabbbbbbbbabaaba
|
||||
aaababbbaaabaabbabbbbabbaaaabbbb
|
||||
ababaabbaabbbaabbbabbababbabbbbbbaaabbbbaaaabbbabbbaaabbaaaabbaa
|
||||
bbbbaabaababaaabbbaaaaabbbbabbabaaabaabaabbaaaba
|
||||
bbaababbbbbbaabbbbbaaaabbbbbabaaaabbbabaabbbaaaa
|
||||
aaaaaaaaaababaaaabaaababaabbbbaababaaaaaaaaabaaabbaabbbaaabaabababbbbaaabbbbbabb
|
||||
bbbbabbbbbbbbbbababbabbabbbabbbaaabbbbbaabbbbbaa
|
||||
bbabaaababbbaabababbabbbabaabbbbbaaabbaaaaabbbaaaaabaabbaabbabba
|
||||
babbbabaaabbaaaabaaaaabbbabaaaaa
|
||||
ababaabbaaabbabbbbbbbaaaaabaabaabaaaababbaaaaaaa
|
||||
baaaababaaaaaaababaaabba
|
||||
bbaabbbaaabababbbaaaaabbbbbbbaaaaabbaabaabaaabaabbbaabaaaaaababbababbbbb
|
||||
bbababbbaaabbabababbbabaaabbaababbbaaabaaabbbabbabababab
|
||||
babbabbabbbaabbbbaabaaabbabababbbbbbbbaa
|
||||
abbaaaaaabbabbaabbabbabababbaabaabbbaaaa
|
||||
ababaabbabbbbbabbabbbaaaabbbaabbabbbbabb
|
||||
aaabbbbaabbbababaabaaaaa
|
||||
babbbaaaabaaabaaabbabbabbabaabab
|
||||
aaabbaabaabbabaaaaaaaabb
|
||||
ababbbabaabbaabbabaababababbbbaa
|
||||
babbabaaabbbababbbababaaaaaabbaaababaaab
|
||||
bbaababbbabaaababbaaabab
|
||||
aabababbbbaabbbbabaabaababababaaabababab
|
||||
baaaaabbbbbaabbbbbababbbbbbabbab
|
||||
baaaabaaabaabaaabbabaaaababaaaab
|
||||
aabbbabababaaabababbaaaa
|
||||
ababbbaaabababbaaabaaababbaaaabaabbbbbab
|
||||
ababbbaaaabaaaababababba
|
||||
aaabbbabaabbaababbbbabbbbbabbabaababbabb
|
||||
aabbabaaaabbaababbabbabbaaabaabababaaabaaaaaabab
|
||||
abaaabbbabbaaababaaababa
|
||||
bbaaabbbbababbababaababb
|
||||
aaabbabababaaabaabbabaab
|
||||
bbabbaaaabbbaabbaaabbbbbbbbabaabbbbbabbbbabbaabaabbaababaaabaabb
|
||||
babbabbabbbbababaaaaabaababbbabbaabaabbbabaaaabb
|
||||
bbabbaababababbabaaababb
|
||||
babaaabaaabababbaabababbabbababaabbaaabbbababaaaababbbbbaaaabbbbabbbbaaa
|
||||
aaabaabaaabbbaabbbabbbbbbbababba
|
||||
aabaababbbaaaababbabaaaa
|
||||
aaaabaaabbabababbabbbaab
|
||||
baaabaabbaaaababbbaabaaaaabbabaaabaaabaabbbbbabbbabaabababaabbaaabbaaababbabbbbb
|
||||
aabaabbbababbbababaababaabbbaaaa
|
||||
aabaabbaaaabaabaabaaaaaabababbaababaaabbabbbbabbbaaaaaaabababbabbbbbabaa
|
||||
baaabbbaaaaaabbbbbaaaaabbabbaabaaaaabbba
|
||||
baaabaaaabbbbaaaaabbaababbabbababaaaabbbbabbaaabaabbbaabbaaaabbb
|
||||
baaabbbabaabbabaabbabaaabaaabbbaabbaaabbabaaabab
|
||||
abbaaabbaaabbabbabaaabba
|
||||
aaaaaaabbabbbabababbbaaaababaabbabbaaabaabbaabab
|
||||
aabababaaabbaabbbbaabbbababbaaaa
|
||||
aabbbabaaabaabbbbbbabaabababbbbb
|
||||
bbbababbbabbbbbbbabaaabaaaabbabaaabbbbabbabababaaabaaaaa
|
||||
abaabbaabbbabaabbabaaabbaaabbaaaaabbaaabbaaabbbbbabbaabb
|
||||
abbbbbabaabaabababababbaaabababbaabbbababbaabaaa
|
||||
aaabbaabaabaaaabbbbabbbbbabaababaaaaabab
|
||||
aabbbaabbbbbababaabbbbbbaababbbb
|
||||
bbababbbaabaaaabbaaaaabbbaababaabbaabaab
|
||||
aabaababaabbbbbbbabbbbab
|
||||
aaaaabaababbbabbabbbaabbbbabbaaa
|
||||
baaaabababbbabbbbaaababbbbbababaaaaaaabb
|
||||
baaaabaabaaabbaaabbbbbbaabaabbaabbbbbbabbbbbbbbbbabaabababbbbabbaababbbb
|
||||
bababbabaaabaaaaaaababbbbbabbbaabaaabbbb
|
||||
bbbbbbbabbabaaabaaaaaaabaabaaabaaaaaaaaababbaaabbaabbaaababaaabbabaaaaaa
|
||||
abbaaababbbabaabbaaabbab
|
||||
aabaabbbabaaaababaaabbbabaaaabbbbabbbababbbbabaaaaaababbaaabaabbbbbaabababbaabbb
|
||||
abaaabaabbabaabbaabbaabaababaaaa
|
||||
babbabaabaaaaababaaaabba
|
||||
bbabbbbaaabbbabaaaaabbbb
|
||||
abbabababbabbbbbaaabaaabaaaaabbaabbabbababbaabbaaabbbabbabbaabbbaabbabaaabaabbab
|
||||
baabaaabbbbbaabbbaaababa
|
||||
bbaaabbabbbbabbabbaabbaabaaaaabbabaabbba
|
||||
babbbabaaabbbaaababababb
|
||||
abaabbbbbbbbbababaaabbbabbababaaabaaaabababaaaab
|
||||
bbbbbabbbabbbbbababbabaaabbbaabbbbabbbbbabbabababababaabaaabaaabbaaabaaaaaabbaaa
|
||||
bababababbbbbbaaaabbbbaabbaaabaababbbbaaabbabbab
|
||||
ababbaabababaababbbbbabbbbabbababaaabbbabaaaabbbaaaaaaba
|
||||
abaabababbbbabbbbabbaaab
|
||||
bbaaaaaaabbababaabbbababbabbbabbbaabaaaabbabbaba
|
||||
abbbaabbabbabaabbbbbbbaabaaaaabbbbaaaabbbbbbabba
|
||||
aabbbbbbaaabbaabaababbbababbabaaaaabbaaa
|
||||
abaabbaaaabababbabbabbabbbaaaaab
|
||||
babbbababbbbbbbababaaaaa
|
||||
baabbbbbaabbbaabbabbababbbbbbbbb
|
||||
bbaaabbbbbbabaabaaaaabaa
|
||||
bbababaaabbabbabbabbbaaabbabbbab
|
||||
bbbbabbababbababaababbaa
|
||||
bbababaabbabaabaabbaabab
|
||||
aabbbaabbbbaababbabababa
|
||||
ababaaababbbbaaaabbbbaaaaaababbb
|
||||
baaaababbbaabaaabbabbbabaababbabbaaaaaaabbaaaaaa
|
||||
abbbababbaababbbbbaabbbbababbbaabaaababaabaababbbabbbbab
|
||||
bbabaaabbaabbaaabbbaaabaaaaabbabbaaaabaaabbbbabbbaabbbbbabbabaababaaaaab
|
||||
bbbbabbabbbbbbaaaaaabbbbabaabababbabbbbbbabaabbaaabbbbbbbbbbaaaa
|
||||
baababaaaaabbbaaabaabbba
|
||||
bbbbababbbabbaabbbabaaababbaaaababababaa
|
||||
aaaaaaaaaaaaaababaaababbabbbabaa
|
||||
aaabbabababbbaaabaabbbbbababbbbaaabbbabb
|
||||
aabaaaabbbbbaaaaababbaabaaabbbbabbaaaaaabbababbbaababaaabaabbaabbabaaaaa
|
||||
aaaabaaabbaabbaaaabbabba
|
||||
bbbbaaabbaababaaababbabb
|
||||
abbbbababbbbabbbbbbbababbaabbbbbaaabaabaabababbabaaabaaa
|
||||
baabbabaabbbaababbabbaba
|
||||
bbbbaabbbabbabaaaabaaaaababbaababaaabaabbbaaabaaaaababab
|
||||
abbbbbbababbabbbbaababababbabbabababbbbb
|
||||
aaabbbabbbbaaaaaabbbabaababababb
|
||||
aabbaaabaaabaaabbbaaabaaaabbaaaaaaabababbbaabaab
|
||||
babaababbaabaaaababaaaaa
|
||||
aaabbbaaaabaabbbaaabbbbb
|
||||
abaabaabbaabbabaaaabbbbaaabbbbabaabbbabb
|
||||
baaababbabaaababaaababbababbbbba
|
||||
aabbaaaabbabaabbbabaaabaaaaaaaabbbbaaaaa
|
||||
bbbabbbbaabbbbaabbbaaaabbbbaaabb
|
||||
abaaabababbabababbaabbbabaaabaaaaaaaaaabaabbbaaaaabbbbbbabbabbaaabaaaaaa
|
||||
bbbbbbbabbabbaabbabbbaaabaabbaaa
|
||||
bababbabbaabaabbaaabbbbabaabbbbaaabaaabb
|
||||
bbbbbababaaaaabbabbbbbbabaaaabab
|
||||
babbabaabbbbaaabaaabbbbaababaabbaabbaabb
|
||||
ababaabbbbbaaababaabbaaaabbabbbbaaabbaaa
|
||||
ababbaabbbbbbaaaaaabbbbb
|
||||
babbabaababbabbabaabbbab
|
||||
bbaabbaabbbbaabbabbbbbbaabbbaabaaaababbbbaaabbbbbaabbaaa
|
||||
aabaabbbbabbbbbbabbabbaaabaabababbbbbabbbbaabaaa
|
||||
abbbbbbaaabbbbaaabbabbbb
|
||||
aaaaaaaaababbbabaaabbaabababbbba
|
||||
baaabbaabaaaabaaabaabaaabbaabbbbaaaaaaababaababb
|
||||
ababbbaababbbbabbabaaaaabababbba
|
||||
aaaaabaaaaabbbababaaabbbabbbabba
|
||||
bbbabbbaaaaaaaaaaaabbbbb
|
||||
abbbbbbabbabbabbabababaa
|
||||
baaaaabaaaaabaaabbaabbba
|
||||
baaaabbbaababbbaaaaaaabb
|
||||
bbbabaabbabbabbbabaabbbbaabbaababaaabaaababaabbb
|
||||
bbbabbaabbbaabbbbbbabbbabbababababbabbbb
|
||||
baabaabbbbbaabbaaaababab
|
||||
bbabbaabbababbabbbabaabbbabbbbbaaaabbabaabbbbbbbababbaba
|
||||
babbabbaabbaaabbbbabbbbabaaaaaaabbbaaaaa
|
||||
abaabbaabbbabbbaabbabaaaaababaaaaaaaabbb
|
||||
aababbabbbabbaabbabaaabbabbabaabbbbaaababbabbaaabbaaaababbbaaabbbaabaabaabababaa
|
||||
abbabababbaaabbbbaababbaabaabbbbbbbbbbaa
|
||||
bbbabbbabbabbbbabaaabaaababaaababbbaababbbbabababbabbbabaaabaaaaaabaabbb
|
||||
baaaaaababbabaabbbabaabaabbbbbabaaababab
|
||||
baabaabababbbbbabbbbaabaaaaabbbb
|
||||
baabbabaababbbabbabbbbab
|
||||
bbbbaabbbbbaaaabbbbbaaaa
|
||||
bbbbaababaabaaababbbbbaa
|
||||
bbbbbabbaaabaababbbaaaababaaabba
|
||||
ababbbabbbbaaaababaaaabbbbaabbbaaaaaababababbbbababbbbbaababbbabaaaaaaababaabbababbbaaaa
|
||||
aabaababbbbbababbaabbbab
|
||||
baaaaababbbababbababaaab
|
||||
baabaabbaaabbaaaabaabbbabbabbbbababbbbab
|
||||
abbbbbbababbbabaaabababbbbaabbbabbbbababaabaaabb
|
||||
bbabbabbabbabababaaaabba
|
||||
abbabbbabbbbbababaaabaaa
|
||||
bbbbbaabbabbbbaaabaaaaaabbbabbabaabbbabbabbabaaaabaababbbbbaaabb
|
||||
baaabbbaaabaabaababaabab
|
||||
baabaababaaaaabaabaabbaababbbbbabaaabbababbaabab
|
||||
bbabbbbabaaaabaaaabababbabbabaab
|
||||
babbaababaaaaaabbbaabaab
|
||||
abaabbabaaabbbabaaaaabbbbbabababbbbaabbabbbabbbbabaaaaab
|
||||
ababbbabaababababaabaaaa
|
||||
abaaabaaababbbabbaababaabaabbaab
|
||||
aaabbbbabbbaabbabbabaabbbaabbbaa
|
||||
aaabbbaaaabaabaaabbbbbbb
|
||||
abbbbabbababaabbbbaababbaabaabbbabbbbabbababbbab
|
||||
baabaabbbbaaaababbabaabbbbabbaaaabbbaaaaaaababaaaabaabbbbbaaaaabbbbaaaaaaaaabbababbabbba
|
||||
abbaababbbaaaaabbaabbaaa
|
||||
babbbbabbbaababaaaaaaaaaabbbbaabbbababbbabbaaaaabababbaabaabbaaaaabaabbbaaaaaaaaababbbbbabbaabaa
|
||||
abbbabababbabaaaababaaaaababbbbaabaabbbababbaabb
|
||||
abbaaabaaabbabaaababbaab
|
||||
bbaabbbabaabbbbbabbabbbaaabbaaaabbaaabbbabbaabbababbbbababbaabab
|
||||
abaaabbbbbabaababbabaaaa
|
||||
bbababbbbbbababbaaaaaaabbabaaabb
|
||||
bbbaabbbaabbbbaaabbabbaabaabaabbbababaaa
|
||||
babbbaaaaabaabbbabbbbbaa
|
||||
abaabbaabaabbbbbabbbaabbaaabbaaa
|
||||
abbbaabaababbbabaaaaaaaabbbabbbabbbaabab
|
||||
aaaabbaabbabbaabbbaababaabbabbbbabaaabbaabbbbbbbaababbbbbbaabbabaabbbaaabbaabbba
|
||||
abababbabbabbabbbbabbbab
|
||||
bbbababbaaaabaaabaabbbba
|
||||
bbbbaababbbbbbabbbbbabbaababaabaaababaab
|
||||
bbaaaaaaaabbbaaabaaabaab
|
||||
babbbbbbbbbbbaaabbaaabbaaabbabbaaaabbaaa
|
||||
abaabbabaaabaababbbaaabb
|
||||
abaababaaaaaaabbbababaabaaaababaabbabaabababbbba
|
||||
aaabbabaabaababaababbbba
|
||||
bbaaaaaababaaababababaaa
|
||||
abbabaaabaabaaabbabbaaba
|
||||
abbabababbabaabbabbabababbbaaaaa
|
||||
aabaaabaababbbaaababaaab
|
||||
bbabbbbaabaaabbbabbaaaab
|
||||
bbbbababbbbaaababbbaaaba
|
||||
bbbbbbababbbbbbaaaaaabab
|
||||
bbababbbabaaabaabaabbaaaabbbabbabbbbbbaaabbabbbb
|
||||
baababbbaaabbbaaaabaabbbaabaaabb
|
||||
abaabbabbaaaabababbaabbb
|
||||
bbbabaababbbbbbabaabaaabbabbbbbbbbbaabaabbabbbaaabbababb
|
||||
babbabbbbbbbbabbbaaaababbbbbbbbababababa
|
||||
baabababaabbaabbaabbabba
|
||||
baabaababaaaaabbbabaabbbababbbaaabbaaaba
|
||||
bbbbabbbbaabbbababbbaabaabaabaaaaaaaabaaabbaaaaa
|
||||
bbabababbaabbabaabbabbaabaababaabaaaabba
|
||||
abbbbbbaaaaabbaabbbbbaabaabbabbbaabababaaaababbbbabbbbbabaaabbab
|
||||
bbbbaaabaaaabaaaaabbbaab
|
||||
aabbaabbaaaaaaaaabbbbababaabababbabbabbbbbbbababaaabaabb
|
||||
bbabababbabbabbbbaaaabaaaabbaababbbaaaaaabbbaaaa
|
||||
bbabbabbaaabababbabbbbababaabbabbbbabbbababbaaab
|
||||
abaaaaaabbbaabaaaabbbbabbababaab
|
||||
aabababbbabbabbabbaabaaa
|
||||
ababbbaaaaabbabaaaabbabbaaaaaabb
|
||||
baaaababbbaaaababbbbbabbbbbaaabaabbabaaabbbbbabaaaaaaaababbbababaabbbbbbaabbbbaa
|
||||
baabbbbbbbbbaabaabbababb
|
||||
bababbababaabbbbababaaab
|
||||
baababbbbabbaabbabbabbaabababbabaaaabbbaabaabaaa
|
||||
aabaabababaaaabaabababbbbaaabaaaabaaabab
|
||||
abbaaaaababbabbabaaaabbbbaaaabba
|
||||
babbbaaabaaaaabbbabbbbab
|
||||
ababbbabbaabbabaabbbabba
|
||||
abaabbabaaaabaabbaaabbbbbbbabbaaaaabaabb
|
||||
bbbaabbaaabbbaabbaabaabaababbaab
|
||||
ababbbaabbbbbbbabaababaaabbabbabaababaaabbbaaababaabbaab
|
||||
bbbbbbbabbaaaaaaaaabbbababbbbbbb
|
||||
aabaaababbabbabaaaaabaaabbabbaabaabbbbbbababaaaa
|
||||
baabaaabaaabbbabbababbabababbaba
|
||||
abbbabbbababbabbbbbbaaaababbabbbaaaaaaaaabbaabbabbaaaaabbbabaaaabababbbaaabbabbb
|
||||
baabaaabbabbababbbbaabbaaaabbaabbbbbabbbabbbaaabbbbabaaa
|
||||
abaaabbbabaabaaaabbbbbabaaabbbbabababbbbbabbbbabaabaaaaa
|
||||
aaaaaaaaabaaaababbbaaabababababa
|
||||
bbbbaabbbababaaaaaaaaaab
|
||||
aaabaaaabaaaababbabbbbbbaaaabbababbbabaa
|
||||
babaaababbbbbbbaabbbbabb
|
||||
baaabbaaaabbbbaabbbababa
|
||||
baababbbaababbbabbbaabbbbbbbabaaaabbaaab
|
||||
baaaabaabaabaabbbababbababbbaabbaaabbaabbaaaabba
|
||||
baabaababbbaabbbabbabababaaaaaaa
|
||||
bbbababbaabbababaaaaabbb
|
||||
bbbabaaaaaaaaaaabbbaabbbbabaabbaabaaabbbabbaabbbbabbbbab
|
||||
aaaaaaabbaababaaaaabaaaababbbaab
|
||||
abababbaababbbabaabbbbaaaaaabaaaabbaaaba
|
||||
baababbaaabaabbbbbbaabbabbbbaabbaabbabaabbabbbabaabbabba
|
||||
abaaabbbbabbbaaabbbbaabaabaabababbaaabbbaabbbbabbababbbabaabbaaabaaabaaa
|
||||
aabaaabaababbaabbbbbbbabbaaaaabbaaaabbba
|
||||
aabbabaaabbbbabababbbbbbbaaabbbabaabbaaababbbbabbbbabaaa
|
||||
abaabbbbbbbbabbbabbaaaaabbaaaaaaabbabbbbabababaa
|
||||
ababaabbbbbbabaaabbaabba
|
||||
bbbbababaababaaaaaaabbaabaabaaaa
|
||||
abbbababbbbbaaababaaaabb
|
||||
aabbbbbbaababbbaababbbabbaabbabaabaababaaaabaaab
|
||||
aabaababaaabbbaabbaababababbbaaaabababaa
|
||||
abaabaabbabbbababbaaaabaabaaabaabaabaabbabbababbaaabaaababaaabba
|
||||
baaaaabbbbbaaaabbbbbbabb
|
||||
abbbababbbbbbbbaabbaaaaababbbabbabababbaabaababb
|
||||
aabbaababbabbaabbbbbaabaaaabbabbababbaba
|
||||
ababbbaababbbbbabbbabaaa
|
||||
abaaabbbabababbaabaaabbb
|
||||
abababbabbabbababbbaabbaababbbaaaabbaaab
|
||||
abbbbabbbaabaabbbaaaabbbbaaabbbbbbbabbbaababbababbbabbab
|
||||
bbbbbaabbbaababbabbbaaaababbbabaaaababaaabaabbaa
|
||||
ababbbaababababaaabaabbbabaaabbbbaabababbabbbbbaababbaaa
|
||||
baababaabbbabbbbaaabaabb
|
||||
babaabbbbbaabbbbbbabbabaabbbaaaaabbaabbabbbbaabaabbabbbbbbabbbaa
|
||||
baabbabaaabbbababbaaaaba
|
||||
abbbbbabbaaabbbabbaabbaaaabbbbaaaabbabbabaabbbba
|
||||
aaaaaaabbaaabbbaaaaabbab
|
||||
baabbbbbbaaabbbbaabbabaaaababbabbbaababaaabbbbbaabaaaaaabaabaabababbbaaa
|
||||
aabbaaaaabbabaaaabbbbbaa
|
||||
bbbabaabbbaaaaaaaabbbabaababaaab
|
||||
babbabaaaaabbbababaaaaaa
|
||||
baabbabaabaaabbbaabaaaaa
|
||||
aabbaababbababbbbababaabaabbbbba
|
||||
abbbbabaaabaaababbbbbaaaaaabaaab
|
||||
bbbabaabbbbbabbaaababaaa
|
||||
bbbbbabaabbaaabaaaabbbaaabbbbbbabaabbbaaabbbbbbbbaabbaaa
|
||||
bbbbaaaabaabaabbbbabbabbbbbbbabaaaaabaaabbabbbbbbaabbbabaaabaabb
|
||||
bbbbbaaabbbbabaabbabbbbbbaabaaabbabbbbbaabbbabbaabbbbbaa
|
||||
aaabbbabbabbabbbbabaaaaaabbbbbaaaaababaaaaaaabbaabbabababababaaabbbababaabbaaaabbaaabaaababbaabb
|
||||
abbaaaaaabbababaaababababaaaaabbaaabbaaa
|
||||
aaaabaaaaabbabaaaaaabbaa
|
||||
bbbbbbbabaababbbbbbbaaaabbbbbaab
|
||||
ababaaaababbabbabbbababaabbaaabbabbbbbbbaabbababbbabbaba
|
||||
bbbbbbbaaaaaababbaabbaaaaaababbbabaaabab
|
||||
baabbbaaaaabbbbabbababbaaaaababaabbababaaaabbbbbbbbaaaababbbbbaababaaabb
|
||||
bbbabbbaaabbbaabaaababbaaaabbaaa
|
||||
baabaababbbbbaaabbbbabaaaabbabbaaaabaabb
|
||||
abbbaabbabbabbabbbbaabbbbbabbbab
|
||||
babbabaaabbabbbabaababaabbabaaba
|
||||
baababbbbaaaabaaabbbaabbbbbaaaaa
|
||||
bbaababbaaabbbbabbbabaaa
|
||||
babababaaabbababbbbbabbbbbbababbabbbabbaaabbabbbabbaaaabbabbbabbaabbaaba
|
||||
bbbbaaaabaaaaaaabbaaabaabaaaababaabaababbbbabababbabbbbaabbaaaabbbbaaababbbabbababaababb
|
||||
babaaabbaabaaabbbabbbaabaaaabbbaaaaaabababababbabbababba
|
||||
aaaabaaabbabaaabaabbbaaabbbbabaa
|
||||
abbababaabaabbaabbbababbbbabbbbbaabbaaaaaaaabbabaaababbbbbabbbaa
|
||||
aababbbababbabaabbbbabbaaabaaababbbbabababaaabaaaababaaaaabbaaab
|
||||
ababbbaaaababbbaabbbbabaabaaabaabbbaabbaabbbbbaabbbaaaaabaabbabb
|
||||
bbbabbaabaabababaabbababaababaaa
|
||||
aaaaaaabbbbbbbabbabaabaa
|
||||
abaabaaaaabbaaaabbbbaabaaabaabaabbbaabaa
|
||||
aabbabaabaaabbaaaaaabbbb
|
||||
abbabbaabaabababaabbbaabbbbbaababbbbabbbabbbaaab
|
||||
abbaaabbabaaaabaaaaaabaaaababbbbbaabaaabaaabaabbbbabbabbbbbaaabababbabbabbbbbaaa
|
||||
abaaabbbbabaaaaaabbaaababaaaaabaababbaababaabaaaabaaaaabbbaaaaab
|
||||
aababababbbbbbbaabaabbabbbbbbaaaabbbaaaa
|
||||
aabbaabaaabbaaaaaabaababaabbbbab
|
||||
aabaaababbaaaaaabbababababaaaaabbababaab
|
||||
baababaababbabbbabbaabaababbaabbaabaabbabbbbbaab
|
||||
abaaabaaaaabbbaaabbababababbbabaaababaaa
|
||||
aabaaababbbbbabbbaabbabb
|
||||
aaabbabbaaabbbaabbbbbbababbababb
|
||||
aabaaaabaabbbbaaaaaabaaabbaabbbaabbbbbbb
|
||||
bbbbabaaaabbababbbabaaabbabaabba
|
||||
baabaabaaabababababbabbbbbababaaaaababab
|
||||
aabbbaaaaabbbbaaababbaaaababbbbaababaaaabbbabaab
|
||||
abbaaabbbaabbbbabababbbabaabbbbaaabbabaabbaaaaba
|
||||
aaaaaaabbbabaabbaabbbabaabbababaabbbbbbaabbbbaaaabababaaaaaabbbbaabbabba
|
||||
abbbbabaabaabaabbbabbbbaabbbbabaabababbbbbaabbabbaabaaaa
|
||||
abaabababbbbbabbbabaaaab
|
||||
bababbabbbbabaaabbaaaabb
|
||||
abbabaaabbbababbbbbaabbaaabbbbaababbaaba
|
||||
bbbbaabaaabbbbbbabaabaaaaabaababbabbabbbabaaabab
|
||||
babbabbbbbbabbaabbbabaabbbbbbbbb
|
||||
babaabaaababbbbaabaabbbaababaaabbbabbbaaaaaaaaaabaababbbbaabbaaa
|
||||
bbbbaabaabbabbaaabaabaaababababa
|
||||
abbaababbbbabbabaabbbbbaababaaabaaabbbaaabaababbbbbaabaa
|
||||
aabbaaaabbbbababaaaabbab
|
||||
aabaababbabbbabaaabababaabaaabbaabaaaabb
|
||||
bbabbabbbbaabbbbabaabaaaaaaaaaababaaabba
|
||||
aaababbaabababaabababaaababaabaaabaaaabb
|
||||
baaabbbabbaaaaabbaabbbab
|
||||
bababaabbabbbababaaaababbabbaabbbbbaababbabbabbb
|
||||
bbababaaabbbaabbaaabbbabaaabbbaabbbaaaaa
|
||||
aabbbbaaabbbbbabaabaaababbaabbaaaabbbbbaabaaababbbbaabab
|
||||
aaaaaaabaaaababbabababbaaababaabaabaaaaaabbaaaaaabaabbbaaaaabaaa
|
||||
abaabbbbbbbabbaaaababbab
|
||||
bbaaaaaaababaabbbaabaaabaababaaa
|
||||
aabbbababaabababbabbbaab
|
||||
abaabbbbbbaaaaaabbbbbbbabbbbabbbbabbaabb
|
||||
aabbbbaabbababaabababbba
|
||||
bababbabaaaabaaabaababaaaaaaaabb
|
||||
bbbbaababbbabbaabbaabbaaabbbaabbbbabbaabaaaaaabb
|
||||
bbbbabbabbbbaabaaaabaaaabaaaaabbaaabbbbaabaabbbaaabaaaaaabbaabbb
|
||||
abbabaaabbaababbaabaaabbbbabbaabbbaabbbb
|
||||
bbaaabbabbbbbababababaababaaaaaababaaaaaaabbbbab
|
||||
aababbbaabbbbabaabbabaab
|
||||
bbbaabbbaaaaabaabbaaaaab
|
||||
bbabbabbbbaaabbbbbaaaaaababaabbaababbabbabaabbbabbaaaabb
|
||||
aaabbabaaabaabbbbbaababbbaaaaaababbabaab
|
||||
abbabbabbbaabbaabbaaabaa
|
||||
abaabbabaaaabaaaaaaaabab
|
||||
abbbbaabaabbabbbaabaaabbbaaaaaaa
|
||||
abbabbaaaababbbabbabbababbaababaabbabaabbbbaaabb
|
||||
aabaaaaabbbababbbaaababbabbbbababababaaabbabbbba
|
||||
aaabbabababbbababbbaabbbbaabbbbaaababaaa
|
||||
aabababbaaabaaaabbababaaaaaababb
|
||||
abbaaaaaabababbaabaabaababbaaababaababbbaaaababbbabbaaabaabbabbaabbaabba
|
||||
bbaaaabaaaabbaabbbaaaabaababbbbb
|
||||
ababbbabbaababbbabaabaababbbababbbaabbaaabaababbabaaaaab
|
||||
aabaaabaababaabaababaaaa
|
||||
baabbbbbbaaaaabbbaabbbaa
|
||||
abbabbabbabbabbbabbbbabaabbbabbb
|
||||
ababbaabaabbababbbbababbbbbbabaabbabbbabbabbbbaa
|
||||
bbbabaabbababbabbbabbbaa
|
||||
aabaabbbaaabbababaabaaababababbbaabababbabaabbbabaaabaabbababbba
|
||||
abaabaabababaababaabbabb
|
||||
bbaabbbaaaabbbabaaababaa
|
||||
bbbbabbbaabbaaaaabaaabba
|
||||
baaaabbbbbbbaaabbaaaaabbabaabbabaabaabbbbaabbbabaababbaa
|
||||
bbabaabbbaababbabbaabbaaaaabbbababaabbbaaaaabbab
|
||||
babaaababbbabbbbabaabaaababaabbb
|
||||
baaabbaabaaaabaaaaabaabaaaaabaaaaaabababababaaab
|
||||
bbbbbabbbbaaaaaabaababbababbaaaaabbaabbb
|
||||
abaaabbbabbbaabbbaaabaab
|
||||
bbbabbaaaaabaabaaabababaaaabbbabbbbbabbbaababaab
|
||||
bbbbabbbbaabbabbaabbbbbbabaaababbbbaaabaaaaabaabaabbaaab
|
||||
baaaabbaaaaababbbbaaaaabbbbbbbaababbbabb
|
||||
bbaabbbaababbaabbabbabababbbaababaabaaaa
|
||||
bbbabbbbbaaaabbbabbbbbbaabaabbabbababaab
|
||||
baababbbaabaabaabbaababaabaaabbbbbbababbbaaaabba
|
||||
babbabababbbbbabababbbba
|
||||
aabbbaaabbaaabbaabaaabab
|
||||
bbbbbbbaabaaabaabbbbbabaabaababbabbabaab
|
||||
bbaabbbbaaabbaababaaabbabababbbaaaabababbababaaaaabaaaab
|
||||
babbbabaaabbabaaaabbbaabbabaabab
|
||||
bbaaaabaaaaaaabbababbaaaababbbbbabaabaaababbabbbabbaaaaaaaaaababaaabbabbbbbbabaa
|
||||
ababaabbaabbaaaabaaaaabbababbbba
|
||||
baaaababbbbbaabbbaaabaaa
|
||||
aababababbbaabbabbaabbbb
|
||||
baababbaaaabbabbababbaba
|
||||
babbabaabbbbbbbaaabbbabb
|
||||
bbbbbbabbbbbbbabbbbbbabbabaaaabb
|
||||
bbbaabbbbbbbbababababbbb
|
||||
aabbaaaabbabbabbbbbaabaa
|
||||
bbababababbbbaabaaabaababbbbaaabaaaabbab
|
||||
ababbaabaabbbaababbbaababbabbabbaaabbababaabbaabababaaaaaabaaaaa
|
||||
aabaababbabbbaaaabababbaaaaabbab
|
||||
abbaaabbaabbaababbbabbbaababaaaa
|
||||
aabaabaabbbbbabbaabbaabaaabaabaabaabaabbaaaabaaababbaabb
|
||||
aabaaaabbbbbaaaabaaabbbbbbbbaaabababaaabababbaabbbaabaabaababbaabaaaabab
|
||||
bbbabbabaaabaaaabababbaabaaabbbabbaabbba
|
||||
bbaaaabababbbbaabaaabbaababbabbaaabbbababaaaabaaabbbbbbb
|
||||
bbaabbaaaaaaabaaaaabbbbabbbbbabbbaabaabaaabbbabb
|
||||
bbaabbbaabbaaaaaaaabaabababababbaabaaaaa
|
||||
babbababbaabaababaababbabbbbbbabbbbbaabbbaabbbbbbabaabab
|
||||
ababaabbaabbbaabaaaabbba
|
||||
aaaabaaaabbabbbabbbbababbbaabbab
|
||||
aaabaaaaaaabbabaaaaaabbb
|
||||
bbbbabbaababbaabbbabbabbabaaaabbabaaabba
|
||||
ababbaabbbabbbbbaaaabbba
|
||||
abbbbabaaabbbaabbbbaaaabababaaaa
|
||||
aaabaabaaabbbbbbaaabaababbabbabbbbbabbab
|
||||
aaabaababaaaaaabbababbabbabaabbaabababbabaabaabaaaababbabbaabbaa
|
||||
baaabbbabbabbaababbbaaab
|
||||
aabbabababaabbabaaaaaaba
|
||||
aabbbabaabbaaaaaaababbaa
|
||||
bbbbbbabbaaaabaaabbabbabbaaaababbbababaa
|
||||
aababababaaaaabbaaaaabaabbabbabbabbbabba
|
||||
bbbbaaababbbbabaabbbaaaa
|
||||
babababbbabababaabaabbabbbbbbbbbaaaabbaaaababababbabaaab
|
||||
abaaabbbaabbbaabbbbaaaba
|
||||
aabbaabbbabaaabaabbabaaabbbbbaba
|
||||
bbbbaaabaaabaabaababbaabbbababbbabaaabbbabbaabaababaabababbbbabbbababbba
|
||||
abaaabbbaabbaabbabbabbbabbbaaaaabaaabaabbbbbaabbaaabbbbaabababab
|
||||
bbabbbbaaabbbabaababbbaaababaabb
|
||||
aabababbbaabbabaaaaaabab
|
||||
abaababaabbababaaabbaabbbbbaabbaaaaababa
|
||||
aaabbbabaababbbabbbaaaabbabbbbaabaaabaaa
|
||||
@ -1,10 +1,6 @@
|
||||
use aoc_runner_derive::aoc;
|
||||
use std::ops::RangeInclusive;
|
||||
|
||||
fn split_once<'a>(input: &'a str, delimeter: &str) -> Option<(&'a str, &'a str)> {
|
||||
let idx = input.find(delimeter)?;
|
||||
Some((&input[..idx], &input[idx + delimeter.len()..]))
|
||||
}
|
||||
use crate::split_once;
|
||||
|
||||
struct Rule<'a> {
|
||||
name: &'a str,
|
||||
|
||||
106
src/day19.rs
Normal file
106
src/day19.rs
Normal file
@ -0,0 +1,106 @@
|
||||
use crate::split_once;
|
||||
use aoc_runner_derive::aoc;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Debug)]
|
||||
enum Parser<'a> {
|
||||
Lit(&'a str),
|
||||
Seq(Vec<usize>),
|
||||
Alt(Vec<usize>, Vec<usize>),
|
||||
}
|
||||
|
||||
impl<'a> Parser<'a> {
|
||||
fn new(parser_def: &'a str) -> Option<(usize, Self)> {
|
||||
let (idx, def) = split_once(parser_def, ": ")?;
|
||||
let idx = idx.parse().ok()?;
|
||||
if let Some((a, b)) = split_once(def, " | ") {
|
||||
let a = a
|
||||
.split(' ')
|
||||
.map(|x| x.parse().ok())
|
||||
.collect::<Option<Vec<usize>>>()?;
|
||||
let b = b
|
||||
.split(' ')
|
||||
.map(|x| x.parse().ok())
|
||||
.collect::<Option<Vec<usize>>>()?;
|
||||
Some((idx, Parser::Alt(a, b)))
|
||||
} else if let Some(_) = def.find('"') {
|
||||
Some((idx, Parser::Lit(&def[1..def.len() - 1])))
|
||||
} else {
|
||||
let seq = def
|
||||
.split(' ')
|
||||
.map(|x| x.parse().ok())
|
||||
.collect::<Option<Vec<usize>>>()?;
|
||||
Some((idx, Parser::Seq(seq)))
|
||||
}
|
||||
}
|
||||
|
||||
// returns Some(remaining_input) when valid, None when doesn't match.
|
||||
fn parse<'b>(&self, parsers: &HashMap<usize, Parser>, input: &'b str) -> Option<&'b str> {
|
||||
match self {
|
||||
&Parser::Lit(s) => {
|
||||
if input.is_empty() || &input[..s.len()] != s {
|
||||
None
|
||||
} else {
|
||||
Some(&input[s.len()..])
|
||||
}
|
||||
}
|
||||
Parser::Seq(a) => {
|
||||
let mut input = input;
|
||||
let mut iter = a.iter().copied();
|
||||
while let Some(parser_idx) = iter.next() {
|
||||
if input.is_empty() {
|
||||
return None;
|
||||
}
|
||||
input = parsers
|
||||
.get(&parser_idx)
|
||||
.and_then(|p| p.parse(parsers, input))?;
|
||||
}
|
||||
Some(input)
|
||||
}
|
||||
Parser::Alt(a, b) => {
|
||||
let parser_a = Parser::Seq(a.clone());
|
||||
match parser_a.parse(parsers, input) {
|
||||
Some(input) => Some(input),
|
||||
None => {
|
||||
let parser_b = Parser::Seq(b.clone());
|
||||
parser_b.parse(parsers, input)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[aoc(day19, part1)]
|
||||
fn solve_d19_p1(input: &str) -> usize {
|
||||
let (parser_input, pattern_input) = split_once(input, "\n\n").unwrap();
|
||||
let parsers: HashMap<usize, Parser> = parser_input
|
||||
.split('\n')
|
||||
.map(|parser_def| Parser::new(parser_def).unwrap())
|
||||
.collect();
|
||||
|
||||
let rule0 = parsers.get(&0).unwrap();
|
||||
pattern_input
|
||||
.split('\n')
|
||||
.filter(|pattern| rule0.parse(&parsers, pattern) == Some(""))
|
||||
.count()
|
||||
}
|
||||
|
||||
#[aoc(day19, part2)]
|
||||
fn solve_d19_p2(input: &str) -> usize {
|
||||
let (parser_input, pattern_input) = split_once(input, "\n\n").unwrap();
|
||||
let mut parsers: HashMap<usize, Parser> = parser_input
|
||||
.split('\n')
|
||||
.map(|parser_def| Parser::new(parser_def).unwrap())
|
||||
.collect();
|
||||
|
||||
parsers.insert(8, Parser::Alt(vec![42], vec![42, 8]));
|
||||
parsers.insert(11, Parser::Alt(vec![42, 31], vec![42, 11, 31]));
|
||||
|
||||
let rule0 = parsers.get(&0).unwrap();
|
||||
|
||||
pattern_input
|
||||
.split('\n')
|
||||
.filter(|pattern| rule0.parse(&parsers, pattern) == Some(""))
|
||||
.count()
|
||||
}
|
||||
@ -8,6 +8,7 @@ pub mod day15;
|
||||
pub mod day16;
|
||||
pub mod day17;
|
||||
pub mod day18;
|
||||
pub mod day19;
|
||||
pub mod day2;
|
||||
pub mod day3;
|
||||
pub mod day4;
|
||||
@ -18,3 +19,8 @@ pub mod day8;
|
||||
pub mod day9;
|
||||
|
||||
aoc_runner_derive::aoc_lib! { year = 2020 }
|
||||
|
||||
fn split_once<'a>(input: &'a str, delimeter: &str) -> Option<(&'a str, &'a str)> {
|
||||
let idx = input.find(delimeter)?;
|
||||
Some((&input[..idx], &input[idx + delimeter.len()..]))
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user