Added day 19
This commit is contained in:
parent
f1812b5ee0
commit
f866ad67b3
|
@ -0,0 +1,530 @@
|
||||||
|
3: 97 29 | 2 104
|
||||||
|
45: 97 10 | 2 73
|
||||||
|
114: 44 97 | 90 2
|
||||||
|
78: 2 95 | 97 32
|
||||||
|
7: 97 64 | 2 119
|
||||||
|
118: 97 81 | 2 58
|
||||||
|
64: 97 29 | 2 14
|
||||||
|
106: 53 121
|
||||||
|
4: 2 103 | 97 55
|
||||||
|
54: 2 53 | 97 44
|
||||||
|
58: 33 97 | 130 2
|
||||||
|
91: 104 97
|
||||||
|
102: 104 97 | 83 2
|
||||||
|
128: 2 59 | 97 3
|
||||||
|
79: 98 2 | 124 97
|
||||||
|
117: 2 65 | 97 92
|
||||||
|
1: 75 2 | 115 97
|
||||||
|
40: 2 96 | 97 119
|
||||||
|
8: 42
|
||||||
|
92: 102 97 | 57 2
|
||||||
|
97: "a"
|
||||||
|
93: 2 66 | 97 103
|
||||||
|
36: 2 104 | 97 32
|
||||||
|
2: "b"
|
||||||
|
108: 43 2 | 68 97
|
||||||
|
46: 44 2 | 90 97
|
||||||
|
31: 97 5 | 2 132
|
||||||
|
110: 14 2 | 90 97
|
||||||
|
61: 38 2 | 9 97
|
||||||
|
10: 63 2 | 34 97
|
||||||
|
32: 2 2 | 97 121
|
||||||
|
11: 42 31
|
||||||
|
103: 121 121
|
||||||
|
131: 75 97 | 60 2
|
||||||
|
74: 2 112 | 97 47
|
||||||
|
20: 93 2 | 69 97
|
||||||
|
53: 97 2 | 97 97
|
||||||
|
23: 125 121
|
||||||
|
9: 97 66 | 2 25
|
||||||
|
101: 83 97 | 95 2
|
||||||
|
35: 25 2 | 104 97
|
||||||
|
76: 97 55 | 2 104
|
||||||
|
125: 83 2 | 32 97
|
||||||
|
22: 59 97 | 76 2
|
||||||
|
127: 6 97 | 55 2
|
||||||
|
126: 97 119 | 2 17
|
||||||
|
113: 59 97 | 35 2
|
||||||
|
81: 46 2 | 72 97
|
||||||
|
104: 2 2 | 97 2
|
||||||
|
100: 25 2 | 95 97
|
||||||
|
95: 97 2
|
||||||
|
132: 97 27 | 2 45
|
||||||
|
107: 97 90 | 2 32
|
||||||
|
34: 98 97 | 50 2
|
||||||
|
33: 2 95 | 97 83
|
||||||
|
119: 32 97 | 66 2
|
||||||
|
90: 2 2 | 97 97
|
||||||
|
77: 126 2 | 22 97
|
||||||
|
6: 2 97
|
||||||
|
14: 97 2 | 2 121
|
||||||
|
94: 2 110 | 97 129
|
||||||
|
21: 56 97 | 105 2
|
||||||
|
65: 2 96 | 97 98
|
||||||
|
122: 2 71 | 97 86
|
||||||
|
87: 101 97 | 91 2
|
||||||
|
15: 107 97 | 120 2
|
||||||
|
120: 103 2 | 66 97
|
||||||
|
56: 128 2 | 20 97
|
||||||
|
129: 2 66 | 97 83
|
||||||
|
41: 97 48 | 2 122
|
||||||
|
13: 39 97 | 26 2
|
||||||
|
30: 97 88 | 2 54
|
||||||
|
84: 55 97 | 53 2
|
||||||
|
86: 84 2 | 59 97
|
||||||
|
96: 55 2 | 104 97
|
||||||
|
83: 97 121 | 2 97
|
||||||
|
50: 53 97 | 95 2
|
||||||
|
19: 2 70 | 97 78
|
||||||
|
121: 2 | 97
|
||||||
|
57: 53 2 | 83 97
|
||||||
|
37: 6 97 | 6 2
|
||||||
|
68: 97 53 | 2 83
|
||||||
|
112: 97 23 | 2 19
|
||||||
|
66: 2 97 | 2 2
|
||||||
|
49: 97 90 | 2 103
|
||||||
|
80: 2 97 | 97 97
|
||||||
|
85: 83 97 | 55 2
|
||||||
|
12: 2 35 | 97 51
|
||||||
|
116: 97 67 | 2 77
|
||||||
|
123: 4 2 | 85 97
|
||||||
|
82: 21 2 | 111 97
|
||||||
|
105: 30 97 | 87 2
|
||||||
|
72: 25 97 | 95 2
|
||||||
|
115: 104 2 | 29 97
|
||||||
|
63: 97 37 | 2 36
|
||||||
|
42: 24 2 | 82 97
|
||||||
|
0: 8 11
|
||||||
|
70: 2 80 | 97 25
|
||||||
|
5: 2 74 | 97 116
|
||||||
|
52: 16 97 | 94 2
|
||||||
|
62: 35 97 | 114 2
|
||||||
|
18: 123 2 | 61 97
|
||||||
|
25: 97 97
|
||||||
|
88: 83 97 | 66 2
|
||||||
|
124: 2 6 | 97 80
|
||||||
|
89: 114 97 | 100 2
|
||||||
|
44: 97 2 | 2 97
|
||||||
|
71: 49 97 | 106 2
|
||||||
|
38: 2 104 | 97 90
|
||||||
|
75: 53 2 | 104 97
|
||||||
|
98: 53 2 | 25 97
|
||||||
|
69: 97 95 | 2 95
|
||||||
|
73: 2 1 | 97 7
|
||||||
|
24: 41 97 | 109 2
|
||||||
|
48: 2 40 | 97 113
|
||||||
|
39: 103 2 | 104 97
|
||||||
|
67: 2 15 | 97 62
|
||||||
|
55: 2 2
|
||||||
|
47: 2 79 | 97 108
|
||||||
|
51: 6 2 | 95 97
|
||||||
|
17: 95 2 | 90 97
|
||||||
|
59: 53 97 | 66 2
|
||||||
|
28: 2 12 | 97 131
|
||||||
|
27: 2 52 | 97 28
|
||||||
|
29: 97 97 | 2 121
|
||||||
|
16: 4 2 | 127 97
|
||||||
|
109: 2 117 | 97 18
|
||||||
|
43: 104 97 | 6 2
|
||||||
|
99: 97 89 | 2 13
|
||||||
|
130: 83 121
|
||||||
|
111: 99 2 | 118 97
|
||||||
|
60: 97 44 | 2 25
|
||||||
|
26: 121 44
|
||||||
|
|
||||||
|
abbbbababababbaabbbbbbab
|
||||||
|
bababababaabbbaaaabaabaaaaabaabaaabbbbab
|
||||||
|
baaaabbbabbbbababbbbaabababaaababbaaaabbbbabbbbb
|
||||||
|
abbababaaabbabbaabaaaaaaaaaabaabaaabaabb
|
||||||
|
aabbaababaabbabbaaabaababaaaabab
|
||||||
|
baabaaaaabbabaabaaabaaabbaaabbabbaaabbbbbabbbaba
|
||||||
|
babaabaaabaabaababaabbab
|
||||||
|
bbbbbababbbaaaababaaaaabbaabaaba
|
||||||
|
bbaabaaaaaaabbabbababaabbabbaaaa
|
||||||
|
aabbababaaaabababbbbaabbaaabbaba
|
||||||
|
bbaaababbbbaababbbbabababbaaabaaaaababba
|
||||||
|
bbbbababaabbbabaabbaabbaaaaabbbabbbbbbbbbaaaabaabbbaaababbaaaaababbbabbabbabaaab
|
||||||
|
bbbabbbabbaaabaaabaababbbaabaabaaabbbbba
|
||||||
|
abbbbbabbaabbbbbbaaaabbbbaaaaabb
|
||||||
|
aabbababbabbababbbbbaaabaababbaabbaabbaa
|
||||||
|
bbbbbabaaabbaaaaabaaabbbabbaaaba
|
||||||
|
baaabbbbbaabbaaabbbaabaaaaaabbbbaabaaaab
|
||||||
|
bbabbbaaaabaabbaabbbabab
|
||||||
|
bbbbbabbbabbbababbabaabaabbbbaab
|
||||||
|
aaaabbabbbababbabbaabaaaaabbbaaaabbabbababbbaabbbbbbaaaa
|
||||||
|
bbaabbabbaaabbabababbbbbbbbbabbbaabaaaaaabbababbbbbaaaba
|
||||||
|
bbbaabbbaaabbaabbbbbbaaa
|
||||||
|
bbabbabbbababbbbababbbaa
|
||||||
|
baabbbabaabaaabaabbbbbbbaaabbaaaabbababa
|
||||||
|
aabbaabaabaabbbabbbbabaaabbabbbbabbabaabbbabbbaababbbbba
|
||||||
|
aaabababbbbaaabbbaaaaaabaaaaabaabaabababbbbabaaaabaaaaabbbbbbbba
|
||||||
|
babaaabaaabbbabaabaaabbbababbabbbabbabaaaaabbaba
|
||||||
|
aabbaaaabbbbbabbbbaaabbbaabaabbbbbaaabbbabaabbbbbbbababaabbaaabbabbaaaba
|
||||||
|
aaaabababbaabaaaaaaaaaba
|
||||||
|
babbbbaababaaaabbbabbbabaaababaaabababaaaaabbaababaaaaba
|
||||||
|
abbbabaababababbabbaaaab
|
||||||
|
babaabbbbabababaabaaaabbbababababbaaaabbaabbabba
|
||||||
|
bbabbababbbababbabbaaabb
|
||||||
|
bbabababbbbababbbbbbaaaa
|
||||||
|
bbaaababaaaababbbabbbaba
|
||||||
|
aabbbabababbababbababaaaababbaabbbabbaabaabbabbbbaaaaabb
|
||||||
|
bbbbbababbaabbababaabbbbababbbaabbbabbba
|
||||||
|
abbbbaabbbaaababaaababaaababbbbbbbaaaaaabbbaababaabababb
|
||||||
|
baaaaabbbaabaaabbbbbbaaaaabbaabaaabbaaaabbbbbbbbbbaaaaabbabbbababbabbbba
|
||||||
|
abaabbbaaabaabbbbaaabbababaabbab
|
||||||
|
abbbbababbbbaaababbbbbabbababbaaababbabaabbaabbb
|
||||||
|
babbababaabbbaaabaaabbabbbbaabaabaaaabbbabaabbaaabbbbbba
|
||||||
|
babbabaabaababbabbaabbbbbaabaaabbaabaabbbbaaabbaaabababb
|
||||||
|
babaaaaababbbaaabbabbabb
|
||||||
|
baabaaabbbbababbbabababbabbabaabbbaabababbbbbbabaabaaaab
|
||||||
|
aaaaabbbaababaababbbbababbbabbaaabbbabbbabbaaabbababaabbbaaabbaaaaaabbaa
|
||||||
|
bababaaaabbbbbbbababbbababbbbbaabaabbaab
|
||||||
|
baaabbbbaaaaabbabbababaaabbabbab
|
||||||
|
aaaaabbbaabbbaaabaaaaaabbabbbbbb
|
||||||
|
aababbaabbbabbaaabbbbabbaaaabbbb
|
||||||
|
aabbababbbbbbaabbaaaaaaaabbbbaabbbabaabb
|
||||||
|
bbbbbaabbbbbabaaabbbbbaa
|
||||||
|
babababaabaaaaaabbaaabbaaaaabbbaabbbbbababaaababbbabaaabbaabbabb
|
||||||
|
bababababbaaabbbababaabb
|
||||||
|
bbabaababbaaaaabbabbbaaabbbaaaababaaaaaaaabbbbab
|
||||||
|
bbabbbabbbbbabaabbbabaaa
|
||||||
|
aaabbbaabbaaaaabbbabbabababababbabbababb
|
||||||
|
aabbaaaabaabaabbbbbbaabaaaaabaaabaabbaab
|
||||||
|
aaaabbbabbbbaaababbabbab
|
||||||
|
abbaaaaabaabbbaaaaabbbbbbbababaabbbbaabbabbbababbaaaabaa
|
||||||
|
aaaabbbababababbbaaababaabbabbbabbabbbbb
|
||||||
|
baaaaaabbaababbbabbaabaa
|
||||||
|
aaaabbbaabaaabbbbaaaabbababaaabaaaabbaaabbababaa
|
||||||
|
bbaaaaabbabbaabbbabbbaba
|
||||||
|
aaaabbbababababbababbaababaabaabaaabbaab
|
||||||
|
baaaaaababaaabbabbabbaabaaaabbbb
|
||||||
|
bbbbaaabaaabaabaaabababaabbabaabbbbaaabb
|
||||||
|
aaabbababbbbaabbbbaababbaaababba
|
||||||
|
aabaabaaaaaababbbabbaaaabaaaaabaabbabaaabbabaaabaaabbbababaaabaa
|
||||||
|
aabaaabbabbabbbaaaabbbab
|
||||||
|
bbaaaaaabaabaaaababbaaaaaabaababbbbbbabbbabbbaaabbbabbbbbabbbaab
|
||||||
|
bbbbabaabbabbaaabaaaaaaabbbaaaabaaaabbababbaabbbbbabaabaaaabbbbaaaababaa
|
||||||
|
aaababaabaababbabbaabbbbbbbabaabaaaabaaabaaabbabaaaabaab
|
||||||
|
ababababbbbbbabaababbbabbbbaaabbabbababaaaabbbba
|
||||||
|
babbbbabbaabaababbabbbaabbbaabbbbaabbaab
|
||||||
|
aabaaababbbbaaabbabaabbaababaababbbabaab
|
||||||
|
aabaaabbbbaabbbbbbbaabbababbabaabbaaabaa
|
||||||
|
abbbbbbbaabbbaabbbabbbabbababbaabbababbb
|
||||||
|
aabababababaaaaabbbababbbaabbbba
|
||||||
|
aaaababbabaaaabbaabaabbaaaabaaaa
|
||||||
|
bbbbbabbababbaaaabbbbbabbaabaababbbbbaaa
|
||||||
|
aabbaaaababbbaaaaaaabbaa
|
||||||
|
aaaaaaabaabaaabbabbaaaaa
|
||||||
|
babaaababbaaabbabaabbbbbbaaaababbbaabaab
|
||||||
|
abbabbbaaaababbbababbbabaabaababbbababab
|
||||||
|
baabbbaabbabbbabaabbbaaabbaaaabbbbaaabaaabbaabbb
|
||||||
|
babaabaaaaababababbbbabbbabaabaaaabaaabaababababbbaabbbabbaaaaaababaaaab
|
||||||
|
aabaaabbaababbaaabbbbbaa
|
||||||
|
aaababaaaaaaabbabbbbbbba
|
||||||
|
ababbbabbabaabbabbabbbbababbaabbaabababb
|
||||||
|
baabaaabbaaaaaabababbaababaaabaaabbbbbbbbaabababbbbabbba
|
||||||
|
bbababbababbababbbaabbbbbbbababbabbaaabbbbbbaabbaababbba
|
||||||
|
ababbaaaaaabbbaaababbbaa
|
||||||
|
ababbaabababbaabbaabbaba
|
||||||
|
aaaaabbabbabbbabbbaaabbbababababaaababbabababbabaaabbbabbbaaaaba
|
||||||
|
aabaabaaabbbbabbababbaababaabaaabaababab
|
||||||
|
bbabbaaaaabbbabababababbababbbaaabbbaaaababbbabbbbbbbbabaababaaa
|
||||||
|
aabaaabbbbbbababaaabaaaaaababbaaabaaabaaaabaabaabababaabbbbaaaaabbbabaaa
|
||||||
|
aaabaabaabaabbbabbbbabba
|
||||||
|
aaabbbaabaabbbabbbababbb
|
||||||
|
bbbbbaababbbbaabbbabbaabbbbaaaaa
|
||||||
|
baaaabbbbbabbbababaaaaababbbabab
|
||||||
|
bbaaaaabbaabaabbaabbaaaaabaaabaaaaababbbabaababa
|
||||||
|
babaabbaabaaabbabaababbaababaaaa
|
||||||
|
abbbaababaaabbababbbbaabaaababbbbbbbbbab
|
||||||
|
abbbbbbbbbaaabbbaabbabaa
|
||||||
|
baababbabaaababaababbabababbbbabaababbbaaaabaabbabbaaabb
|
||||||
|
bbababaabbaabbbbbabaabaababbabba
|
||||||
|
bbbaabaaababababbaabaaba
|
||||||
|
aaabaaaaaaaaabaabbabaaabbbaabbab
|
||||||
|
aaaaabbaababbabababaabaabbbaaaaa
|
||||||
|
ababbabaaaaaaaaabaabbbaaaaaaaaabaaaaaaaababbaaaa
|
||||||
|
aabaabababbaababaababbabbaabbaabbbaaaabbababbabbbaaabbba
|
||||||
|
babaaaaababbaabbbbbbabaabaaababababbbabbaabbaaab
|
||||||
|
bbabbbabbbbaaaabaaaabbaaabbaabaabaaaabaa
|
||||||
|
baababbabbabbbaabaabbaab
|
||||||
|
babaabbbabaabbbaabaaabaaabaaabab
|
||||||
|
abaababbbababbbaaaaaabbababaaabbbaaabbbb
|
||||||
|
aaaababbaabaabbabbaaaaaa
|
||||||
|
baabbbbaabababababbbbaaababbaaaabbbbaaababaabbaaaaabbbbbaabbabbbbbaaaaaa
|
||||||
|
bbbbaaabbabbbaaaaabbbbba
|
||||||
|
aaabbbaaaabababaababbaabbbbabaaa
|
||||||
|
baabbbbbbaabaabbbababbaabbbabbabaabbbbab
|
||||||
|
baaababbaabaaabbbbbaaaaaaabbabbaaaaabaab
|
||||||
|
ababbabbabbbbbbbabababbaaaabababbaaabbaa
|
||||||
|
baaabbbababaabbbbaaaaabb
|
||||||
|
bbaabbbbababaabaaaaaaaba
|
||||||
|
aabbbabbbbabbbabbbbbabba
|
||||||
|
abbabbbbaabaaabaaabaabab
|
||||||
|
aaaaaaaaaaabaababbaaaabbaabbbaabbbbabbaabbabbabbababbbaabbaababbaaaaaaba
|
||||||
|
abaabbbbaabbbabbabbbbabaabbabbab
|
||||||
|
bbaabbabbbabbbbaabbbbaabababbbbaaaaaabbabbabbbbb
|
||||||
|
bababaaabaabbbbbbbaabbbaaaabbbab
|
||||||
|
abbbabaabaabaabbbaabbababbbababababbbabb
|
||||||
|
ababaabababababaababbbabbababaabbabbbaababababbb
|
||||||
|
baabbbbbabaabbbbabbbabab
|
||||||
|
ababbabbbabababbbbabbaaaaabbabbb
|
||||||
|
baabbabbbbaabaaabbabbaabbbabaabb
|
||||||
|
babababbbabaabbaabbbbbba
|
||||||
|
abaaaaabbbababaaaabaabbbaaaabaab
|
||||||
|
baaaaaabbabbababbaababbbbaabbabbaabbbbab
|
||||||
|
abbbabaabbaaababaabbbaabaababaabbababbabaababbba
|
||||||
|
bbabababaabbbbaaaabaabaaabaababbaabaaaaababbbbabbbaaaaabbabababaaabababababbaabb
|
||||||
|
aaababaaababababbbbbbababaabbabbabbbbabababbbaba
|
||||||
|
aabaabbbaaaaaabbbbbaababbabbbbba
|
||||||
|
bbabbbabbbaaabbbabaabbbababbababbbbaaabaaaaaabaabaaabaabaabbbbaaabbbabab
|
||||||
|
bbaabbbbbbaabbbbbaaababaaababbabbaaaabba
|
||||||
|
ababbbbbabbbbaabaabaabbaabaabbab
|
||||||
|
bbabbbaaaabbbaabbbababbaaaabbbba
|
||||||
|
baabbbbbababbabababbbaababbabbbaaaaaaaba
|
||||||
|
abbabbbaaabbbaaabbabaabababbabaaabbaaaaaaaaabaabbbabbbbb
|
||||||
|
aaabaaabbaabaabbbaababaabababbbbaabaaaab
|
||||||
|
baabbbaabaabaabbaababaabbbaaabba
|
||||||
|
abaaabbbbbbbabaababaabaaababbbbaaababbaaaabbbabaabaaaabababbbbbbabbaabab
|
||||||
|
abaaaabbaaaaaaabbbbbabaaababbabbabaaabaabbaabbba
|
||||||
|
bbaabbabbbbaabaabbaabbaa
|
||||||
|
abbbbababaabbbaabbbbbabaababbbaabbbbbaaa
|
||||||
|
babaaaaabbbbbbbbbbbbbababbbaabaabaaaaaabbbabaaabaabbabaa
|
||||||
|
bbaaababbabaabbabaabbbbbbababaabaabababbbabbbbba
|
||||||
|
baaaaaababbabaabaaaababaababbaabaaaaabab
|
||||||
|
aabaaaaabababaababaaababaaaabbabaabaaabaabbababbbaaabaaabaababaa
|
||||||
|
babababbababababaaababbb
|
||||||
|
aaabaaabbbababaaaabaabbabaaabbbabaaaabab
|
||||||
|
abbabbbaaaabbbaabbaaaabbbabbbabbabaabbaa
|
||||||
|
bbbbbabbabaaabaabbababaabaabbabbbabbaabbbbbbabbbabbaaaaa
|
||||||
|
bbbbbabaaabbbabaababbbbbabaabbbbbbaaaabbbbbaabbbabaaabab
|
||||||
|
bbabababbababaabababbbbbbbbaaabbabbaabbb
|
||||||
|
aaaaaabbbbbaababbbaaabaabbbaaaaa
|
||||||
|
aaababbabbabbbaababbabbaabbabaabaaabaababbbabbabbbbbbbbbaabaaaab
|
||||||
|
abbbbbbbbaaabababaaaaaabbbabbabb
|
||||||
|
babaabaabaaabababaabbabbbabaabaabbbaabaabbabbbaabbbabaaa
|
||||||
|
bbaabbabbbabaaabaaaaaabbbbabaaab
|
||||||
|
baaababbababbaaaabbbbbba
|
||||||
|
baaababbaaaabaaaaababbaabaabbbbbabaaaaababbaabaaaabbbbaaaaabaaaa
|
||||||
|
aabaabbbbababaaababbabaabaabbaaabbaaabbbbbbbbbbbabbababb
|
||||||
|
aabbbaaababaabbabaabaaaaaabaaabbbabbaaabbababbbbabaababb
|
||||||
|
baaabbabbaaaabaaaabaaababbbbabaaaaabaaba
|
||||||
|
ababbaabbaabbbabbabbababaaaabbbbaabbabba
|
||||||
|
abaabbbbbababaaabaababab
|
||||||
|
baabaaaaabaaabbbaabbaabbaaabbbbb
|
||||||
|
bbbbbbaaaaabbaababbabbabbbbbbbaa
|
||||||
|
abaaabaabaabbbbbbabababbbabbbaaaabaabbbaabbbabbbaabaaaaa
|
||||||
|
bababbaabaaabbababaababb
|
||||||
|
bbbabaabbababbaabbbabbaababbbbbbbbbbbbab
|
||||||
|
bbbbbbbbaabaabbaaaabaaabbbaaabbbbbabbbbb
|
||||||
|
abbabbbabbbbbaabbbaaabbbbaabbbaaabaabbbbbabbabbb
|
||||||
|
baaabaaababaaaaaaabbbabbbaabbaaababbbbbbbaaaabba
|
||||||
|
abaaabbaabaabbbabbaaabbbabaaabbbaababaaa
|
||||||
|
aaaaabbbaabaabbabaabbbbbbbaabbaa
|
||||||
|
aaaabbbaabbbbabaabbabaaaaaabaabb
|
||||||
|
aaabaaabaaabaaabbaabbaaababbbbabbabaaaab
|
||||||
|
aabaaabaaabababaabaaabaaababbaaa
|
||||||
|
bbbabbaabbabaababaaabbbabbbbaabb
|
||||||
|
bbaabbbbbaaabaaaaaaaabbaaaabbbbb
|
||||||
|
abbbabbaababbbbbbbbabaaa
|
||||||
|
bbbababbababbbabaabaabba
|
||||||
|
babbbaaababaabbbbbababababbbabaaabbbbaaa
|
||||||
|
abaaaaabbaaaaaabbabbabbb
|
||||||
|
ababaababbbbbabaaababbab
|
||||||
|
abbbabbbaaaaaaababbbaaaa
|
||||||
|
babaaaaabbaaabbbabbabbbbaabbaaaaabaabbabaaabbabb
|
||||||
|
babbaabbbbbbabaaabaaabbaabaabaaabababbba
|
||||||
|
ababbbbbaaabababbbbabbaaabaaaaaa
|
||||||
|
bbaaaabbbaabbbaababbbbbb
|
||||||
|
abaabbbaabbbbbbbaaabababbbbbababaaaabbaa
|
||||||
|
abaaabaaabbabbbbbabbababbabbbaabaaaaaabaaaaaabaabaababab
|
||||||
|
abaabaabbaaabbbbbbbbbabbaaabababbbaabaaaaaaaabab
|
||||||
|
aaabbbaabaabbbbbbabaabbabbbbaabb
|
||||||
|
bababaaabaabbbaabbaaabbababbbaabbbbabaababaabbaababaaaab
|
||||||
|
aaabaabaaababababbabbbbb
|
||||||
|
bbbababbaabbbaaaaabbbaabbababbba
|
||||||
|
baabbbaaabbabbbbbbbbabaaabbbbaabbababbbb
|
||||||
|
baabaaaaaaabababaaabbbab
|
||||||
|
babababbaabbbabaabbbbaaa
|
||||||
|
babaaababbaabbbbbababaaaabbbaababbaaabaa
|
||||||
|
aabbbabbbabbababaaaabababbbaabba
|
||||||
|
aabbbaaabbabaabbbbbbabbabbbbbbaaaababaaaabbbaaabbaabbabaabbbabaaababaaaa
|
||||||
|
ababaabaaaaababbbaaaaaba
|
||||||
|
bbabbbbaababaababbabbaabbbabbaaaaaaaaaababbbbbbabbabaaababbbbaaabbabbbbb
|
||||||
|
bbaabbabbaaabaaaaaabbbaabaababbbbaababbabababbababaabaaa
|
||||||
|
bbbbbaabbababaabbbabbaabbbababaabababbab
|
||||||
|
baaabbabaababbaaaaabbbaabbbbbaabbabbbaaaabbaaaabaabbbbaa
|
||||||
|
aababababababbaaabaaaaababbabaabaaaabbbaabaaabaaabbaababbbbabbbbbbbaaaaababbbbab
|
||||||
|
aaabababaabaaabbaabaaabbaaabbabbaabbaaab
|
||||||
|
baaabaaabbbbbbbbaaaaaaba
|
||||||
|
abbbabbbbbbbaababbbabaaa
|
||||||
|
babababbbbbbbabbaabaabbababbbbba
|
||||||
|
aaaaabbaaabbbaababaaabbbaabbbbab
|
||||||
|
bbbaaaaaabbabababaabbbaaaaaabbaaaababbbaaaaabababbabaaaaaaaaababbbbbbaabbbabaaab
|
||||||
|
aabaabbabababbbaabbaabbbbbabaabbbbabaabb
|
||||||
|
aaaaaaababbbabbbbababaaababababbaabbbaaabbbabbba
|
||||||
|
babbabaababbaabbbaabaaaabbaaaaababaaabaabaabbaab
|
||||||
|
abbbbbbbabbbbabbaabbbaaaabbbbbaa
|
||||||
|
bbaaaabbbaaabbbbbbbbabbb
|
||||||
|
aaababaababaabbbababbabbabaabbbabaabbaaabbbbbaaa
|
||||||
|
bbbababbbaabbaaabbabaaaababbbaaabbabbaba
|
||||||
|
abbabbbbbbbbbaabaabbaabaababbbaa
|
||||||
|
baababbabaaaaaaaaabbbbaa
|
||||||
|
baaabbabaabbbbbbaaaabbabbbbaaabb
|
||||||
|
bababbaabaabbaaabaabbabbabababbb
|
||||||
|
bbbbbababbbabbaabaababab
|
||||||
|
aaaabbababbabbbabbbbbbbbaaabbaab
|
||||||
|
bbababbaaababbaabbbbbbbbaaaaaababaaaaaba
|
||||||
|
ababbababaabbabbaaabaaaa
|
||||||
|
bbabbbaaaaaabbabaaaaaaabbbabaababbbbbbaababbbaba
|
||||||
|
aaaaabaaababbbaabbbbabba
|
||||||
|
ababbbbaaabbbbbbbaaaabbbbbaaabbbbbbbbbaa
|
||||||
|
babbaaaaabbbabbbaabbbababaaaaabaaaabaababababbab
|
||||||
|
baabaaabbabababbbbbaabbabbbbbbabbbbbbbaa
|
||||||
|
bbabbabaaaaababbaabaabaaaabbabbabbaaaaaa
|
||||||
|
aabbbababaabbabbbabaaabaabbaaababbbbaabb
|
||||||
|
aabbbaabaabaabaaaaaababbbbbababa
|
||||||
|
abaaaaaaabababbbaaabbaabaaabaabb
|
||||||
|
abbbbabbaaaaabbbababbabbbabbbaaaabaabbbbabaabbbabbbaaaba
|
||||||
|
aabbbaaaaaabbbaaaaaaabbbbababaabbbaababaaaabbaaaababaabb
|
||||||
|
aaababaaababbaaaabbbabaaabbababb
|
||||||
|
baaabbbabaaaaaababbbabbbbbbbababbbaabaabbabbabbababbbbabbbabaaab
|
||||||
|
bbabbabaaabbababbaabbbabaabbabab
|
||||||
|
abaabbbabbbbabaabbbaabba
|
||||||
|
babaabbbababaababaabbbbbaababbba
|
||||||
|
abaabbbbabbbabaabbababbb
|
||||||
|
baaabaaaaaaabaaabbbbbaabaaaabbbb
|
||||||
|
bbaaabaaababbaabbbaaababaaaabbbbabbaaabaaaaaababbabaaaaa
|
||||||
|
babbabaaaabbababaabbbaaaabaabbbbbbbaabab
|
||||||
|
bbabaabaaababaababaababb
|
||||||
|
aabbaaaabaabbbaabaaababaabbbbbabbbabbabaaaabaabb
|
||||||
|
baabbbabbaabaabbabaabaabbaabbbbbabababaa
|
||||||
|
abaabbbaabbaabbaaaabbbbababaaabb
|
||||||
|
bbbbaaabbbbbbabaaaaabaaabbbabbab
|
||||||
|
ababbbbaabbbabaabababbbabbababbaaaabaaabaaabaaaabbaaababaaaabbaabbbbaaaa
|
||||||
|
bbaabbababababbaaabbabbb
|
||||||
|
babaaababbaaaabbaabbbbab
|
||||||
|
bbabbbaabaabbabbaabbaaaaaabbbaabaaabbbab
|
||||||
|
abaabbbbabaaaabbaabbababaaaababaabaabbbabbaababbbbbaaaba
|
||||||
|
abbbbaabbbaaababbbabbbaaaaaaabaabababaaababbaabb
|
||||||
|
aabbbabbaaabaaabaabbabba
|
||||||
|
ababbabbababbaababbbbabaabbbaaab
|
||||||
|
ababbbbaabaaaaabaabbaaab
|
||||||
|
babbbaababababbaaaabaaabbaabaaaabbaabaaabbaaabbaaabaabababbaaaba
|
||||||
|
bbbbbbbbbaabbbababbaabba
|
||||||
|
aabbababbaabaaaaababbbaa
|
||||||
|
aabbbbbbababaabaaabaaabbbbabbabaaaaaababaaabbbba
|
||||||
|
aabaabbaaabaabaabbbaabaaaaaabbbb
|
||||||
|
abaaaabbbbbbaaabaaaaabaa
|
||||||
|
baaabbbbbabbabaaababbbaa
|
||||||
|
baaababaababaaababbaaabbabaabbba
|
||||||
|
ababaababbabbbabababbababbaababb
|
||||||
|
baaaaabbbaaababbbabaaaabbabbbababaaababbaaaababbbbaaababbaabababaababaab
|
||||||
|
baabaaaabaaababbbbabbbabababbabababbabba
|
||||||
|
aabbbabbababbabbaabbaaaaaabbbbaa
|
||||||
|
aaaaaaabbbbbaaaabbbabbabbaabababbbaaaaba
|
||||||
|
aabbbbbbaaaabbbabbbabaaa
|
||||||
|
aaaabaaaabbbbbbbbbaabbaa
|
||||||
|
baaaabbbabbbbabbbbbababa
|
||||||
|
ababaabaaabbaaaaabaabaabbbbbaabb
|
||||||
|
babaabbbbabbababbbbbabaaaabbaaabbbbaababaabbaaabbbabaabb
|
||||||
|
baabbbbbbbabbbbabaabbbba
|
||||||
|
aaababaaababaababbaaababbbababbaabbbbbabbbbaabbabbbbbbab
|
||||||
|
baaababbbbaabbbbbbaabaaabbbaabbb
|
||||||
|
baabaabbaaaaabbabaaabbababbaabbb
|
||||||
|
bbabaaaabbbababbaabbbababaaabbabbbaabbabaababbabbaaaabab
|
||||||
|
baabaaaabaaabbabbabbabaabbabbbababbbbbababaabaababbbaaaababaabab
|
||||||
|
abaaabbabaaabaabbbaaaabababbbbaabaaaabba
|
||||||
|
aaaaaabaaabaaabbaaabbaaaaabbbaabaabbaaaaaaababaa
|
||||||
|
bbbbabaaaababbaabaaabbaa
|
||||||
|
ababababbaaaaaaaaaaaaabb
|
||||||
|
aabbaabaaaabbaababaaaabaabaabbabaaaaabaabbbabbba
|
||||||
|
aaaababababbababababbbaa
|
||||||
|
abaaaaaababbbaabaaababbaababbaabbabbabababbbabbabbabbaab
|
||||||
|
bbabaabaabbbabaabaaabaaababaabbbabaaaabababbaabaaabbabaa
|
||||||
|
baabaaaabababaaabbbababa
|
||||||
|
aaaababaabbabaababaaabab
|
||||||
|
baaaaaaaaabbbabababbabba
|
||||||
|
abaababbbabbbaaaaaaaabbbbaaabababaababaaabbbbabaabbbaaaaabbaaaababbaaabb
|
||||||
|
ababbabbaabaabbbababbabaaabaabab
|
||||||
|
aaaaaaabbbabaaaababaabbaabbababa
|
||||||
|
bbbabaabbbbbabaaaaaaaaabbbbaabaabbabaaabaabbaaab
|
||||||
|
ababbabbaabaaabaababababaaaabbbb
|
||||||
|
aaabaaabaabaabaaaabaaabaaabaabab
|
||||||
|
abaaabbbaabbbbbbaaaaabaa
|
||||||
|
bbababababaabbbbbbbbbbbbababaaabaaabbaba
|
||||||
|
babbabaababababbabbbbbbbbaabbabbaaabbaab
|
||||||
|
aaabbbbabbbbbbbababaababbabbaaaaaaababbb
|
||||||
|
bbaaababbbaaabbbababbabbbbbbbbbbaabbabba
|
||||||
|
babaaabaaabbbabbaaaabbabbaaabaab
|
||||||
|
babaaaaaaabaabbbabaaabab
|
||||||
|
baaabbbbababbbbbbabbbaabbabaaaab
|
||||||
|
abababbbababbaaabbaaabababababaaaabaaabb
|
||||||
|
babaabbbababaabaabaabbbb
|
||||||
|
baabbaaaaaabbbaaaabababaaabbbaabbbbaabbababbbbab
|
||||||
|
bbababaaabaaaaabbabbbaaaaaababbb
|
||||||
|
bababbaababababbbbbbaabb
|
||||||
|
babbbaaababbbaaababababababbaaabbbaabaab
|
||||||
|
aaaabbbabbaaabbbbaabbbbbbbaabaaabaaabaab
|
||||||
|
baaaabbbababbaaaaabbbabbbabbbabbbabbbbab
|
||||||
|
bbabbbabaaaaabbbbabaabbbabbabbaa
|
||||||
|
abbbbaababaababbbaaabababbbbaabababaaaaabbabbbaaaaaabbaaabbbbaab
|
||||||
|
ababbbbabbabbbaaaabbbaaababaabaabaababbaaaaabbbbaaaabbbbbabaaaab
|
||||||
|
bababababaaababaababbabbabaabbaaaaabaabb
|
||||||
|
bbaaaabbabbabbbabbaabaaaaaaaabbbaaaabbababbabbabbabbbabaabbbaaabaabaaaab
|
||||||
|
bbaaabbbbaaaabbbbabaaaaaabbbaabb
|
||||||
|
babaabbaaaabbbaaaaabaaababbbabbaabbbbbabaaabbababbaaaababbbaaaaa
|
||||||
|
ababbabbbaabbbaabaaaabaa
|
||||||
|
aabaaabaaaaaaaaabbbbbaaa
|
||||||
|
baabaaabbabaabbbababbabbbababbab
|
||||||
|
abaaabbaaaaaabbabbaababa
|
||||||
|
babbabaabaaaabbbbababbab
|
||||||
|
aaabbbaaaabbbabbababbaaababababbabbbaabbabaababb
|
||||||
|
aabaaabaaabbbabaabbaaabb
|
||||||
|
abaaaabbbaaabbbaababbbbabaababab
|
||||||
|
bbababaabbbbaaabaabbbabbabbbaababbabaaab
|
||||||
|
abababbabbabbabbaabbabaabbaabbaa
|
||||||
|
abaaabbbababbbabbbaababa
|
||||||
|
ababbbabababbabaaaaabbbaabbababa
|
||||||
|
baababbabaababaabbaaaaaa
|
||||||
|
bbbbbaabaaababababaabaaa
|
||||||
|
babbaabbaabbbaaaabbbabbaabbabaaabbabbabaaaaaaaaababbbbaaaabaabab
|
||||||
|
aabababaababaabababbbaaabbaabaaabaaaabab
|
||||||
|
bbabaabababababbbabbbaba
|
||||||
|
aaababbbaabaabaabbaaaabbbbabaaabbbaababb
|
||||||
|
baaaabbbbababaabbabababaaabbbbbbaaabaaaa
|
||||||
|
abbbbabbaabbbabbabababaa
|
||||||
|
aabbbaaabbbababbbbaaaabaabbbaabb
|
||||||
|
ababbbabaababababaaaabab
|
||||||
|
bbaaabbabbabbbaaabbbaaaa
|
||||||
|
bbaabbbbabaaabbaabababbb
|
||||||
|
abbbaababbaabaaaaabbaaaaaaaaabaa
|
||||||
|
baabbabbabaaaaabaaabaaaa
|
||||||
|
aaabababababbbbabbbbbabaabababaa
|
||||||
|
aaaaabbbaabaaabbbbbabaabaaaabbaa
|
||||||
|
aaaaabbbababbbabbababbba
|
||||||
|
ababbbabababbaabbbaaaaabbbbbbbaa
|
||||||
|
bbbaaaabaababaabbaababbaabababaa
|
||||||
|
baaaaaabbbbaaaababbabbaa
|
||||||
|
baabbabbbbababaaabbabaababbbabbaabaaaaababababbb
|
||||||
|
abaaaaabbbbaaaababbabbaa
|
||||||
|
abbabaabbaabbbaaaabbaabbaabaabaaaaababbabaabbabababaabaabbbbbbbbbaaaaabbababbbba
|
||||||
|
aaabaaabbbbabaabbaababaaabbbbbabbaaaaaaaaababaaaaaababbabaaabbaa
|
||||||
|
aaaaaaabbaabbaaababbbaababaabaaababbbbaa
|
||||||
|
bababababbbbbabbaabababbbaaabaaaaaaaaaaaaabbbaaa
|
||||||
|
babababaaaaabaaabbaaabaa
|
||||||
|
abbbbabbbababbaababbbaabbababbbb
|
||||||
|
bbabbbabaabaaabaabbabbbbabbaaaaabbbabbba
|
||||||
|
aabbaaaabaaabaaaabbbbabaaaaaaaba
|
||||||
|
baabbbbbbaaabaabababaabaababaaaaaabbaaaabbbbaabbabbabbaa
|
||||||
|
bbaaaabbbbaaabbabaaabaab
|
||||||
|
bbbbbababaabbaaabbbbbaba
|
||||||
|
bbabbababaabbabbaaaababbbbbbbabaaaaaabaa
|
||||||
|
aaabababaabaabbbabbbabbaaaababaabbbabaaabbabbbbbabaaabab
|
||||||
|
bbbabbaababbababaaaaaaba
|
||||||
|
bbbbbababbabbaabbbbaaaba
|
||||||
|
aabaabbbbbabaaaabbaaababababababbabaaaab
|
||||||
|
baaabbbabbbababbabababaa
|
||||||
|
bbaaababbabaaaaaabababbb
|
||||||
|
bbabbaababbbabbaaaababbb
|
||||||
|
bbabbbbaabababbababaaaab
|
|
@ -1,3 +1,47 @@
|
||||||
.#.
|
42: 9 14 | 10 1
|
||||||
..#
|
9: 14 27 | 1 26
|
||||||
###
|
10: 23 14 | 28 1
|
||||||
|
1: "a"
|
||||||
|
11: 42 31
|
||||||
|
5: 1 14 | 15 1
|
||||||
|
19: 14 1 | 14 14
|
||||||
|
12: 24 14 | 19 1
|
||||||
|
16: 15 1 | 14 14
|
||||||
|
31: 14 17 | 1 13
|
||||||
|
6: 14 14 | 1 14
|
||||||
|
2: 1 24 | 14 4
|
||||||
|
0: 8 11
|
||||||
|
13: 14 3 | 1 12
|
||||||
|
15: 1 | 14
|
||||||
|
17: 14 2 | 1 7
|
||||||
|
23: 25 1 | 22 14
|
||||||
|
28: 16 1
|
||||||
|
4: 1 1
|
||||||
|
20: 14 14 | 1 15
|
||||||
|
3: 5 14 | 16 1
|
||||||
|
27: 1 6 | 14 18
|
||||||
|
14: "b"
|
||||||
|
21: 14 1 | 1 14
|
||||||
|
25: 1 1 | 1 14
|
||||||
|
22: 14 14
|
||||||
|
8: 42
|
||||||
|
26: 14 22 | 1 20
|
||||||
|
18: 15 15
|
||||||
|
7: 14 5 | 1 21
|
||||||
|
24: 14 1
|
||||||
|
|
||||||
|
abbbbbabbbaaaababbaabbbbabababbbabbbbbbabaaaa
|
||||||
|
bbabbbbaabaabba
|
||||||
|
babbbbaabbbbbabbbbbbaabaaabaaa
|
||||||
|
aaabbbbbbaaaabaababaabababbabaaabbababababaaa
|
||||||
|
bbbbbbbaaaabbbbaaabbabaaa
|
||||||
|
bbbababbbbaaaaaaaabbababaaababaabab
|
||||||
|
ababaaaaaabaaab
|
||||||
|
ababaaaaabbbaba
|
||||||
|
baabbaaaabbaaaababbaababb
|
||||||
|
abbbbabbbbaaaababbbbbbaaaababb
|
||||||
|
aaaaabbaabaaaaababaa
|
||||||
|
aaaabbaaaabbaaa
|
||||||
|
aaaabbaabbaaaaaaabbbabbbaaabbaabaaa
|
||||||
|
babaaabbbaaabaababbaabababaaab
|
||||||
|
aabbbbbaabbbaaaaaabbbbbababaaaaabbaaabba
|
||||||
|
|
|
@ -0,0 +1,262 @@
|
||||||
|
use std::collections::HashMap;
|
||||||
|
use std::error::Error;
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::{self, BufRead};
|
||||||
|
use std::vec::Vec;
|
||||||
|
|
||||||
|
#[derive(PartialEq, Clone, Debug)]
|
||||||
|
enum Rule {
|
||||||
|
Terminal(char),
|
||||||
|
NoneTerminal(Vec<Vec<u32>>),
|
||||||
|
}
|
||||||
|
|
||||||
|
fn read_rule(rule: &str) -> (u32, Rule) {
|
||||||
|
let mut parts = rule.split(':');
|
||||||
|
|
||||||
|
let num: u32 = parts
|
||||||
|
.nth(0)
|
||||||
|
.expect("Missing rule Number")
|
||||||
|
.trim()
|
||||||
|
.parse()
|
||||||
|
.expect("Unable to parse rule numer");
|
||||||
|
|
||||||
|
let rest = parts.nth(0).expect("Missing actual rule").trim();
|
||||||
|
|
||||||
|
if rest.starts_with('"') {
|
||||||
|
(
|
||||||
|
num,
|
||||||
|
Rule::Terminal(rest.chars().nth(1).expect("Rule char not found")),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
let options: Vec<Vec<u32>> = rest
|
||||||
|
.split('|')
|
||||||
|
.map(|o| {
|
||||||
|
o.trim()
|
||||||
|
.split(' ')
|
||||||
|
.map(|r| r.parse().expect("Unable to parse sub rule numer"))
|
||||||
|
.collect()
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
(num, Rule::NoneTerminal(options))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn match_rule<'a>(input: &'a str, rule_num: u32, rules: &HashMap<u32, Rule>) -> (bool, &'a str) {
|
||||||
|
let rule = &rules[&rule_num];
|
||||||
|
|
||||||
|
match rule {
|
||||||
|
Rule::Terminal(a) => {
|
||||||
|
if let Some(b) = input.chars().nth(0) {
|
||||||
|
if *a == b {
|
||||||
|
return (true, &input[1..]);
|
||||||
|
} else {
|
||||||
|
return (false, "");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return (false, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Rule::NoneTerminal(opts) => {
|
||||||
|
for seq in opts {
|
||||||
|
let mut rest = input;
|
||||||
|
let mut valid = true;
|
||||||
|
for r in seq {
|
||||||
|
let (ok, tail) = match_rule(rest, *r, &rules);
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
valid = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
rest = tail;
|
||||||
|
|
||||||
|
// Weird HACK
|
||||||
|
if valid && rest == "" {
|
||||||
|
if *r == 11 {
|
||||||
|
valid = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if valid {
|
||||||
|
return (true, rest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (false, "");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> Result<(), Box<dyn Error>> {
|
||||||
|
let file = File::open("inputs/day19.txt")?;
|
||||||
|
let mut lines = io::BufReader::new(file).lines().map(|l| l.unwrap());
|
||||||
|
|
||||||
|
let mut rules: HashMap<u32, Rule> = HashMap::new();
|
||||||
|
|
||||||
|
while let Some(line) = lines.next() {
|
||||||
|
if line == "" {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let (num, rule) = read_rule(&line);
|
||||||
|
rules.insert(num, rule);
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut input_lines: Vec<String> = Vec::new();
|
||||||
|
while let Some(line) = lines.next() {
|
||||||
|
if line == "" {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
input_lines.push(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
let count1 = input_lines
|
||||||
|
.iter()
|
||||||
|
.map(|l| {
|
||||||
|
if (true, "") == match_rule(l, 0, &rules) {
|
||||||
|
1
|
||||||
|
} else {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.fold(0, |x, y| x + y);
|
||||||
|
|
||||||
|
println!("Answer1: {}", count1);
|
||||||
|
|
||||||
|
rules.insert(8, Rule::NoneTerminal(vec![vec![42], vec![42, 8]]));
|
||||||
|
rules.insert(11, Rule::NoneTerminal(vec![vec![42, 31], vec![42, 11, 31]]));
|
||||||
|
|
||||||
|
let count2 = input_lines
|
||||||
|
.iter()
|
||||||
|
.map(|l| {
|
||||||
|
if (true, "") == match_rule(l, 0, &rules) {
|
||||||
|
1
|
||||||
|
} else {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.fold(0, |x, y| x + y);
|
||||||
|
|
||||||
|
println!("Answer2: {}", count2);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use crate::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_read() {
|
||||||
|
assert_eq!(read_rule("5 : \"a\""), (5, Rule::Terminal('a')));
|
||||||
|
assert_eq!(
|
||||||
|
read_rule("3 : 2 4 | 1 2 3 | 5 7"),
|
||||||
|
(
|
||||||
|
3,
|
||||||
|
Rule::NoneTerminal(vec![vec![2, 4], vec![1, 2, 3], vec![5, 7]])
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_example() {
|
||||||
|
let rule_str = r#"0: 4 1 5
|
||||||
|
1: 2 3 | 3 2
|
||||||
|
2: 4 4 | 5 5
|
||||||
|
3: 4 5 | 5 4
|
||||||
|
4: "a"
|
||||||
|
5: "b""#;
|
||||||
|
let rules: HashMap<u32, Rule> = rule_str.lines().map(|l| read_rule(l)).collect();
|
||||||
|
|
||||||
|
let inputs = r#"
|
||||||
|
ababbb
|
||||||
|
bababa
|
||||||
|
abbbab
|
||||||
|
aaabbb
|
||||||
|
aaaabbb
|
||||||
|
"#;
|
||||||
|
|
||||||
|
let in_lines = inputs.lines().map(|l| l.trim());
|
||||||
|
let mut count = 0;
|
||||||
|
for line in in_lines {
|
||||||
|
let (matched, rest) = match_rule(line, 0, &rules);
|
||||||
|
if matched && rest == "" {
|
||||||
|
println!("Matched: {}", line);
|
||||||
|
count += 1;
|
||||||
|
} else {
|
||||||
|
println!("Not matched: {} {:?} {:?}", matched, line, rest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_eq!(count, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_loops() {
|
||||||
|
let rule_str = r#"42: 9 14 | 10 1
|
||||||
|
9: 14 27 | 1 26
|
||||||
|
10: 23 14 | 28 1
|
||||||
|
1: "a"
|
||||||
|
11: 42 31
|
||||||
|
5: 1 14 | 15 1
|
||||||
|
19: 14 1 | 14 14
|
||||||
|
12: 24 14 | 19 1
|
||||||
|
16: 15 1 | 14 14
|
||||||
|
31: 14 17 | 1 13
|
||||||
|
6: 14 14 | 1 14
|
||||||
|
2: 1 24 | 14 4
|
||||||
|
0: 8 11
|
||||||
|
13: 14 3 | 1 12
|
||||||
|
15: 1 | 14
|
||||||
|
17: 14 2 | 1 7
|
||||||
|
23: 25 1 | 22 14
|
||||||
|
28: 16 1
|
||||||
|
4: 1 1
|
||||||
|
20: 14 14 | 1 15
|
||||||
|
3: 5 14 | 16 1
|
||||||
|
27: 1 6 | 14 18
|
||||||
|
14: "b"
|
||||||
|
21: 14 1 | 1 14
|
||||||
|
25: 1 1 | 1 14
|
||||||
|
22: 14 14
|
||||||
|
8: 42
|
||||||
|
26: 14 22 | 1 20
|
||||||
|
18: 15 15
|
||||||
|
7: 14 5 | 1 21
|
||||||
|
24: 14 1"#;
|
||||||
|
let mut rules: HashMap<u32, Rule> = rule_str.lines().map(|l| read_rule(l)).collect();
|
||||||
|
rules.insert(8, Rule::NoneTerminal(vec![vec![42], vec![42, 8]]));
|
||||||
|
rules.insert(11, Rule::NoneTerminal(vec![vec![42, 31], vec![42, 11, 31]]));
|
||||||
|
|
||||||
|
let inputs = r#"
|
||||||
|
abbbbbabbbaaaababbaabbbbabababbbabbbbbbabaaaa
|
||||||
|
bbabbbbaabaabba
|
||||||
|
babbbbaabbbbbabbbbbbaabaaabaaa
|
||||||
|
aaabbbbbbaaaabaababaabababbabaaabbababababaaa
|
||||||
|
bbbbbbbaaaabbbbaaabbabaaa
|
||||||
|
bbbababbbbaaaaaaaabbababaaababaabab
|
||||||
|
ababaaaaaabaaab
|
||||||
|
ababaaaaabbbaba
|
||||||
|
baabbaaaabbaaaababbaababb
|
||||||
|
abbbbabbbbaaaababbbbbbaaaababb
|
||||||
|
aaaaabbaabaaaaababaa
|
||||||
|
aaaabbaaaabbaaa
|
||||||
|
aaaabbaabbaaaaaaabbbabbbaaabbaabaaa
|
||||||
|
babaaabbbaaabaababbaabababaaab
|
||||||
|
aabbbbbaabbbaaaaaabbbbbababaaaaabbaaabba
|
||||||
|
"#;
|
||||||
|
|
||||||
|
let in_lines = inputs.lines().map(|l| l.trim());
|
||||||
|
let mut count = 0;
|
||||||
|
for line in in_lines {
|
||||||
|
let (matched, rest) = match_rule(line, 0, &rules);
|
||||||
|
if matched && rest == "" {
|
||||||
|
println!("Matched: {}", line);
|
||||||
|
count += 1;
|
||||||
|
} else {
|
||||||
|
println!("Not matched: {} {:?} {:?}", matched, line, rest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_eq!(count, 12);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue