2020/19/1
This commit is contained in:
parent
022b2a447b
commit
a1bf3c288b
|
@ -0,0 +1,626 @@
|
||||||
|
25: 53 116
|
||||||
|
122: 116 92 | 53 53
|
||||||
|
100: 53 73 | 116 125
|
||||||
|
111: 67 116 | 91 53
|
||||||
|
71: 116 58 | 53 78
|
||||||
|
55: 116 54 | 53 21
|
||||||
|
123: 53 97 | 116 108
|
||||||
|
104: 56 116 | 125 53
|
||||||
|
19: 125 53
|
||||||
|
56: 116 116 | 116 53
|
||||||
|
60: 116 121 | 53 59
|
||||||
|
75: 53 20 | 116 124
|
||||||
|
6: 53 131 | 116 33
|
||||||
|
62: 53 53 | 116 116
|
||||||
|
101: 116 127 | 53 26
|
||||||
|
128: 116 125 | 53 93
|
||||||
|
34: 53 28 | 116 125
|
||||||
|
65: 63 116 | 135 53
|
||||||
|
50: 32 53 | 76 116
|
||||||
|
2: 53 10 | 116 132
|
||||||
|
133: 28 53 | 131 116
|
||||||
|
85: 53 131
|
||||||
|
125: 116 53
|
||||||
|
118: 87 116 | 3 53
|
||||||
|
135: 73 53 | 125 116
|
||||||
|
28: 53 53
|
||||||
|
110: 116 122 | 53 56
|
||||||
|
91: 5 53 | 74 116
|
||||||
|
73: 92 116 | 53 53
|
||||||
|
80: 15 116 | 109 53
|
||||||
|
124: 128 116 | 17 53
|
||||||
|
87: 92 53 | 53 116
|
||||||
|
43: 116 27 | 53 37
|
||||||
|
66: 46 53 | 93 116
|
||||||
|
106: 116 77 | 53 83
|
||||||
|
137: 72 116 | 104 53
|
||||||
|
93: 116 116 | 53 116
|
||||||
|
129: 92 103
|
||||||
|
12: 116 56 | 53 131
|
||||||
|
45: 53 132 | 116 12
|
||||||
|
102: 65 116 | 2 53
|
||||||
|
24: 116 101 | 53 95
|
||||||
|
14: 116 84 | 53 29
|
||||||
|
57: 93 116 | 56 53
|
||||||
|
70: 108 116 | 100 53
|
||||||
|
51: 116 1 | 53 68
|
||||||
|
26: 73 53
|
||||||
|
15: 116 93 | 53 125
|
||||||
|
42: 53 134 | 116 106
|
||||||
|
79: 116 33 | 53 122
|
||||||
|
5: 116 125 | 53 3
|
||||||
|
74: 53 122 | 116 73
|
||||||
|
18: 93 53 | 87 116
|
||||||
|
20: 47 53 | 17 116
|
||||||
|
114: 116 85 | 53 118
|
||||||
|
37: 53 73 | 116 87
|
||||||
|
47: 116 73 | 53 125
|
||||||
|
107: 116 3 | 53 46
|
||||||
|
69: 53 25 | 116 125
|
||||||
|
32: 53 28 | 116 93
|
||||||
|
76: 3 53 | 125 116
|
||||||
|
38: 92 33
|
||||||
|
119: 116 39 | 53 80
|
||||||
|
8: 42
|
||||||
|
21: 125 53 | 125 116
|
||||||
|
58: 75 116 | 119 53
|
||||||
|
64: 116 44 | 53 113
|
||||||
|
68: 90 53 | 45 116
|
||||||
|
1: 23 116 | 60 53
|
||||||
|
53: "a"
|
||||||
|
81: 73 53 | 33 116
|
||||||
|
86: 116 129 | 53 35
|
||||||
|
90: 110 116 | 13 53
|
||||||
|
82: 53 93 | 116 25
|
||||||
|
95: 99 116 | 66 53
|
||||||
|
27: 116 56 | 53 3
|
||||||
|
120: 116 51 | 53 40
|
||||||
|
126: 116 96 | 53 52
|
||||||
|
116: "b"
|
||||||
|
84: 116 123 | 53 49
|
||||||
|
134: 116 61 | 53 14
|
||||||
|
78: 116 102 | 53 86
|
||||||
|
96: 130 53 | 98 116
|
||||||
|
10: 87 116 | 33 53
|
||||||
|
88: 53 116 | 116 92
|
||||||
|
40: 126 53 | 24 116
|
||||||
|
127: 56 116
|
||||||
|
59: 87 53 | 3 116
|
||||||
|
11: 42 31
|
||||||
|
41: 116 137 | 53 16
|
||||||
|
44: 116 22 | 53 79
|
||||||
|
109: 88 53 | 87 116
|
||||||
|
49: 136 116 | 94 53
|
||||||
|
113: 107 116 | 81 53
|
||||||
|
77: 116 64 | 53 36
|
||||||
|
3: 53 116 | 53 53
|
||||||
|
9: 133 53 | 112 116
|
||||||
|
98: 92 93
|
||||||
|
117: 3 92
|
||||||
|
39: 53 19 | 116 21
|
||||||
|
16: 6 116 | 117 53
|
||||||
|
132: 131 116 | 125 53
|
||||||
|
63: 116 122 | 53 33
|
||||||
|
22: 131 116 | 56 53
|
||||||
|
89: 116 125 | 53 131
|
||||||
|
115: 55 53 | 50 116
|
||||||
|
99: 116 33 | 53 93
|
||||||
|
92: 116 | 53
|
||||||
|
121: 53 73 | 116 56
|
||||||
|
13: 73 92
|
||||||
|
103: 53 3 | 116 62
|
||||||
|
83: 111 116 | 41 53
|
||||||
|
61: 105 116 | 115 53
|
||||||
|
130: 56 92
|
||||||
|
136: 33 116 | 125 53
|
||||||
|
30: 53 76 | 116 7
|
||||||
|
94: 92 87
|
||||||
|
52: 97 116 | 18 53
|
||||||
|
7: 116 28 | 53 46
|
||||||
|
97: 25 53 | 33 116
|
||||||
|
35: 89 116 | 82 53
|
||||||
|
72: 53 131 | 116 87
|
||||||
|
48: 34 116 | 38 53
|
||||||
|
54: 116 46 | 53 131
|
||||||
|
131: 116 116
|
||||||
|
23: 116 4 | 53 57
|
||||||
|
31: 116 71 | 53 120
|
||||||
|
29: 116 30 | 53 114
|
||||||
|
108: 116 25 | 53 46
|
||||||
|
33: 92 92
|
||||||
|
4: 131 116 | 3 53
|
||||||
|
36: 70 116 | 9 53
|
||||||
|
67: 69 116 | 117 53
|
||||||
|
0: 8 11
|
||||||
|
105: 48 116 | 43 53
|
||||||
|
46: 116 53 | 53 116
|
||||||
|
17: 93 116 | 122 53
|
||||||
|
112: 122 53 | 3 116
|
||||||
|
|
||||||
|
babbbbabaabaaabbbbbaaabbbbababba
|
||||||
|
ababaaaaabbbabbbbbabbbba
|
||||||
|
aabbaabaabbababaababbaba
|
||||||
|
bbbbabaaabaaabbbbbbbbaab
|
||||||
|
babbbabababaabbaaaabbbba
|
||||||
|
bbaabbababbaaabaaaababbbabaaaaaaaaaaababbaabbbbaaaaaaabaabababbbbabbbaababbbaabbbbababab
|
||||||
|
babbabbabbaababbbbbbbaab
|
||||||
|
baababababbaababaaabaaab
|
||||||
|
aababaababbaaaabbbababbbbbbbbbaabbbbabbbbbabbababbababaabaabaaaabbabaaaaabbaaaaa
|
||||||
|
baabbbbaaabbabbbababbbba
|
||||||
|
baabbabaaaaababbaababbbbaababaaabbbbbaaabababaab
|
||||||
|
babbabbabaabbabbaabbabaa
|
||||||
|
baaabbbbabbaaabbaaaaaabbbbabaaba
|
||||||
|
abababbaaabaabbbabbbaaaa
|
||||||
|
ababababbbbaaaababaabaaa
|
||||||
|
baaababbbbbabababbbaaabaaaabaababaaabbbbaaabbbbaabbaabbbabbbaaab
|
||||||
|
babaaabaabbabaababbabaaaabbbaaaa
|
||||||
|
ababaaabaabaabaabbbbababbbaabababaababaaabaabbbb
|
||||||
|
abbaaaabaabababaabaabbaa
|
||||||
|
baaaaaabaaaaababbababaaa
|
||||||
|
aabaaabbababaabbbaaabbbbaabbbaaa
|
||||||
|
baaabbbaaaaaaaaaaabbbbba
|
||||||
|
abbbbbabbbbabaabaabbbbabbbaabaabaabbbbbb
|
||||||
|
baabbbababababbabbaaaaaaabbbaabbbababbbaababaaaaaabbbbaa
|
||||||
|
bbbbbbbbabababaabaaabbbabbaaabbbaaaaaabaabbaabbabbabbbba
|
||||||
|
abaabbabaabaaaaabaabaaaa
|
||||||
|
aabababbababaaaaabbbbbaa
|
||||||
|
bbbabbaaabaaaababababbbabbbaabab
|
||||||
|
aabababbaabbbababaabaaab
|
||||||
|
aabaaababaabbabaaabaaaab
|
||||||
|
abbbabaabbaabbabaaabbbba
|
||||||
|
baaabbbbaababbabbbbabbaabaabbbbbabbbbabbbabbaaba
|
||||||
|
bbaaababaabaaabbabbbbbabbabaaabbbbaabbbbaabbbaaabbabbabb
|
||||||
|
baabaabaaababbbbbbaabbaa
|
||||||
|
bbaaabbbbababbabaaaababa
|
||||||
|
bbabbbbabaaaaabbbaaaaababbbbbaaabaababbbbabbabaabaabbabaabbababbaaaaaaabbbabaaabbbbbbabb
|
||||||
|
abaabbbababaaaabaabbbbbbbbabbbab
|
||||||
|
ababaaaaabababbabbbaababbaaabbaaabbaaaba
|
||||||
|
bbabbaabababbabbbaaaaaabaaabaabb
|
||||||
|
baabaaaaababbbbabbabbabbbababbaa
|
||||||
|
aaaaaaaabaaabaabababaaba
|
||||||
|
baabbababaaabaaaaabaabaaaababbbbaaabbbbb
|
||||||
|
abaaaabaabbababaababbbab
|
||||||
|
bbaaabababbababbababbbbb
|
||||||
|
baababbaaaabababbaaaaaabbaaaabbb
|
||||||
|
bbbbbbbaabababbabbabbbba
|
||||||
|
bbaaaaaaaabaabbbabaabbaa
|
||||||
|
abbabababbaaaaababbbabbbbbaaaaaaababaaaababaaaba
|
||||||
|
abaababbaabaaaaaaabaaaab
|
||||||
|
abababaabbaaabbaabababbaaabbabaa
|
||||||
|
babbabbbbbbbbbbabbaabbaa
|
||||||
|
bbabbbaaaabaaababbaaababbaaabaabaabbbaababbaabaaaabbbaaaabbaabbbaabbbbba
|
||||||
|
abbbaabbababaaabbababbbaabbbbababababaaa
|
||||||
|
bbaaabbabbbaabaaabbbabaaaaababbbbaababbb
|
||||||
|
baabaaaabbaaabbaaabbaababbbbbbababbbabbbbbbabbba
|
||||||
|
abaabbbaabaababaaaabbabb
|
||||||
|
bbbbabaaaabaabbbbbbbbaab
|
||||||
|
bbaaaaabababbabbaababbab
|
||||||
|
babbaabaabbbbaaaaabbbbbb
|
||||||
|
baaabaabbbbbaaaaabbbaaab
|
||||||
|
aaabbaabbabbabbbbabbbbba
|
||||||
|
aabbababaabababaaabbabbbbbbbbbbaaaabbaaaababbabbabaaabaabbababaabbbbbabbbabbbbabaabaabaabaababba
|
||||||
|
ababaabbaabbbabababbabab
|
||||||
|
bbbabbbabaaabbbaaaabbbab
|
||||||
|
aabababbaabaabaaabaaabbbaabbbaaa
|
||||||
|
aaaaaabaabbabbaabbbbaaaaaabbaabbaaabaaaaabbbbaabaaaabbbaababbbbbababbaaa
|
||||||
|
ababaabbabababbabababbbaaabababaaabbbbaaaabbbabb
|
||||||
|
babbabbaabbabbbaababaaba
|
||||||
|
abbbbaaabbbbbbbabbababbbbaabbaab
|
||||||
|
babbaabaabbbbabbaaaaaaabaabbabba
|
||||||
|
bbaaababbaabbabbbbbbabbbbabbabaabbabaaaa
|
||||||
|
aaabaabaaabbababbababaab
|
||||||
|
bbaaabbbababaabbaabaaababaabbbbbbbabbaaa
|
||||||
|
abbabbbabaaabbbbbabbbabaaabbaabababbbbbaabbbaabababaabba
|
||||||
|
aaaaaaaaabbabbaabbabbbaaaabababbbaaabaababaabbaabbababab
|
||||||
|
aabbbabababbabaaaaabababbabbbbba
|
||||||
|
abbababbbbbbabbaaabbbbbb
|
||||||
|
bbbbbbbaabaaaaababbaabbb
|
||||||
|
aabababbabaaabbaababbaaabbbbababbbabbabbbaaababbabbbbbabaaabaabaabbabaabaaabbaaa
|
||||||
|
abbbbbabbbbbabaaabaabaab
|
||||||
|
abbabbbabbbbabababbbbbba
|
||||||
|
abababbabaaaaaabbbabaaaa
|
||||||
|
aaaaababbbbbaabbaaabaabaabaaabababbabbabbbbaabbb
|
||||||
|
baabbbbabbbaaaaababaaabb
|
||||||
|
bbaaaababbaaaabaababaaaaaabbbaabbbbabaaa
|
||||||
|
babbbbbbbabbbaaabababaabbabbbaabbbaaabaa
|
||||||
|
aabaaabbaabbaabbbababaab
|
||||||
|
baaaabbbbbabbbababbaababbabaaabaabababbaabaabbabbaaaaabaabbaaabb
|
||||||
|
abababbabaabbbbaaaaababa
|
||||||
|
aabbbbabbbbbaabaaaabbaabbbabaabababbbbaabbaabbabbaabbaaa
|
||||||
|
aaabaabaaabbababbabbbababaabbabb
|
||||||
|
bbbaaababbbbbbbbbbbababbabbbaaab
|
||||||
|
bababbaaaaaabbbbbabaaaab
|
||||||
|
bbaaaabaaaaaaabababbbabaaaaabaaa
|
||||||
|
aabbabbbbbaaababbbababaa
|
||||||
|
abbaaaababbbbbabaaaaabbb
|
||||||
|
bbaaaaaabbbaabababaabaab
|
||||||
|
ababaabbabaababbbbabbaabbbbbbbbbaaabbababbabbabbabbaabaa
|
||||||
|
bbaabbbaabababbaaaababbb
|
||||||
|
bbbbabbaaabaabaababaaaaa
|
||||||
|
bbaabbababbbbaabbababbbabbbbababbbbaaabbbaaaababaababbbababbaabb
|
||||||
|
bbaaaababababbabbabbbbaaabbbaaab
|
||||||
|
babaababaaabbaabbbababaa
|
||||||
|
ababababababbaabbabababa
|
||||||
|
abbabbbbaaaaaabbabbbabaababaabbaabbbababbbbaabaaaaaaaaabbbaabbba
|
||||||
|
bbbaaabaaaaaaaaaababbabbbbaabaab
|
||||||
|
abbbaabbabbbbaaaaaaabaab
|
||||||
|
abbbbbbbaaabbbbaaaababbaaaaabbabbababaabbbaabbabaabababa
|
||||||
|
aababbaaabaababbababaabb
|
||||||
|
babbaaabaabbabbbbbabbaaaaaaabaab
|
||||||
|
aabababaabbbbabbaaaaabaaaabaabababbaaaba
|
||||||
|
baabbabbbbaaabababaabbbb
|
||||||
|
abbaaabbbbbabaabbbbbaabbabbbbaabbaabaaabaabaaaab
|
||||||
|
bbaabbbabbbbbabbbababbbb
|
||||||
|
babaababbbbababaabaaaabbbabbabaabaabababaabababb
|
||||||
|
bbababbabbaabbbbbbbbabbbabbaabaaabbbaaaabbaabaababaaaaaa
|
||||||
|
babbbbabbbbbbbaaababbbba
|
||||||
|
abbbbababbbaaaaaaaabbbab
|
||||||
|
baaaaaabaabbbaabbabbbabbabbaaabaababbaaaabbaaababbaaaaaabaaaaaabbaababababaaabbbabaabaaa
|
||||||
|
aabaabbbabbbbaaaaababbaaababaabbabbbabbababaabba
|
||||||
|
aabababbbbbbabbaabbbbbbb
|
||||||
|
baabababbbaaaaababbbbaabbabbabbbaaababbaaaabaaab
|
||||||
|
baaabbbababbaabaabbabaaa
|
||||||
|
abaababbabbbbaabaababbbbbbbaaaab
|
||||||
|
aababaababbbabbbababbaaa
|
||||||
|
baaabbbbbbbbabbabbbbbaab
|
||||||
|
bbabbaabaaabbbaaaabbbaaa
|
||||||
|
bbabaabaababbaababbbabbbabaabbabbaabbaab
|
||||||
|
bbbbbbbaaabbaabaababaaba
|
||||||
|
aababababaaabbbaababbbaa
|
||||||
|
babbbbbabbbababbaaababaaaababbaaaaabbbabaaababaaabbbbbbbbbbaaaabbaaabbaabaaaababbbaaaaab
|
||||||
|
aababbaaabaaaababbbbabaaabbbbabaabbbbabbbabbbabb
|
||||||
|
bbbaabaaaabbbbabaababbaabbabaababbaabaaaababbbba
|
||||||
|
abaabbbaabbbaaabbabaaaab
|
||||||
|
bbbbbbbbaaabbabababaaabbbbaaaabbbabaaabb
|
||||||
|
baaaaabbbaaaaabbabbaaaaa
|
||||||
|
ababaaaaaabbbaababbaabba
|
||||||
|
bbaaaaaaaaabbababaaaaaaaaabaaaab
|
||||||
|
bbbabababbbbabbaabaaaaaa
|
||||||
|
bbaaaababaaabbbabbbabaabaabaabab
|
||||||
|
bbbabbbaaabbbbaaabbaabbaabaabbbaaabbbbba
|
||||||
|
babbabbabbbbbbbaaababababaaabaabbaaaaaabaaaaabaaabbbbbbaaabbbbbabbaabbaa
|
||||||
|
ababbabbaabbaabbbaaaaabbaababaaaabbabbab
|
||||||
|
abbabbbbbaabbbbbbabaabbb
|
||||||
|
abbbaabbaaaaababbbaabbabaababaabaababaababbbbbbbbbaabaab
|
||||||
|
baaaaaaabbbabbbaaaabbbba
|
||||||
|
bbaaabbbababbbabbaaaabaabaabbabbbbbbbbbbabbabbabbababababbaababbbbabbaba
|
||||||
|
bbbbababbaabbababbabbbab
|
||||||
|
baaabaabaababbbbbbabbbbb
|
||||||
|
abbbbababbbababbbbabbababbabaabbbbaaaabb
|
||||||
|
bbaaaaaaabbbabbbabbbbbaa
|
||||||
|
bbabaabaabbabbaaababbbaa
|
||||||
|
aabbbaababaabbabbabaabba
|
||||||
|
baaabbbaaaabaababbaaaabb
|
||||||
|
babbbbaabbbbaabaabbbaaaa
|
||||||
|
abbaabbbaababbabbaaabbababbbabab
|
||||||
|
aaabaaaaaabbabababbbbabbbbabbbbbaaabaaab
|
||||||
|
babbbaababbaaaaaaabaaababbaaabbb
|
||||||
|
bbbbaababbaaaaaabbbbbaab
|
||||||
|
bbaaaaaaabbbbababaabaaab
|
||||||
|
babaababbabbabbbaabababaabaabaab
|
||||||
|
abbbabbbabbabbaaaababaababbabaab
|
||||||
|
bbbbaaaaaabbaababbabaaabbbabaaaabbabbabb
|
||||||
|
aaabbaabbaaabbbbbbbbbaaa
|
||||||
|
abbbbaabaabbbabaabaaabababaabbba
|
||||||
|
babbabbabaaababbbbaaabbababaabaabaabbaababaabaaa
|
||||||
|
babbabbaaabaabbaaaaaabaaabbbaabaabbaaaaabbbaaabaaababbaabbbbaabaabbbbaba
|
||||||
|
aabaaabbabbaaabbbabbbabb
|
||||||
|
bbaaaaaabaabbbbaabbbaaab
|
||||||
|
bbbbaaaabbbaaabaabbbbabbbababaaa
|
||||||
|
abbbabaabbabbaabbabbbbba
|
||||||
|
aaaaaaabaababbbbababbbab
|
||||||
|
abbbababbbabbbbabbbbbabbbabaaababbababaabbbaaaab
|
||||||
|
babaaabaaabbbaaaaabbbbbbabbaaaaabaabaabbabbbababaababaaaaaabbaaababbbabbbaaababb
|
||||||
|
abbababbbaaaaaabbabaaabb
|
||||||
|
bbabbababbabbaabbababbbb
|
||||||
|
babbbbaaaabbaaababbbbaaaaabbababaaabbaabbbbbaaab
|
||||||
|
aabbaabbabaaaabbaabababaabaaaabaaaabaaaaaaabaabababababa
|
||||||
|
abababbaaaabaabaaaababbb
|
||||||
|
bababbabaaabbbaaababbbbb
|
||||||
|
baaaababbabbbabababaabba
|
||||||
|
abbbbabaaaaababbbbbaabbabaaaabbaaaababba
|
||||||
|
aabbababbbaababbabaababa
|
||||||
|
babbaaabbbaabaabbbaaabbabaaaaabaabbabbaabaabbaabbbbbababbbbabbbb
|
||||||
|
aaabbbaaabbabbabaabaaaaaaabaaaaa
|
||||||
|
aababbaaaababbbbabbbaaaa
|
||||||
|
baaabbbabababbbaaabaabba
|
||||||
|
bbabbaabbbbabaaabaaabbbbbbbaabababbaabbbbabbabbaaabaaabb
|
||||||
|
baabaabaababababaaabaabb
|
||||||
|
abbababbbbbbababbbaabaab
|
||||||
|
abababbabababbabbaaaaaab
|
||||||
|
bababbbaaabaaabababababb
|
||||||
|
aabbabbbbaaababbbbabbaaa
|
||||||
|
abbaaaababbabababbaabbbabbaabaab
|
||||||
|
bbbabbbaababaaaabbbaaabababbaaaaababbabaaabbabaaaaaaabba
|
||||||
|
baabaabaababaaabbbbbababbabbabbabababbbb
|
||||||
|
bbbbbaaabbaababaabbbbbaaababaaba
|
||||||
|
bbaaaabaabbaaaabbbababbbbbbababaabbabaababbbaaaaabaabaaa
|
||||||
|
bbabaaaaababbbbbbababbbbbbbababbbabbbbab
|
||||||
|
ababababbaaabaabbbbaababaababababaabbbaaaaababbbbabaaabb
|
||||||
|
babbbabaaabbabbbaababbba
|
||||||
|
aaaaaaaababbbababbaababbabbbaabb
|
||||||
|
aababababbaaaaaabaaaaaba
|
||||||
|
aaaaaaabbaaaabaaaababaabbbabbabb
|
||||||
|
bbabbabbbbbbabbaabbbaabaababbbaabaaabababaabbbbbbabbbbbb
|
||||||
|
bbbaabbaabaaaabaabaaabaa
|
||||||
|
babaabbabbabbaaabaabaaaaabaabaaa
|
||||||
|
aababababbbbaabaabbbbbaa
|
||||||
|
baabababbaabaabbaaaaaabbaaaaabababbabbaaabbabbaaaaaaabbb
|
||||||
|
bbabaabaababbabbbabbaabb
|
||||||
|
abaaaababbbbbbbabbabaaaa
|
||||||
|
bababbabbbbbabaababbbbbb
|
||||||
|
aabbabbbbbbbabababbabaab
|
||||||
|
abbababababbabaaaabbbaaa
|
||||||
|
aabababbabbaabbbbbbaaaabbbbbaaaa
|
||||||
|
abbbabbbaaaaaaabbaabbbbb
|
||||||
|
bbbbbbbaaabaaababbbbababbabaaabaabababbb
|
||||||
|
aaaababbaaaaaabaaabaabba
|
||||||
|
abaaaabbbbbbababbbababbbabaabaaababaabaa
|
||||||
|
bbabbbaaababbabbbbbaaaab
|
||||||
|
aababaaabaabbbbbbbbabbbb
|
||||||
|
aabbbaababbbbbabbababaaa
|
||||||
|
aabbaaababbaababbbbbababbbbbababbbbbaabbbaabbbbbabaabbaabbbabbbb
|
||||||
|
baaabbbbbbbaaabaabaabaab
|
||||||
|
baaabbaaaababaabbabaaaaa
|
||||||
|
aaabababaababbabaababababbbbbbaabbabbbaabaabaabbaaabaabaababbbbb
|
||||||
|
aabaaabbbaaabaaabbbabaab
|
||||||
|
bbbaabbaababbabababbbbbababbbabbbbaabbbbbbabaaaaaaaabbab
|
||||||
|
aabbaaabbbaabbabaaababbb
|
||||||
|
bbbbabaabbbabbbaaabaaaab
|
||||||
|
aabbaabbbabaababbaababaa
|
||||||
|
aaaaaaaababbbbababaaaabaaabababbabaaababababababaaabbabbababbbbbaaaabbab
|
||||||
|
babbbbabbababbbabaabbaaa
|
||||||
|
aabbaaabbbaababbbbbbabaaababaabbbabaaabaaabbbabbababbaba
|
||||||
|
bbbaaaaabbaaabababbabbbb
|
||||||
|
bbbbabbababbaaaabbbabbbaabbaabbbbbaabaaa
|
||||||
|
aaaababbabbaababbabababb
|
||||||
|
bababbabaaabaaabbaabbbaabaaababa
|
||||||
|
babaababbaaaaaabababbaabbababbaaaaababbb
|
||||||
|
aabbabababaaabbababaaaba
|
||||||
|
bbbaaabbabaababbbababbaa
|
||||||
|
abbabbbaabbaababbabaabba
|
||||||
|
baaababbaaaaaabaaabbbaaa
|
||||||
|
baaaaaabaabababbaaabbaabababbaababbaaabbaababbba
|
||||||
|
abbbbabbbbabbabaaaaaaabbbabbaabb
|
||||||
|
abbbbaabaaabaababbbababaaabbbaabbabbabbabbabaaababbabbbbbaababaa
|
||||||
|
bbbabababaabbaaabbaaababbabaaaaabbaaaaaa
|
||||||
|
abbbbaababbbabbbaabaaaab
|
||||||
|
bbababaaaaaabababaaabbbbbbabbaaababbabbabaaaababaaaabababbabaabaabaabaab
|
||||||
|
bbbabbaabbbbabababaaabaa
|
||||||
|
abaaabbabaaaabaaaaabbabaababbaba
|
||||||
|
babbaabaabbabbaabaaaaaba
|
||||||
|
aababababbabbbaaabbaabba
|
||||||
|
bbbabaabbaaabbbabbabbaaa
|
||||||
|
bbbababaaabbabababababbb
|
||||||
|
aabbbbababaaaabbbaabbabbbaabbaab
|
||||||
|
bbaaaababababaababbbaaab
|
||||||
|
abbbaabbaaaaabbaaabaaaabbabaaabaaaaabbabbaababaa
|
||||||
|
babbabaabababbabbbbbabbbaabbbaba
|
||||||
|
bbbbbbbaabbbaabbbbbabbab
|
||||||
|
abaabbabbaabaababaabababbbbaaababababbaaaabbbabbabbaabbb
|
||||||
|
abababbabbaaaaabaabbabba
|
||||||
|
abbabaaababbababaabaababbabaaaaabbaaabaabbabbaaa
|
||||||
|
babbabaabbababbbbbabbaaa
|
||||||
|
aabaaabaababaaaaaaaabbba
|
||||||
|
bbaabbbabbbbaaaabaabababaabaaabaaabbabba
|
||||||
|
abaaaabaaabaaabbabbabbbb
|
||||||
|
abaaaaabaaaaaaaabaaaaaba
|
||||||
|
aaabbabababbbbaaaaaabbbb
|
||||||
|
bbbbaabbabaaabababaaabbababbbabaababbaabbabaabba
|
||||||
|
bbbabbbaaabbbababbaaabbbbbbabbabbbbbbabbabbbbbbb
|
||||||
|
abaaaababaaabaabababaaba
|
||||||
|
baaabaaabbabbbaaaabbaababaaaabba
|
||||||
|
bbbbabbbbbaabbbabaabbbbb
|
||||||
|
ababbaababbbbabaababaaaaaabbaaabaaaaabbb
|
||||||
|
baaaababaaaaababbababbaa
|
||||||
|
aabaababbabbaabbbaabbababaabbaabaaabaaabbabaabbababaaabbabbbaaab
|
||||||
|
abbabbaaaaaaabbabaaaabbaababbaaa
|
||||||
|
bbbbaabaabbbbabbaabbabbbaababbbbbabaaaba
|
||||||
|
bbbaaabbbaaabbbaaaababbb
|
||||||
|
baaabbbabbbaaaaabbbaaabaaabababbabaaabbababbabab
|
||||||
|
aabaaabbabaaaaababbbaaab
|
||||||
|
bbaaaaabaabbabababbbbaaababbababaabaabba
|
||||||
|
bbaaababbbbbaaaabababbbaaaabbabb
|
||||||
|
bbababbbbbabbababbbbabaabbbbaaaaaabbbaabbabbabbbbbbabbbb
|
||||||
|
bababbbaaaabbaabaaaabbba
|
||||||
|
ababbaababaabbabaaaaabba
|
||||||
|
aaaaaabaaaabbbaaababbaba
|
||||||
|
babbbbaaabbbabbbbbbabbab
|
||||||
|
bbbbbbbabbbbabbbabbaaaba
|
||||||
|
baaabaaaaabbaabbabaaababaaababbb
|
||||||
|
baabaabababbabbbaabbbabb
|
||||||
|
bbaaaaaaabbbbabbabaabbabbabbaaabaaaababaaaaaabba
|
||||||
|
baaaaaaaaaaaaaaaaaaababa
|
||||||
|
abbaababaabbbbabaaababba
|
||||||
|
bbbbababaabbbaabaababbaaaaabaaab
|
||||||
|
aababaabaabaababbbbbaaaaababaaaaabaababbbabbbbaaabaaaaabababbbab
|
||||||
|
babaababbbaabbabbbaabbaa
|
||||||
|
baabbababaaaabaabababbaa
|
||||||
|
bbaaabbabbaaabbbbbabbabb
|
||||||
|
baabbbbabbaaaabaaaabbbba
|
||||||
|
bbababbbbaabbbbaaaaabaab
|
||||||
|
aaabababaaaaaabbabaaaabababbbbbb
|
||||||
|
bbbbbbababaaabbbbaaaaaaabbaabbaabbbbbaabaabaaabbaaabbbbabbaabaabbbbaaabbabbbaabb
|
||||||
|
aabbbaaababbabbbbaabbbbababaaaaababaaaaaaaababbbaabababb
|
||||||
|
bbabbaabbabbaaaaaaaaabba
|
||||||
|
abbabbaabbaabbabaaabaabaabbaaaaaaabaaaabbbaabaabaabbabaa
|
||||||
|
abaababbaabbaaabaaabaaaabbaaaabaabaaababaababaaabbbabbababaaabaaabbaabbabbaaabaa
|
||||||
|
bbaaaaabbbbbabaaaababbaababbabbbaaabbabababbababbabbbbba
|
||||||
|
babbbbaaaababbaaaabaabbbbaabbbaababbbbbb
|
||||||
|
aaaababbbbbbbbaabbbabbbb
|
||||||
|
bbaaababbbaaabbaaabbbabb
|
||||||
|
abbaaabbbabbaabababaabbb
|
||||||
|
aabababbabbbbbababbbaabbaaabaaaaabbabbaababaabaabaaaaabaaababbbaababbbab
|
||||||
|
babbaaaaaabbbbabbbbbbbaabaabbbabbbbbaaab
|
||||||
|
babbabaaabbaaabbbabaaaaa
|
||||||
|
aaaaaaabababababbaababbb
|
||||||
|
ababaabbbabbaaaaabbbbbbb
|
||||||
|
aabbaaabaabbbabaaaababba
|
||||||
|
baabbabaaabaabaaabbaaaaa
|
||||||
|
abaaaabaaabbbaabbabaabaa
|
||||||
|
bbaaabbbbaaabbbaababbbbb
|
||||||
|
baaababbbbbaababbbabbaaa
|
||||||
|
ababbbbbabbababbaaabaabbaabbbaaaaabbaaabbbbbababbaaaaabaaabbbbaaaabbabaaaababbbbabaabaaa
|
||||||
|
bbbbabbbababababbaabbaab
|
||||||
|
ababbaabbabbbbaababbabbabaaabbaabaaabaaabaaaabbbababaababaababbb
|
||||||
|
baaaababbabbbbabbaabbaab
|
||||||
|
bbaabbbaabaaabbbbababbaa
|
||||||
|
bbabbbbaabbaaabaabbaabbaabaabbbb
|
||||||
|
bbbaaaaabbaababbbbaabbababaababbabbaaaba
|
||||||
|
aabababbaaabbbaaababaabbabbbbbba
|
||||||
|
abaaaabaaaabaaaabaaaababaabbbaababaabbabaaaaabbaaababbbabaabbaaababaaaab
|
||||||
|
baaabbbbbababababaaaababbbbaabaaaabaaabbbabbaabbabbbabaabbaaaaba
|
||||||
|
abbbbabbbbbbabbbbabbbbbb
|
||||||
|
bbbbabbbabbaaabbbbabaabaababaababbaaaabb
|
||||||
|
ababaaaaaababaabbaabbabaabbbabaaababbaaaabbbaaaa
|
||||||
|
bbbbbbbbbbbbaabbaaaabaab
|
||||||
|
aababaabbabbabaaaaaabaab
|
||||||
|
ababaaababbabbbabbaabaaa
|
||||||
|
bbbababbabbbbbabaaaaabaa
|
||||||
|
abbbaabbbabbbbabaaabbaaa
|
||||||
|
abbaaaabbbaaaaabaabaabba
|
||||||
|
aaabbabaaabaabbbaaabbabb
|
||||||
|
ababaaababbbbaaababaababbbbaabbbbaabaaaa
|
||||||
|
baabababbaababbabaabbaab
|
||||||
|
bbaaabbbaaabaabaababbaba
|
||||||
|
baaaaabbbbbaabaabaaabaaabaabbbbb
|
||||||
|
aabbbababaaaaaabababbaaa
|
||||||
|
baaaababbaaababbaaaaabaa
|
||||||
|
aabababaabaabbababababbb
|
||||||
|
bbaaaaaabaababbabbbbabaabbbbbbaaaabbaaabbababaab
|
||||||
|
bbbbababaabababaaabbbaaa
|
||||||
|
baaabaababbabbbaaababbaa
|
||||||
|
babaaaaaabbaababaaabbbbaabababbababaaaababaabaabbbbaabbbaaaaababaabaabbabbbbbbbbabababbaabaaaaab
|
||||||
|
bbbaababbaabbbbabaaaabaaabbbbbba
|
||||||
|
aababaabaababaaabbbaaababbbabaabbbaabaab
|
||||||
|
bbbbababaaabaaaabbbaaaab
|
||||||
|
bbbbbbbbabbbabbbaababaabbbabbabbbbaabaab
|
||||||
|
baaabaaabaaabbbbaabaaabbaaabaabaaabbbbaa
|
||||||
|
bbbabaabbaaaababaaabaaab
|
||||||
|
ababababbbbbabbbaaabababbaabbaab
|
||||||
|
abbababbaababaaaaababbaa
|
||||||
|
ababababaabbaabbbababaaa
|
||||||
|
ababbabbaaaaaabbababbbab
|
||||||
|
aaabbabbbaabababaabbaabbaaabaabbbabbaabb
|
||||||
|
bbbbababaabaaaaaabaaaaaa
|
||||||
|
bbaababaababbaabaaaabaaaaabbabaabaaaaaaaaabbaaba
|
||||||
|
bbababbbbaaaaabbaaababba
|
||||||
|
bbbbbbaaabbaababbaaabbaaabbbbabababbbbba
|
||||||
|
aabbbaabbbbababbbaaababa
|
||||||
|
aabaabaabaaabaababbabbbb
|
||||||
|
bbbbabaabaabbbbababaabab
|
||||||
|
abbbaaaaaabbbbbababbababbaaaabba
|
||||||
|
aaaaaaabaaabaababbbaaaaaaabbbbbbbbaabaaaabbaaaba
|
||||||
|
baaabbabbaaabaababbaabababbabbbabaabababaaababbbbbabbaabaabbbabb
|
||||||
|
aaaaababbaaabbaabbaaaabb
|
||||||
|
bbbabbbabaabbabaabbbabbaababaaaabbbbabbabbaabbaaaabaaabbabbbbaab
|
||||||
|
baabaabaabbbbbababaaaabbbbbabaabbbbaaaabbbbbbaabbaabbbbb
|
||||||
|
bbaaaaaabbabbaabbaabaaba
|
||||||
|
abbababbbabbbbabbaaaaaabaaaaaabaaaaaabbb
|
||||||
|
abaababbaabbbaabbabaabbb
|
||||||
|
baabababbaabababbbbaaaaabbababbbbaaaabbb
|
||||||
|
baabaabaabaabbbbbaabababbabababbbbabbbaabaaaaabaaaaabaaababbbbababbbaaabbbabaaba
|
||||||
|
abbbbaaaaaabbbaabaaaabaaaaaabbaa
|
||||||
|
baababababbaaabbbabbaabb
|
||||||
|
aaaaaabaabababbabbabbbbb
|
||||||
|
aaabbabaaabbaabbbbabaaab
|
||||||
|
abbbaabbbbbbabaaaaaabaaa
|
||||||
|
aabbabbbabaaaabbaabbbaaa
|
||||||
|
aabbababbaaabbbbabbbbbabaabaabab
|
||||||
|
bbbaababaabbbbbabbabaaaabaaaabba
|
||||||
|
bbbbababaabababaaabbabaa
|
||||||
|
ababaabbbbbbbbbaaaaabbbb
|
||||||
|
aaabababbabbaaaaababbbbb
|
||||||
|
bbbbabbabbbbbbaaaabaabbbbabbbbba
|
||||||
|
bbbababbaaababababbaababbbabbaabbabaaabaabbabaab
|
||||||
|
baaabbbaabababbaababbbaa
|
||||||
|
aaaaaababbbabbaaaabaaaaaabababababbaabaababaaaba
|
||||||
|
bbabbaabbbbbbbaabbbaaaab
|
||||||
|
babbaabaabbaaabbbbaabbbaabababbaaaabbbaabaababbbabbbaaaa
|
||||||
|
baabaabbbaaababababaaabbabbbbaaaaabaaaaababbabaaabbbbbbabaabaababbbbbaaabaaaaaaa
|
||||||
|
abbaababbbbabaabababbaba
|
||||||
|
bbaababbababababbbbbbaab
|
||||||
|
bbbbaababbaaaababaaabbaaabaabbbbbbbbbaaa
|
||||||
|
babbbaaabaababaababbbabbabbaabbabbaaaabaaababaababaabaaaabbaaaba
|
||||||
|
bbababbbabaaaaabbbbbbabb
|
||||||
|
babbabbbababaaaababbbabaaaabbababbabbbbbabababbb
|
||||||
|
abbbaabbbbaaabbbaaabbabaaaaaaababaabaabbaabbbaabababbbabbbbbbbabababbbbbaaababaa
|
||||||
|
aaaaabbabbbaaaabbaaababbbaaaababaaabbabbbabbabbaabbabaabaabbaaaaabbaabaababaabaababbabaa
|
||||||
|
baaababaababbbabbaaaabbaababbaaababababababbaabbbbbabbbababbababaaabbbbaababbaba
|
||||||
|
babbabbaabbbabaaabbaaaaa
|
||||||
|
bbbaaabaaaabababbaaabbbabababbbb
|
||||||
|
bababbbaababaaaabaabaabaaabbabbbbbabababbabbbaab
|
||||||
|
aababaaaabaabbabbabaabaa
|
||||||
|
aababbaaaaabbaabaaaababa
|
||||||
|
babbbbaababbbbaaaaabbbaabbaababbbbabaaabbaaabbabababbbaa
|
||||||
|
abaaaababababbabbababbbabbabbaabbbaaabaa
|
||||||
|
aabbababaabbaababaaaaabbbabbaaaabababbabbbbabbaaaaabbbbb
|
||||||
|
aabaaababbaaaabbaabbabaaaaababbabababbbb
|
||||||
|
abbbbbaabbbabaaaaaaaabbaaabbbaaa
|
||||||
|
bbbbabaaaabbbababbbabbbb
|
||||||
|
bbbababaababaaabaabbabaa
|
||||||
|
abaababbbaaababbbabbbbaaabaabaab
|
||||||
|
aaabbaababbbbaaaaabbbbba
|
||||||
|
aabaaaabababbaaaaaabaabbaaaabbaa
|
||||||
|
baaabbabbbabaaabaaaabaabababbbbb
|
||||||
|
abaaaaabbbaaaaaabaababaa
|
||||||
|
bababbabbbbabbaaaaabbbab
|
||||||
|
abaaababbaabbabaaabaaabbabbbbabaaaaababaaabaaaabbbbabbbbbaabbaaa
|
||||||
|
aabababbaaabaaaaabbaabba
|
||||||
|
ababaaabbabbabaabbbaaaaaaaaaaabbaaabaaab
|
||||||
|
aabaaababbbababaaabaabaabbbbaaaaaabbaaaa
|
||||||
|
bababaaabbababbabbbabaaa
|
||||||
|
abaaabbabaaabaabbababbaa
|
||||||
|
abbbabaabbaabbbababbbbbb
|
||||||
|
aabbbbabbaaabaaabbaaabaa
|
||||||
|
bbbbabbaabbbbbbaaaababaa
|
||||||
|
abbbbabaaabababbaaabbbbb
|
||||||
|
abaaabbaabaaabbbbbaabbbb
|
||||||
|
aabaaabaaaaaaabaaaaabbba
|
||||||
|
abbabbbaababbabbaaaabbbb
|
||||||
|
babbaabaaaaaaaabbaabbbbabaaaababaabbaaaa
|
||||||
|
ababbabbabaaaabbbbbababbaabbababbbbababb
|
||||||
|
abbbabbbbabbbbabbbaabaab
|
||||||
|
baaababbbbaaabbabbbaaaab
|
||||||
|
abbbbaabbbbbaabbabaaababbaabaaab
|
||||||
|
bbbbababbbaaabaaabbababbbabbbbababaababaaaabaaaabaaaabaaabbbaabababbbabbbaaaaaababbaabbb
|
||||||
|
bbbbabaabbabaabbabbbbbabbabaaabbaabbaaab
|
||||||
|
baabbabaaabbaababbbbbaab
|
||||||
|
bbabaaabaabaaaababbbbbaabaaabbaabababbaaaabbaaabaaaababbaaaababaaaaaaaaaababbbbb
|
||||||
|
abaaaabaabbbabbbaaaaababbaaaaaab
|
||||||
|
abbbabbbaababbbbabaaaababbaaabbaabbbaabbbbabaaaa
|
||||||
|
bbaaabbabbaababbbbbabbaabaabbbbabbbaababababbbaa
|
||||||
|
bbaaaaaababbbbbbbaababaaababbaaabaabaaabbbababbabbabbbbababbaaab
|
||||||
|
bbaababbbbaaabbbababbaba
|
||||||
|
bbbaaabbbbbbabaabbabbaaa
|
||||||
|
bbbababaaababbbbbaababaa
|
||||||
|
baaaababaababaaaabbbbbbb
|
||||||
|
aabbbbabaaaababbbabaabba
|
||||||
|
baaabaabbbbabbbabbaaabbaabbbaabbbbaabaab
|
||||||
|
aabbbaabbaaaaaaabaaaaabbbbbaabab
|
||||||
|
baaaabaaaabbaabaabaaababaaaabaab
|
||||||
|
aaaaaabaaababbaabaaaaaba
|
||||||
|
aaabaaaaaabbbbabbaabbaaa
|
||||||
|
abaababbbbbabbbaaaaaaaaaaabaaabbbaabbbabaaabaabb
|
||||||
|
bbbaabbaabbababaabbabaaa
|
||||||
|
bbbababbabbabbbabbaaabbabababbaaababbbbb
|
||||||
|
abaabbbaababbbaaabbabaab
|
||||||
|
aababaabaaabbababababbbaaaabbabababbbbaaaaaabbbababbabab
|
||||||
|
bbabbbaaaaaaababbbaaaabababbabaaabbabbbbaaabbbbb
|
||||||
|
aaaaaabbbbbaaabbbbaabaaaaabbabaa
|
||||||
|
bbbaabbababbaabaaabbbbbb
|
||||||
|
abbbabaaaaaaababaababbab
|
||||||
|
bbabaabaaabbaabbaabbabba
|
||||||
|
baaaabaaaababaabbbabbbab
|
||||||
|
bbaabbbaaaabbaaaaaaaabaaaaaabbaa
|
||||||
|
aabaabaaaababaabbbbaabaabbbaaabbbbabbabb
|
||||||
|
aaabaabaabbbabbbaabbbbbb
|
||||||
|
babbaaaaabaaabbbbbaaababaaaaaabaababbbababbabbbbaaabbbba
|
||||||
|
abbababbbaabbabbabaabbabaaaaabbb
|
||||||
|
ababaaabbaaaaabbabbbabaabbaabbbaabaaaaabbaabaabbabbbaaaa
|
||||||
|
babbaaaabaabababbaaaabbb
|
||||||
|
aaabbbaaaabbbabababaabaa
|
||||||
|
bbbaaabaababbaabababaaba
|
||||||
|
aaababbaaabbaababbbbabbabbbabbab
|
||||||
|
abababbaaababaababbaabba
|
||||||
|
bbaaabbabbbbababaaaabaab
|
|
@ -0,0 +1,172 @@
|
||||||
|
#![feature(test, str_split_once, bool_to_option)]
|
||||||
|
extern crate test;
|
||||||
|
use aoc2020::common::*;
|
||||||
|
use itertools::Itertools;
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Clone, Copy)]
|
||||||
|
enum Rule {
|
||||||
|
Char(u8),
|
||||||
|
And((usize, usize)),
|
||||||
|
AndOr((usize, usize), (usize, usize)),
|
||||||
|
Or((usize, usize)),
|
||||||
|
Useless(usize), // just delegates to another rule and makes parsing annoying
|
||||||
|
// This is why you don’t change the requirements once the implementation is done. REEEEEE
|
||||||
|
Special8(usize, (usize, usize)),
|
||||||
|
Special11((usize, usize), (usize, usize, usize)),
|
||||||
|
// If Rule was a recursive struct, this could have been defined as And(first, And(second, third)), but alas
|
||||||
|
Triple((usize, usize, usize)),
|
||||||
|
}
|
||||||
|
|
||||||
|
type Parsed<'a> = (RuleSet, &'a str);
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
struct RuleSet(Vec<Rule>);
|
||||||
|
|
||||||
|
impl RuleSet {
|
||||||
|
fn matches(&self, s: &str, rule: Rule) -> Option<usize> {
|
||||||
|
let res = match rule {
|
||||||
|
Rule::Char(c) => (s.as_bytes().first() == Some(&c)).then_some(1),
|
||||||
|
Rule::And((r1, r2)) => self
|
||||||
|
.matches(s, self.0[r1])
|
||||||
|
.and_then(|i| self.matches(&s[i..], self.0[r2]).map(|j| i + j)),
|
||||||
|
Rule::AndOr((r1, r2), (r3, r4)) => self
|
||||||
|
.matches(s, Rule::And((r1, r2)))
|
||||||
|
.or_else(|| self.matches(s, Rule::And((r3, r4)))),
|
||||||
|
Rule::Or((r1, r2)) => self.matches(s, Rule::Useless(r1)).or_else(|| self.matches(s, Rule::Useless(r2))),
|
||||||
|
Rule::Useless(r) => self.matches(s, self.0[r]),
|
||||||
|
// part 2 shit below:
|
||||||
|
Rule::Special8(first, second) => self.matches(s, Rule::Useless(first)).or_else(|| self.matches(s, Rule::And(second))),
|
||||||
|
Rule::Special11(first, second) => self.matches(s, Rule::And(first)).or_else(|| self.matches(s, Rule::Triple(second))),
|
||||||
|
Rule::Triple((r1, r2, r3)) => self
|
||||||
|
.matches(s, self.0[r1])
|
||||||
|
.and_then(|i| self.matches(&s[i..], self.0[r2]).map(|j| i + j))
|
||||||
|
.and_then(|i| self.matches(&s[i..], self.0[r3]).map(|j| i + j)),
|
||||||
|
};
|
||||||
|
res
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn read_input() -> String {
|
||||||
|
read_file(19)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_input<'a>(raw: &'a str) -> Parsed<'a> {
|
||||||
|
let (rules, inputs) = raw.split_once("\n\n").unwrap();
|
||||||
|
let rules = RuleSet(
|
||||||
|
rules
|
||||||
|
.lines()
|
||||||
|
.filter_map(|l| l.split_once(": "))
|
||||||
|
// why isn’t this already sorted like it was in the example?
|
||||||
|
.sorted_by_key(|t| t.0.parse::<i32>().unwrap())
|
||||||
|
.map(|(_, r)| match r {
|
||||||
|
or if or.contains('|') => {
|
||||||
|
let mut split = or.split(' ').filter(|s| s != &"|").map(|s| s.parse().unwrap());
|
||||||
|
split
|
||||||
|
.clone()
|
||||||
|
.next_tuple()
|
||||||
|
.map(|(a, b, c, d)| Rule::AndOr((a, b), (c, d)))
|
||||||
|
.or_else(|| split.next_tuple().map(|(a, b)| Rule::Or((a, b))))
|
||||||
|
.unwrap()
|
||||||
|
}
|
||||||
|
chr if chr.contains('"') => Rule::Char(chr.bytes().skip_while(|&b| b != b'"').skip(1).next().unwrap()),
|
||||||
|
and if and.contains(' ') => Rule::And(and.split(' ').map(|s| s.parse().unwrap()).next_tuple().unwrap()),
|
||||||
|
useless => Rule::Useless(useless.parse().unwrap()),
|
||||||
|
})
|
||||||
|
.collect(),
|
||||||
|
);
|
||||||
|
(rules, inputs)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1((rules, input): &Parsed) -> usize {
|
||||||
|
input.lines().filter(|l| rules.matches(l, rules.0[0]) == Some(l.len())).count()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(parsed: &Parsed) -> usize {
|
||||||
|
let mut rules = parsed.0.clone();
|
||||||
|
rules.0[8] = Rule::Special8(42, (42, 8));
|
||||||
|
rules.0[11] = Rule::Special11((42, 31), (42, 11, 31));
|
||||||
|
dbg!(parsed.1.lines().map(|l| (l, rules.matches(l, rules.0[0]))).collect_vec());
|
||||||
|
parsed.1.lines().filter(|l| rules.matches(l, rules.0[0]) == Some(l.len())).count()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let raw = read_input();
|
||||||
|
let input = parse_input(&raw);
|
||||||
|
println!("Part 1: {}", part1(&input));
|
||||||
|
// 265 too low, 395 too high. apparently 379? no idea how that’s supposed to work
|
||||||
|
println!("Part 2: {}", part2(&input));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
use aoc2020::*;
|
||||||
|
use paste::paste;
|
||||||
|
use test::black_box;
|
||||||
|
|
||||||
|
const TEST_INPUT: &str = r#"0: 8 11
|
||||||
|
1: "a"
|
||||||
|
2: 1 24 | 14 4
|
||||||
|
3: 5 14 | 16 1
|
||||||
|
4: 1 1
|
||||||
|
5: 1 14 | 15 1
|
||||||
|
6: 14 14 | 1 14
|
||||||
|
7: 14 5 | 1 21
|
||||||
|
8: 42
|
||||||
|
9: 14 27 | 1 26
|
||||||
|
10: 23 14 | 28 1
|
||||||
|
11: 42 31
|
||||||
|
12: 24 14 | 19 1
|
||||||
|
13: 14 3 | 1 12
|
||||||
|
14: "b"
|
||||||
|
15: 1 | 14
|
||||||
|
16: 15 1 | 14 14
|
||||||
|
17: 14 2 | 1 7
|
||||||
|
18: 15 15
|
||||||
|
19: 14 1 | 14 14
|
||||||
|
20: 14 14 | 1 15
|
||||||
|
21: 14 1 | 1 14
|
||||||
|
22: 14 14
|
||||||
|
23: 25 1 | 22 14
|
||||||
|
24: 14 1
|
||||||
|
25: 1 1 | 1 14
|
||||||
|
26: 14 22 | 1 20
|
||||||
|
27: 1 6 | 14 18
|
||||||
|
28: 16 1
|
||||||
|
29: 29
|
||||||
|
30: 30
|
||||||
|
31: 14 17 | 1 13
|
||||||
|
32: 32
|
||||||
|
33: 33
|
||||||
|
34: 34
|
||||||
|
35: 35
|
||||||
|
36: 36
|
||||||
|
37: 37
|
||||||
|
38: 38
|
||||||
|
39: 39
|
||||||
|
40: 40
|
||||||
|
41: 41
|
||||||
|
42: 9 14 | 10 1
|
||||||
|
|
||||||
|
abbbbbabbbaaaababbaabbbbabababbbabbbbbbabaaaa
|
||||||
|
bbabbbbaabaabba
|
||||||
|
babbbbaabbbbbabbbbbbaabaaabaaa
|
||||||
|
aaabbbbbbaaaabaababaabababbabaaabbababababaaa
|
||||||
|
bbbbbbbaaaabbbbaaabbabaaa
|
||||||
|
bbbababbbbaaaaaaaabbababaaababaabab
|
||||||
|
ababaaaaaabaaab
|
||||||
|
ababaaaaabbbaba
|
||||||
|
baabbaaaabbaaaababbaababb
|
||||||
|
abbbbabbbbaaaababbbbbbaaaababb
|
||||||
|
aaaaabbaabaaaaababaa
|
||||||
|
aaaabbaaaabbaaa
|
||||||
|
aaaabbaabbaaaaaaabbbabbbaaabbaabaaa
|
||||||
|
babaaabbbaaabaababbaabababaaab
|
||||||
|
aabbbbbaabbbaaaaaabbbbbababaaaaabbaaabba"#;
|
||||||
|
|
||||||
|
test!(part1() == 3);
|
||||||
|
test!(part2() == 12);
|
||||||
|
bench!(part1() == 235);
|
||||||
|
// bench!(part2() == 0);
|
||||||
|
// bench_input!(0.len == 0);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user