[TASK] Solved day 19 (haven't solved day 18 yet tho, coming up!)
This commit is contained in:
578
input/day19.txt
Normal file
578
input/day19.txt
Normal file
@@ -0,0 +1,578 @@
|
|||||||
|
77: 30 112 | 20 13
|
||||||
|
121: 43 20 | 123 30
|
||||||
|
42: 57 30 | 101 20
|
||||||
|
30: "a"
|
||||||
|
50: 65 20 | 134 30
|
||||||
|
37: 89 20 | 43 30
|
||||||
|
106: 16 30 | 54 20
|
||||||
|
17: 30 84 | 20 35
|
||||||
|
129: 89 20 | 96 30
|
||||||
|
123: 30 30 | 20 95
|
||||||
|
20: "b"
|
||||||
|
115: 20 70 | 30 93
|
||||||
|
112: 30 90 | 20 123
|
||||||
|
4: 20 55 | 30 5
|
||||||
|
72: 20 90 | 30 123
|
||||||
|
51: 30 20 | 20 95
|
||||||
|
24: 131 30 | 7 20
|
||||||
|
94: 121 20 | 15 30
|
||||||
|
117: 133 30 | 102 20
|
||||||
|
92: 28 20 | 43 30
|
||||||
|
70: 87 30 | 96 20
|
||||||
|
88: 109 20 | 36 30
|
||||||
|
35: 20 36 | 30 61
|
||||||
|
96: 30 95 | 20 20
|
||||||
|
47: 96 20 | 66 30
|
||||||
|
6: 20 55 | 30 123
|
||||||
|
130: 30 29 | 20 88
|
||||||
|
68: 5 20 | 89 30
|
||||||
|
66: 95 95
|
||||||
|
75: 96 30 | 55 20
|
||||||
|
3: 20 90 | 30 5
|
||||||
|
7: 20 53 | 30 123
|
||||||
|
86: 30 5 | 20 53
|
||||||
|
105: 20 87
|
||||||
|
46: 134 20 | 87 30
|
||||||
|
102: 30 111 | 20 103
|
||||||
|
93: 87 20 | 87 30
|
||||||
|
79: 116 20 | 71 30
|
||||||
|
8: 42
|
||||||
|
33: 5 20 | 87 30
|
||||||
|
107: 96 20 | 123 30
|
||||||
|
90: 20 30
|
||||||
|
110: 20 59 | 30 32
|
||||||
|
16: 30 68 | 20 39
|
||||||
|
52: 4 20 | 38 30
|
||||||
|
71: 96 30 | 51 20
|
||||||
|
38: 96 20 | 90 30
|
||||||
|
28: 20 30 | 30 30
|
||||||
|
27: 30 64 | 20 24
|
||||||
|
91: 30 27 | 20 113
|
||||||
|
1: 20 90 | 30 134
|
||||||
|
54: 105 20 | 18 30
|
||||||
|
0: 8 11
|
||||||
|
73: 65 20 | 55 30
|
||||||
|
132: 30 17 | 20 19
|
||||||
|
41: 20 51 | 30 22
|
||||||
|
45: 22 30 | 53 20
|
||||||
|
14: 124 20 | 73 30
|
||||||
|
22: 30 30
|
||||||
|
23: 87 30 | 55 20
|
||||||
|
10: 30 89 | 20 134
|
||||||
|
120: 56 30 | 9 20
|
||||||
|
11: 42 31
|
||||||
|
109: 95 134
|
||||||
|
127: 30 53 | 20 123
|
||||||
|
61: 20 53 | 30 90
|
||||||
|
103: 127 30 | 23 20
|
||||||
|
116: 90 20 | 87 30
|
||||||
|
134: 20 20 | 30 20
|
||||||
|
114: 20 63 | 30 41
|
||||||
|
64: 20 118 | 30 25
|
||||||
|
12: 30 48 | 20 3
|
||||||
|
111: 20 23 | 30 72
|
||||||
|
60: 79 30 | 120 20
|
||||||
|
59: 20 28 | 30 87
|
||||||
|
65: 20 30 | 20 20
|
||||||
|
44: 89 30 | 28 20
|
||||||
|
18: 65 20 | 43 30
|
||||||
|
32: 95 123
|
||||||
|
83: 30 66 | 20 22
|
||||||
|
63: 20 123 | 30 55
|
||||||
|
48: 30 134 | 20 43
|
||||||
|
99: 20 12 | 30 125
|
||||||
|
43: 20 20
|
||||||
|
133: 20 100 | 30 110
|
||||||
|
80: 20 50 | 30 44
|
||||||
|
125: 20 98 | 30 86
|
||||||
|
135: 128 30 | 130 20
|
||||||
|
131: 20 55 | 30 134
|
||||||
|
122: 97 30 | 60 20
|
||||||
|
25: 30 43 | 20 51
|
||||||
|
95: 20 | 30
|
||||||
|
55: 30 95 | 20 30
|
||||||
|
13: 43 20 | 43 30
|
||||||
|
21: 20 76 | 30 80
|
||||||
|
98: 89 30 | 65 20
|
||||||
|
81: 106 30 | 85 20
|
||||||
|
53: 30 30 | 20 20
|
||||||
|
78: 45 30 | 37 20
|
||||||
|
89: 20 30 | 30 20
|
||||||
|
9: 96 30 | 43 20
|
||||||
|
31: 2 20 | 82 30
|
||||||
|
56: 5 20 | 96 30
|
||||||
|
76: 1 20 | 23 30
|
||||||
|
62: 92 30 | 10 20
|
||||||
|
58: 30 22 | 20 43
|
||||||
|
85: 77 20 | 67 30
|
||||||
|
26: 30 58 | 20 6
|
||||||
|
101: 30 81 | 20 91
|
||||||
|
29: 83 30 | 47 20
|
||||||
|
126: 20 53 | 30 55
|
||||||
|
2: 122 20 | 135 30
|
||||||
|
15: 5 30 | 51 20
|
||||||
|
34: 20 37 | 30 116
|
||||||
|
82: 30 104 | 20 132
|
||||||
|
19: 40 20 | 62 30
|
||||||
|
108: 21 20 | 119 30
|
||||||
|
36: 30 22 | 20 87
|
||||||
|
104: 69 30 | 99 20
|
||||||
|
100: 20 7 | 30 61
|
||||||
|
39: 89 20
|
||||||
|
87: 30 20
|
||||||
|
113: 52 30 | 34 20
|
||||||
|
5: 30 30 | 30 20
|
||||||
|
40: 4 30 | 107 20
|
||||||
|
97: 20 26 | 30 78
|
||||||
|
67: 30 131 | 20 126
|
||||||
|
118: 20 134 | 30 66
|
||||||
|
124: 96 30 | 22 20
|
||||||
|
128: 30 114 | 20 14
|
||||||
|
119: 30 49 | 20 74
|
||||||
|
84: 129 30 | 33 20
|
||||||
|
74: 30 6 | 20 46
|
||||||
|
49: 30 38 | 20 75
|
||||||
|
57: 117 30 | 108 20
|
||||||
|
69: 20 94 | 30 115
|
||||||
|
|
||||||
|
aaabbaababbababbabaabbbaaabbbbaa
|
||||||
|
baabaabaaaabbabbbbbaaabb
|
||||||
|
aabbbaaabaaaabbbbaabbaaa
|
||||||
|
bababbbabbabbaaaaabababbbbaaaaaaaaabbaabaaaaabababaaabbaababbaab
|
||||||
|
baababbbbbbaaaababaaaababbabbaaaaabbbbbbbabaabaaaaabbbbb
|
||||||
|
abbaaabababbaaaabbaabababbbabbaa
|
||||||
|
aaabaaabaaabaaaaaaabbbab
|
||||||
|
abaaabaabbababababaaabba
|
||||||
|
aabbbbbbaaabbaaaabbabbbb
|
||||||
|
aabbbabaaaababaabbbababb
|
||||||
|
aaabbabbbaabbabbabaabbba
|
||||||
|
bbbaaaabbbabbbaaababbaabaaabaaaabbbbabba
|
||||||
|
babbbbaaaaabaaaabaaababbbabbaabbbaababbaabaaabab
|
||||||
|
aabaaaaabbaaaaaabbababbbbabaaaaabbaaaabb
|
||||||
|
bbbbababaaabbaaaaababbaa
|
||||||
|
baabaaabbbbbababababaabbaaabbabbaabbbaab
|
||||||
|
bbaabbabbbabbbaababbbbbabaabaabbbababababaaabaaa
|
||||||
|
baabbbbbaaaabbbabbbbbbbb
|
||||||
|
bbabbaabbbabbaaabbbaabaabaaabbbbaababaaa
|
||||||
|
babbbaababbbabbababaabbb
|
||||||
|
aabbbbbabbbbaaaabbbaabababababbb
|
||||||
|
aabbabaababababababbaaabaaabaabb
|
||||||
|
aabababbaaaaaaaababbbbaaabaaaaaa
|
||||||
|
abbbababaaabbaabababababbaaabbbbaaabaabb
|
||||||
|
baabbabaaabaaaaabbbbbaabababaaaa
|
||||||
|
abbbbabbbababbababbaabbbbaaaabba
|
||||||
|
abababbababaaabbabaabbbb
|
||||||
|
aaaabbbaaaaaabaabaaabbba
|
||||||
|
bbaabaababaaaabbaaaaaabb
|
||||||
|
aaabbabbaabaabbbaabbaaba
|
||||||
|
aaaaabaabbaabaababbabaaa
|
||||||
|
bbabbbbabbbaabbbabbbbaab
|
||||||
|
aaabbabbbaaabbbbbaabaabbbabababbaaaaaababbbbaabb
|
||||||
|
abaabbabbabaaabababaababaabbabbbabbbbaaaaabbbbaabbaaaaababbbabbaabbbbbabaabaabbabbbbbaabaaaabbab
|
||||||
|
bbbaababaaaabababaaaaaab
|
||||||
|
bbbbabbbaaababbbaabbbbbb
|
||||||
|
babbbaabaababbbaabbbbbaa
|
||||||
|
abababbabbbabbabbbbabaaa
|
||||||
|
abaabaaaaabaabbabaaabbbbbbababab
|
||||||
|
abababbaaabababbbababaaa
|
||||||
|
baaabbabbbbbbabababbaaababbbbabbbaababbbaabbbbabbbaaabbabbbbbbab
|
||||||
|
aababbbaabababaaaaaaabab
|
||||||
|
baaabbababbaaaababbabbbabaaabaaabaabbbbaaabbabaabbbaabbbabbabbabaabbaaab
|
||||||
|
baaaabaabbababbbbbbbbababaaabaab
|
||||||
|
bbabbaababbabaabaaabaaabaaaabbaaabbbbaab
|
||||||
|
bbbaaaaaabbaaaaabaaaaaaa
|
||||||
|
bbabbbaababbbaaaababababbbaabaabbbbbababbaaabbbaabbaaaabbaaaaaaa
|
||||||
|
abbbbabbaabbabbbaaaaabba
|
||||||
|
babbababbaaabbabbabbaabaaaaaaaba
|
||||||
|
bbbbababbababbbbabbababbaaababab
|
||||||
|
abbaaaababbabbbbbabbaaabaababaab
|
||||||
|
aabbbbbbabaabababbbabaaa
|
||||||
|
aaaaaaaababaaabaabaabbaaabbabbbaabaaaaaabbaabbba
|
||||||
|
abbbababaaaaabaaaababbbaaaabbaaa
|
||||||
|
bbbbbabbaabaaaaaaabaabbaaaaabbaa
|
||||||
|
ababbabababbbaabababbbaaabaabbbb
|
||||||
|
ababaabaabbabbbabbbabbbabbaaaababaabbaaa
|
||||||
|
ababaabaaaababbbbaaaabaabababbaaabbababb
|
||||||
|
aaabbbaabaabbbbbbaaababbaaaabbbabbbbbbbb
|
||||||
|
aaababbbaaaabaabbababaab
|
||||||
|
aabbbabaababbbabbaaaabab
|
||||||
|
abaabbbbbbabaabaaababababbbabaabbaabbaabaabababbabbaaaababaaaaaa
|
||||||
|
abbaaaababaaaabaabbbbbabbbaaabaaaabbabaa
|
||||||
|
babaaaaabbbaabababaaabbb
|
||||||
|
abbbbbbaabaabaaabbaaaaaabbabbbaabbabbbbbaabbbbababbababb
|
||||||
|
baabbababbbabbababbbbbaa
|
||||||
|
bbabaababbbabbabaabbbaab
|
||||||
|
ababbbabbbbbabaabaaaaabb
|
||||||
|
babbbbbbbaaaabbbabbbbaba
|
||||||
|
babbabaabaaabbababaababaababaaab
|
||||||
|
aaaababaaaababaaabbbabbaabbaaaabaaaabbab
|
||||||
|
abbaabbbbbabbabbababbbbbbbbabbaabaaaababbbbaabbabaaaabbbbabaaaabaaaabbab
|
||||||
|
baabbbbabaabbbbabaaabaaa
|
||||||
|
aaabbaaaaaabbabaabaaaaab
|
||||||
|
abbabaabbaaababbaabbabab
|
||||||
|
aabaabbbbaababbabbbbbaaabbbaaabb
|
||||||
|
aaaaaaaaaabbabbbaabaaabbabaaabababbbaababbaaabababbbbaaaaaabbbababaaaaaa
|
||||||
|
babbabababaaaababaaaabba
|
||||||
|
abbaaaaaaaabbaaabbbaabaaabaaaabbabaabaaabbbaabbbbbbaabbbbbaabababababaab
|
||||||
|
bbabaababaabbabbbbaaaaba
|
||||||
|
bbabbbaaaabaaabbbbbabbbaaabbbbba
|
||||||
|
babbbaaaaabbaaaababbbabb
|
||||||
|
bababbabbbaabaabbbbaaaaabaabbbab
|
||||||
|
bbbaaaaabababbaabaaaaaab
|
||||||
|
babababbbaabaaaaaaaabbbaabbbabbb
|
||||||
|
aaaaabaabbabbababbaabbba
|
||||||
|
aabababbabbabbaabbbaabbb
|
||||||
|
baaababbaabbaaaaaabbbabb
|
||||||
|
bbaababbaaabbbaababababbaabbaaabaaababab
|
||||||
|
baaaabaaababababaabbabbbabababbaaababbbbbbbaabba
|
||||||
|
babbbbabbbabbababaabaaabbbbaaaabababaaab
|
||||||
|
baaaaabaaabbbbaaabbaabbaabaabbbabababbabbaaabaaaaaabaaababaabbabbabaaaaaaaabbbbb
|
||||||
|
babbbaaaabbbbbbbaaaababbaabbbbbbbbbaaaabbbabbbbabaababaa
|
||||||
|
baabbbbbabababbaabababaabaabaabaaababbbbbbaabbaa
|
||||||
|
babaaababaaaaabaaabaabbabaaabbabbaaaabaabbbaabbbbbabaaabaaaaabbabbbabaab
|
||||||
|
abbabaaababaabaaabaaabaaababbbaababbababbaaabaaababbaaaa
|
||||||
|
ababaabaabbababaaaabbbbb
|
||||||
|
baababbabaabbbbbbbbaabaaababaaabbbbbbbaa
|
||||||
|
aabbaaabbbbababbababbaaa
|
||||||
|
babaabbabbbbbabbabbbbaba
|
||||||
|
abbbabbbbaaababbabaabbaabbbabaaa
|
||||||
|
babbbaaabaaaabaaaaabaaabbaaabbbbbabbaabaabaaabba
|
||||||
|
bbbbabbbbabbaababbabbbbb
|
||||||
|
bbbbaaaabaabbbabbbbabbaaaabbbaab
|
||||||
|
babbbbbababababaaaaabaaa
|
||||||
|
babbaabbbabaabbababaaaab
|
||||||
|
abbbabbabbababbbaabbbbaa
|
||||||
|
aaabbaababbbabbbbbaabaaa
|
||||||
|
babbaabaabaabaaaaaaaaaaabababbba
|
||||||
|
aabaaaababaaaabaababbbababbbababaabababa
|
||||||
|
bbbabbbbaaababbaabbbaaaabbbbbaabbabbbbbaaaabbbbaabbbaabb
|
||||||
|
abbabababbabbaaaabaabbba
|
||||||
|
abbaaaabbaaaabbabbbababaabbbabaa
|
||||||
|
abbaaabbbbaaababbbbaaaabbabbbbbabbbababbaababbab
|
||||||
|
baaababbababaababbbbabaaaabbababbaaabaaa
|
||||||
|
babbaaabbaabbbbbaabaaaaababbabaabaaabaabaabbbabbbabaabaa
|
||||||
|
aaababbbaaaababaababbaab
|
||||||
|
baaaabbbbaabbbaaabbaabbb
|
||||||
|
babbbaabaabbabababaaaaabaabbaabababaabbb
|
||||||
|
abbabbbbabababbababbaabaaaaaaaababbaaabbabbbbbaabbbabbabbbbababb
|
||||||
|
baaabbbbabbbaaaabbbaabba
|
||||||
|
abababaabaabaabbbbbabbbaaaabbababaabbbaabbababab
|
||||||
|
aaaabaababababbaaababbbabbabbaabaabbbbabbbbbbbaaabaaaaaa
|
||||||
|
aabaaabababbbaabbbbbbbaa
|
||||||
|
aabaaaabbaabaaaaaaaaabba
|
||||||
|
babababbaabbbaaaabbaaaba
|
||||||
|
abbabbbaaaababaaaabaaaaaaabbbbbbabaaabbb
|
||||||
|
bbbaaabaaabaababbbbaabba
|
||||||
|
bbabaababbbbbabbaaaababaaabaaaaaabbbbaaabbaabaaa
|
||||||
|
aaaababbbababbababbbbbbaaaabaaaaabbaaabaabbbbbaabababaab
|
||||||
|
baabbbbbaabaaaababbabbaaaaaabaaa
|
||||||
|
bbbbbaabbbbbabaababbbaaabababbbbbbbaaaaaabbbbaba
|
||||||
|
ababbaabaabbaabbaaaabbbb
|
||||||
|
bbbbbaabaabbbbbbbaaaaaaa
|
||||||
|
bbbbbaaabbbbabbbaabaaabbbabaabbb
|
||||||
|
bbbbbaabaaababbaaaabbaaabbbbababbabaabbabbbaaabbaaaaabbb
|
||||||
|
baabbbaabaabbababbababbabaaaabab
|
||||||
|
abaababbabbabbaaababbbba
|
||||||
|
aaabbaababbabababababaaabbabbbbb
|
||||||
|
aaababbbbabbabaaabaabaaabbbbaaba
|
||||||
|
baaababbbabbaaabbaabaaaabbbababb
|
||||||
|
abbbbbbaabbbabbaaabaaaabbbababbbaaabbbab
|
||||||
|
bbbbbababbbaababbababaab
|
||||||
|
aaaababababbbaaaabababbb
|
||||||
|
bbabbaababbababaaabaaababbbbababbbbbbbabbbaaabbb
|
||||||
|
abbbbbbbaabaabbaaabbbaab
|
||||||
|
bbbaababbbbbbaaaaaaabbab
|
||||||
|
babbbbbaaaaababbaaaaaabb
|
||||||
|
baabbbaabaabbababbabbabb
|
||||||
|
baabbababbbaababaabbabba
|
||||||
|
baababbabaaabbabbaaababbbabbbbbbbaababbbbabbbabbbababaab
|
||||||
|
bbaaabaaaaababbaaaabbbab
|
||||||
|
babaabbaabbbbbbbbabaabbb
|
||||||
|
ababaabaaaabbbaaabababaaaabaaabbbaaaaabb
|
||||||
|
baabbabbaabbaabbaaaabababbabaaab
|
||||||
|
aabaabbbaaababbbabbbbaab
|
||||||
|
bbbbbaaaaaabbabababbbbaaaabbbabb
|
||||||
|
baaabaabbaaabbbabaabaaababaabababbbababababbaaababaabaabbbbabbabaaabbabbaabbaaabaaabaaab
|
||||||
|
aabbbbbbaabaaabbbbabbaaabaaaaabaabbbaaaababaabaa
|
||||||
|
aaaabaabbababbabbbbabbbbaabbbababbbaaabaababaaaaabbabbab
|
||||||
|
babaababaaaabaabbaabaabbbaabbababbabbbbb
|
||||||
|
bbbaababbbbaabaaabbbabbbabbaaaba
|
||||||
|
baaaabbabbbbaaaaaaaaabbbbbabababbbbababaaababbbabbababababbbbbba
|
||||||
|
abbbabaaabaabbbaaabaabaabbbbbbab
|
||||||
|
babaaaaabaabaabaaaabaabb
|
||||||
|
aabababbabaabaaaaaaabbbabbaabbabaaaabbabbaaabbba
|
||||||
|
ababbbabbbbbbaaaaaabbaababbbaaaaaaaaabba
|
||||||
|
baabbabbbbabbaababbabbaaabaabbba
|
||||||
|
bbaaababbabbabbabbabbaabaaaaaababaabaaabaababaaa
|
||||||
|
baabbbbbbbbaabaaabbabaaa
|
||||||
|
abbabababaaabbabbaaaabab
|
||||||
|
ababbababaabaaabaabbbbbbbbbabaab
|
||||||
|
baabababbaaaabbababbaaaaabaabbaa
|
||||||
|
abbaaabbabbabbabaaaaabbbbabbbbaaababbbbbaababbabbaababbaabbbabba
|
||||||
|
abbbbababbabaabaabbaaaabbaabbabaaabbaababaaabaababaaaabbabababba
|
||||||
|
babbaaabbbabbabaaaabbbab
|
||||||
|
aabbbaaaabbbbabbaaabbbbb
|
||||||
|
baababbbbaaabbababbbabbbbbaaabaaaabbaaaaaaaabbab
|
||||||
|
babaabababababbababbbbbaabbabaaa
|
||||||
|
babaaabaaaabbabbaabaaababbaabaabbaababbbabaabbbabbbbabbaabbaabaa
|
||||||
|
baababbabababbabbbabbaabbaabbbaabbbababb
|
||||||
|
baabaabbababaabbaabbaaaaaaaaabba
|
||||||
|
aaaababbbabbaababbbbaaba
|
||||||
|
bbbabbbaaaaababbaabbbbaa
|
||||||
|
abaaaabaaaaaaaaaaaabbaaaabaabbab
|
||||||
|
ababbaabbabbaaaabbbbaaab
|
||||||
|
baaabbbbabbbaabababaabababaabbbb
|
||||||
|
baabaabaaabaaabbbbbaabaaaabaababaabbbbba
|
||||||
|
bbbbabaababbbaabaaaaaabbbaaababa
|
||||||
|
abbabababaabbabbababbabb
|
||||||
|
babababababaaaaaabbbbbaa
|
||||||
|
aabbbbbbbabaaaaabbbaaaaaabababbbabbbaabbababbaaa
|
||||||
|
babababaabaababaababaaab
|
||||||
|
baababbabaabbbbaaaabbbaabaaabbabababaababaaabaabababbbbbbbabababbaaabbaa
|
||||||
|
abbbaabaaabbbabaaaabbbbb
|
||||||
|
bbabbabaabbabbbaaabbabbbaababbababbabaaa
|
||||||
|
abbaababaaababbbabbbbbab
|
||||||
|
aaababbababaaabbabbababb
|
||||||
|
baaaaabababaaabbbaabbbaabaaabaaa
|
||||||
|
aabaaaabbbbbababaaababbb
|
||||||
|
abaaaabbbabbabbaabbbbbbbabbaabbb
|
||||||
|
bababaaababbbbaaaaaabababaaaababbaabbbabbaaabbabaabaaaaababaaaabaabaabbabbbaaabbaababaab
|
||||||
|
aabbabbbabbaaaaaaaababab
|
||||||
|
bbbaaaaaababbaabababbbba
|
||||||
|
ababababbbababbbaaabbaabbababbbabbaabbaa
|
||||||
|
aabbabaabaaabaabaaabaabaaaabaabbbbababbaaaababababbbbbabbbaabaaababbaabababaaaabbaaaaaba
|
||||||
|
abbbbabbbbaaaaaabbaabaaa
|
||||||
|
aaaababbbabaaabbbabaababaaabaaabaaaaabbb
|
||||||
|
ababbbaaabbabbaabbaaabbb
|
||||||
|
abaaaabbbaabbbaaaaabaaabbbabbbba
|
||||||
|
aaabaaaaaaabbabaabbabbaababbbbbaabaabbbb
|
||||||
|
aaabbabbbabbbaababaababbaaaaabbbaababbbb
|
||||||
|
aabaabaabaaaabbabaaabbaaabbabaaaaabbabbbbbabaaaabbbababbaabaabbb
|
||||||
|
abaabbaababbaaabbabaaabbbabaabbabbabbabaabbbbbabaababbaa
|
||||||
|
ababbbabbbbabbbbbaaaabbbabbabbbaaaaaaaab
|
||||||
|
abbbabbabaaabbababbbababaaabbaabaaaaabba
|
||||||
|
abaaaabababaaaaabbaabaabaababaaa
|
||||||
|
bbbbbbabbabbbbaaaaabbbabbbaaaabaaabaabab
|
||||||
|
bbbaaaaaabbbbbbbaabababa
|
||||||
|
baabaaaabbbabbbaabababbb
|
||||||
|
aabbbabaaaaaabaabbbabbaa
|
||||||
|
babaaabbaaaaabaaabbbbbbbbabaaabbaaaaabab
|
||||||
|
bababbbbbaabbabbbbaaabbb
|
||||||
|
bbaabbbaabbabbbbaabbbabb
|
||||||
|
abbabaabbabbaabaaababaaa
|
||||||
|
bababbaabaabaabbabbabbab
|
||||||
|
bbbaababbabbabaabaabbbbabaaaaabbbbbbaaab
|
||||||
|
bbbaababbabbbbaabababbba
|
||||||
|
babbaabbbabbabaaaabbabbbbabaaaabbbbababb
|
||||||
|
bbaabaababaabaaaababaaababaaabbaababbbbb
|
||||||
|
abbbabbbaababaaaaaabbabbabababaaaaababaaaaababbabbaababb
|
||||||
|
abbaaabbbaabbabbabaabbaaaababbbabbaabaabababbbabaaabbbab
|
||||||
|
abbbaaaaaabbbaaabbaaabbb
|
||||||
|
bbbbbabbabbabbaaabbabbbb
|
||||||
|
baabbabaaaaabababaaaaaab
|
||||||
|
aaaababbbbbabbbaaaababaabababbbb
|
||||||
|
abbbabaabbbababbbbabbbaaaaaaabaaaaaaabbbaaababab
|
||||||
|
baaabbbbaaabbaabbaaabbababbaababbbbaaaba
|
||||||
|
bbaababbbbbbbababaaababbabbabbbaaabbbabaabbbabbbbaaabaabaaabaaba
|
||||||
|
aaabaaaabbbbabbbbabbbabb
|
||||||
|
bbabbaababaababababbabbb
|
||||||
|
babbaaababbbbabbabbbaaabaabbabba
|
||||||
|
bbabbaabbabbabaababaaaaaaababbabbaaabbaababbbbbaababbbabaababbabbbabbbaabbbabbbbabaabbab
|
||||||
|
baabaaaaabaaaabbabbbbbbbaabbbaaabaaabbabbabbabbaaaaaaababaaababaaaaaabbb
|
||||||
|
bbaabbabbbaaabaabbaababa
|
||||||
|
aababbbabbbaabaaaaabbbab
|
||||||
|
baabbbbaabbabbaabbaaaabb
|
||||||
|
bbabbaabbaaaabaaaaaabbbb
|
||||||
|
baabaabaaabaabbaabababbb
|
||||||
|
abaabbaabbaabaabbbaabbabaaabbbaaaaaaabbb
|
||||||
|
bbbbbababbaaababbaabbaaa
|
||||||
|
bbaabbabbbabbaaabaabbbab
|
||||||
|
bbbaaaaaabbbbbbbaabbabaa
|
||||||
|
bbaaababbbabaabbaabbaaaaaaabbbbbbaaababaabbbbbbbbabaabaaaabbabab
|
||||||
|
aabbaabbbabbaaabaabbaaaabbababab
|
||||||
|
abbbabbaaaababbaabbaaaaa
|
||||||
|
aaabbabbbbaabaabbbabbaaaabbaaabbbabbbaba
|
||||||
|
abaabaaababbababaaababbbaabbbabb
|
||||||
|
abaaaabababbbbbbaaabaaaaabababbaaabbbbab
|
||||||
|
abbaabbbbbabbbbabbbaaababbabaaabbbabbbab
|
||||||
|
babbbbbbbabaabbabaababbaabaabaaaabbbabaababbbbab
|
||||||
|
bbbabbbbaabbaaaaabbaabaa
|
||||||
|
bbbbbaaababababbbaaababa
|
||||||
|
baabbbaabaabbababbbaababbbababbbabaabbbb
|
||||||
|
bbaababbbabaaabbabbbaaab
|
||||||
|
baabaaaaabbaaaaabbbaaaabbabbabbaaabbbaaaaabaabbbbbbbaaba
|
||||||
|
abbbababaaaaabaaababbabb
|
||||||
|
aaaaabaababbaaabaaaababbbaaabbbbababaaaa
|
||||||
|
ababbaababbabbbababbabbabbabbaababaaaaabbbbbaaaabbbaaaba
|
||||||
|
baaabaaabbbbabaaaababbaabbbaaabaababbabbaaabaaba
|
||||||
|
bababbaaababababaabbabbbaabaabaaabaaabbaabbbaaaaabbbabaa
|
||||||
|
abbaaabbabbaababbbaaaaaabbaaaabb
|
||||||
|
bbaabaabbbbaaaaabababababbabbbaaaaabbbba
|
||||||
|
bbaababbabbababaabbbaababbabbabbbbabaaab
|
||||||
|
abababaaabbbaaaabababbaaabbbaaababaaaaab
|
||||||
|
abbabaababbbbabbbbaabbbb
|
||||||
|
ababbaabbabbabababaaabbb
|
||||||
|
aababbbabababaababbbbbbaababbabbaababbbbbbbbaaaababbaabbbaaaaabb
|
||||||
|
abbbaaaaaabababbababbbba
|
||||||
|
babbabaaaaabbbaabaaabbaa
|
||||||
|
aabaaababaabbbaaaabaaababaaababbabbbaaaaaaaabbaa
|
||||||
|
bbaabbabbbabbabaaabbaaba
|
||||||
|
bababbaabbbaababbaaaabaaabbbbaab
|
||||||
|
bbbabbbabbbabbababbbaaab
|
||||||
|
abbbbbbbaabbabbbaaaabaabaabbaaabaaaabbbb
|
||||||
|
bbbbbabbbaababbbaabbaaba
|
||||||
|
ababababababababababbabb
|
||||||
|
baaaaaaabbabbaababaaabbb
|
||||||
|
bababbaaabbabababababbabaabaabbabbaababaababbbbb
|
||||||
|
bbabbaaabbbbaabaababababaabbbbabbabaabbbbaabbbaabbaaaababaabaabb
|
||||||
|
abbababaabaaaabbbabaaaab
|
||||||
|
bbabaabababbaabbbabbbbbbabbbbaabaabaabaa
|
||||||
|
bababbaaaabaaaaabbbbaabb
|
||||||
|
bbaabbabaabaabbbbabaabbaababaaababbaaaab
|
||||||
|
babaaabaaabaaaabababaabababbbaba
|
||||||
|
babbbbbaabababbaaaabbaabbabbabaabbaabbbb
|
||||||
|
abbababaabababaababaaababbbabbaa
|
||||||
|
aabaaaaaabbabbaabbabaababaababbaabaaabbb
|
||||||
|
abaabbaabbbbbaaaabbaabba
|
||||||
|
babaabbabaabbbbbbbabbbaababbbaabbbbababbaabbbaaabababbbbbaaababaabbbabbabbaaaabbaababaabaaaabbba
|
||||||
|
aaaabbbabbaaababaaabbaaaabababaababbbbababbaabbb
|
||||||
|
baabbabaabbaababaabbabab
|
||||||
|
ababaabbaabaaabaabbababb
|
||||||
|
aabbbababbaabbabaaaaabaa
|
||||||
|
ababaababbbabbbbbaaaabab
|
||||||
|
ababaababaaaaababbbabbbaabbbabaa
|
||||||
|
abaabbaaabbabababbbbabba
|
||||||
|
babbbbbabbaaaaaaaaaaabab
|
||||||
|
bbabbababbbabbbbababbbbb
|
||||||
|
abaababbabbaaabbbbbbababbbbbaaaa
|
||||||
|
abaaaabbbababbbbaababbbb
|
||||||
|
baabaababababbbbababbabb
|
||||||
|
baaaabaaaaabbabbabbabababaabbababbbbabaaabaaababbabbaaaa
|
||||||
|
aaaaaaaabbbabaaabbabbabaaabbbbaaabaaababababbabbabababab
|
||||||
|
bbbaaaabaaabaaaaaabaabbbbababaab
|
||||||
|
baabbbbabaaaaabaabbbaabb
|
||||||
|
abaaaabaabbaaaaaabaababbbaaabbba
|
||||||
|
ababbbaabbbaabaaaaababab
|
||||||
|
aaababbabbbbbabbabbbaaaabababaab
|
||||||
|
bbbbabbbbababbabaabbbbba
|
||||||
|
baaabbbbbbbbbaaabbaaabaaabaaabbaaababbab
|
||||||
|
bbabbaabababbbbbbbbaaabbabbbaaba
|
||||||
|
aaabbababaabaaabbaababbbbbaabbababbaaabbbbabbabbaabbbbab
|
||||||
|
abbaaaaabbabbaaaabbababb
|
||||||
|
baabaabbbaabbabababbaaabbaaaaababaaaabbabbbbbbaa
|
||||||
|
babbaabaaabababbbabbabaaabaaaaabbbaaabbb
|
||||||
|
babababbaabbaabbbbbbaaab
|
||||||
|
babaaababbbaabaaaaaabaabbbbaaaabababbaaa
|
||||||
|
aaabbbbbbbabababaabbabba
|
||||||
|
baaabbaaaaabbbbaaababbaaabbaaaaabbabbbbbabbbabbbbbbaaaaabbaaaababaaabbbbbaabbaababbbbbbababbaaaa
|
||||||
|
ababbababaabbabaababbbababaababbabbbaaaabbbbbbaaabbababb
|
||||||
|
babababababababaaaaabbab
|
||||||
|
aaabbaaaabbbbabbabaaabbb
|
||||||
|
babbbaaabababbaabaabaabaabbaababaaaabaaaababaaab
|
||||||
|
babaaaaaabbbbabbbbaabbba
|
||||||
|
bbabbaabaabbbaaaaabaaabaabbbababaabbaabaababaaaaababbbba
|
||||||
|
aabbbabaabbabbbababbaaaa
|
||||||
|
baaaabaababbabaabbbaabbb
|
||||||
|
aaabbabaaaabaaabaabbaaaabbaabbaa
|
||||||
|
abaabaaaabbabbaabbaababbabababbabbbbaabbbbaabbba
|
||||||
|
bbbaaaaabbabbabaabaaabaa
|
||||||
|
ababbbabbabbaababbaabbaa
|
||||||
|
aaabbaaaababbbabbaabbaaa
|
||||||
|
aaaaabaaabbabbaaabbbbaab
|
||||||
|
bbbaaaababaabaaabbbabbbabaabaaaabaabbbaaabbabaabaaaabbbb
|
||||||
|
babaaabababbbbbaaaaabbaa
|
||||||
|
baabaabbbabaabaabbaaaaab
|
||||||
|
baababbbbaaabbabaababbbb
|
||||||
|
bbaababbbbababbabbabbbbb
|
||||||
|
abbaababaabaabbaabbbbbbbbbaabbbbbbaababa
|
||||||
|
babaaaaaaaababbaabaaabab
|
||||||
|
babaaaaabbaabbaabaabbaabbbaabaaabbbbaabbbbbaabba
|
||||||
|
bbbaaabaaabbbabbabbaabbb
|
||||||
|
bbbbabababbaaaaaaabbbaaabbbbabaabbaaaaaabbbbaaaa
|
||||||
|
bbbaaaaaabaabaaabaaababa
|
||||||
|
aaabbababaaabbabbabaaaaaaaababababbbbaab
|
||||||
|
babbbbbabababbababaaabbb
|
||||||
|
aabababbaabbabbbbbbbbbba
|
||||||
|
abbabbaaabaababbbabbabbaaaaabaabaabbbbba
|
||||||
|
babbabbaabababbabababbbbaaababaaabbaaabbaabaabaa
|
||||||
|
aaaaaaaabbbabbbaabaaabba
|
||||||
|
baaaabaaabbbbbbaaabaabbbbbbbaaaa
|
||||||
|
abbbaaaabababaaabbbbbabbabaaabaaaaababbbabaababaabaaaaaa
|
||||||
|
abaababbabbbbbbaaabbabbbabbaaaab
|
||||||
|
abbabbbababbaaabbbabaaaabaababaaabbaabba
|
||||||
|
aaaabaabbbababbbbabbbbaabbbabbababaaaaab
|
||||||
|
abbaaabbabaababbbaabaababaaababa
|
||||||
|
abababababbaaabbbaaabbababaabaab
|
||||||
|
baaabbabaabaabbaaabababa
|
||||||
|
bbaaabaaaaaaabaababbaabb
|
||||||
|
ababbabaaabbabaaaabababa
|
||||||
|
babbbbaabbbbbaabbbaababa
|
||||||
|
babaaaababaabbababbabbbaabaaabababbabbaaaabbaabb
|
||||||
|
baaababbaaabaaabaabbabbbbaaaaaab
|
||||||
|
abaabbaabbabbaabaabababbabbabbbb
|
||||||
|
bbbaababaababbbabbababab
|
||||||
|
baababbabaaaabaaabababbababaaaab
|
||||||
|
babbaababbabaaaaababbaaa
|
||||||
|
aababbbaaabababbaabaabab
|
||||||
|
bbaabbabaabbbbbbbbababbbaaaabbbabbbbaaba
|
||||||
|
bbaaababbbaaabaabbbaaabaababbbbababbbabbababbbbaabaabbba
|
||||||
|
bbabaaaaaabbbababbaaabbb
|
||||||
|
baaaabaabaabbababaabaaababbbaabbbbabbaabbbbabbabaaababaaaabbaaaaaaaabbabaabbbabaabbabbaa
|
||||||
|
abaaaabbaabbabaaaabbbababbabaaaaaabbaaba
|
||||||
|
baaaaaabbbabbbbaabbbbbbbbbabaabbbabbabababaabababbbbaaabaaaabbbababbbbaa
|
||||||
|
aaaaaaaaaabbbabaaabbaaab
|
||||||
|
aababbbababaabbaaaabbbababbbaabb
|
||||||
|
abbbbabbaaabbbaaababaabbbabababa
|
||||||
|
aaaaabaabaaaabaaabbaabaa
|
||||||
|
bababbabbabaababbabbbabb
|
||||||
|
abbbbabbbaabbbabbbbaabaabbbaabbaaaaababaaaaaaaaababaaaba
|
||||||
|
aabaaababbbaabaabaabaaaabbbbaaababbbbaba
|
||||||
|
abbabaabbbaaababaaabaaba
|
||||||
|
bbaaababbbbbbaababbbabaa
|
||||||
|
bbabaaaababbbaaaabaaaaaa
|
||||||
|
aaabbaaabbabaababaaaabba
|
||||||
|
baabbabaaabbaaaaabbbbaba
|
||||||
|
baabaabababbaabbbbababaa
|
||||||
|
aaaabaabbbaaababaabbaabbabbbaaaaabaabaab
|
||||||
|
aaababbbaabaaaabbaaaabbbbabbbbba
|
||||||
|
aaabbbaababbaababbaaaaba
|
||||||
|
bbbabbbababbbaabbbaababa
|
||||||
|
abbbaaaabbabbbaaabbaabaa
|
||||||
|
aaaaaabbbbabbaaaabbabbbabaabbbabbbaaabaabaaaabaa
|
||||||
|
abababaaaaaaaaaaabbbaababaaaabbabbaabbabbabaabaaaabaabaababaabbabaabbbbb
|
||||||
|
ababbbaaabaabbaaabaababaabbbbbaa
|
||||||
|
abbabbbaababbababbbbbabaaabaabbabaabbabbbbaaaabaabaaabaa
|
||||||
|
ababbaabababbbabbbbbaaab
|
||||||
|
babbabaababaaabbbaabaabb
|
||||||
|
bbababbbaaabbaabbabbabaaaabaabaa
|
||||||
|
abaababbbaabbababaaababbbabaababbaaaaabaabbabbbb
|
||||||
|
ababababaaababaabbaaaabb
|
||||||
|
bbbaaaaaababbaababaabbba
|
||||||
|
babbbaababbbabbabbabaababaababbabbaababa
|
||||||
|
baabaabbbbaaaaaabbbaaabb
|
||||||
|
abbbaababbbbbabababbaabaaaaaabaaabbaaaaaabbbbaabaabbbbaaaabbbbabaababaab
|
||||||
|
ababaabbaabababbbbabbaabaaababaabaaaaababaaaabba
|
||||||
|
ababbbbbaabbaababababaababaaaaaaabbaaaaabbabbbaa
|
||||||
|
abbaaabbabaaaabbbbbabbbbbabbaabbbbbaaaaaabbbabbbbbbaabba
|
||||||
|
aaababbaaaaabaabbbaaababaaaabbbb
|
||||||
|
aabaaababbbbbbabaaabbabaabbaaaaabbbbbbbbababababbbaababbbabbabab
|
||||||
|
bbbaababbaaabbaabbbbbbaaabaaaaabaabbaababbaaaaab
|
||||||
|
aaaabbbaababbaabbabaabbababaaabbbaabbaab
|
||||||
|
bbbabababbababababbaabaa
|
||||||
|
bbbbabaabbaababbaaaabbbaabbbbbab
|
||||||
|
aaabbaaaaaaabbbaabbbbbbaabaaaabababbbaaabbaababbbaaaaaaaababbbbabababaaa
|
||||||
|
aaaaabbababbababbbababbbbaaababbabaabbaaaababbaabbaabbaa
|
||||||
|
bbabbabaaaaaabaabababbbbaaabbbba
|
||||||
|
ababbbaabbababbaaaaaaaab
|
||||||
|
babaaabbbaabbabaaaabaabb
|
||||||
|
babbababbbbbabaabababaab
|
||||||
|
bababbabbbaabaabbbbabaab
|
||||||
|
abbbaabaaabbbbbbaabbbbbbaabaaabbbbbbbaaaababbaaaaababaaabaaabaaa
|
||||||
|
abaabaaaabaababababaaabaaaabbbaabbabaaab
|
||||||
|
ababbbabaaaaaaaababbbbab
|
||||||
|
bbabbbbaabbbbabaaaaaabbbbababbaaabbbbbbbbbaabbbabbaaababababbbbbabbaabbabbabaaaabbbabbba
|
||||||
|
abaaaabbaaabbaabaaabaaaabbbabbbbababbbaabaabbbab
|
||||||
|
aabbbbbbbabbaababaabbababaabbbba
|
||||||
|
baaaabbbbababbabbbaabbba
|
||||||
|
abbbaaaaababbbababbabaaa
|
||||||
|
bbbabbbaaaababbaabaabbaaabaababaabbabababbaaabbaaaaaaabbabaabbabbbbaabbb
|
||||||
12
input/day19_example.txt
Normal file
12
input/day19_example.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
0: 4 1 5
|
||||||
|
1: 2 3 | 3 2
|
||||||
|
2: 4 4 | 5 5
|
||||||
|
3: 4 5 | 5 4
|
||||||
|
4: "a"
|
||||||
|
5: "b"
|
||||||
|
|
||||||
|
ababbb
|
||||||
|
bababa
|
||||||
|
abbbab
|
||||||
|
aaabbb
|
||||||
|
aaaabbb
|
||||||
12
src/day17.rs
12
src/day17.rs
@@ -13,7 +13,7 @@ pub fn solve() {
|
|||||||
let lower = Vec4::of(-cycles-1, -cycles-1, -cycles-1, -cycles-1);
|
let lower = Vec4::of(-cycles-1, -cycles-1, -cycles-1, -cycles-1);
|
||||||
let upper = Vec4::of(initial_width + cycles+1, initial_height + cycles+1, cycles + 2, cycles + 2);
|
let upper = Vec4::of(initial_width + cycles+1, initial_height + cycles+1, cycles + 2, cycles + 2);
|
||||||
|
|
||||||
let mut initial_state = BoolGrid3D::new(lower, upper);
|
let mut initial_state = BoolGrid4D::new(lower, upper);
|
||||||
for y in 0..initial_height {
|
for y in 0..initial_height {
|
||||||
let mut line_chars = lines[y as usize].chars();
|
let mut line_chars = lines[y as usize].chars();
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ pub fn solve() {
|
|||||||
println!("Day 17 Part 2: {}", part2);
|
println!("Day 17 Part 2: {}", part2);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_conway_cube_simulation(initial_state: &BoolGrid3D, cycles: u32, restrict_fourth_dimension: bool) -> BoolGrid3D {
|
fn run_conway_cube_simulation(initial_state: &BoolGrid4D, cycles: u32, restrict_fourth_dimension: bool) -> BoolGrid4D {
|
||||||
|
|
||||||
let mut prev_state = initial_state.clone();
|
let mut prev_state = initial_state.clone();
|
||||||
let mut next_state = initial_state.clone();
|
let mut next_state = initial_state.clone();
|
||||||
@@ -120,7 +120,7 @@ impl Vec4 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
struct BoolGrid3D {
|
struct BoolGrid4D {
|
||||||
|
|
||||||
data: BitArray,
|
data: BitArray,
|
||||||
lower: Vec4,
|
lower: Vec4,
|
||||||
@@ -128,9 +128,9 @@ struct BoolGrid3D {
|
|||||||
size: Vec4,
|
size: Vec4,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BoolGrid3D {
|
impl BoolGrid4D {
|
||||||
|
|
||||||
fn new(lower: Vec4, upper: Vec4) -> BoolGrid3D {
|
fn new(lower: Vec4, upper: Vec4) -> BoolGrid4D {
|
||||||
|
|
||||||
assert!(lower.x < upper.x && lower.y < upper.y && lower.z < upper.z);
|
assert!(lower.x < upper.x && lower.y < upper.y && lower.z < upper.z);
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ impl BoolGrid3D {
|
|||||||
w: upper.w - lower.w
|
w: upper.w - lower.w
|
||||||
};
|
};
|
||||||
|
|
||||||
return BoolGrid3D {
|
return BoolGrid4D {
|
||||||
data: BitArray::new((size.x * size.y * size.z * size.w) as usize, false),
|
data: BitArray::new((size.x * size.y * size.z * size.w) as usize, false),
|
||||||
lower, upper, size
|
lower, upper, size
|
||||||
}
|
}
|
||||||
|
|||||||
112
src/day19.rs
Normal file
112
src/day19.rs
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
use super::util;
|
||||||
|
use regex::Regex;
|
||||||
|
use crate::day19::RuleType::{Letter, Options};
|
||||||
|
use std::collections::{HashMap, HashSet};
|
||||||
|
|
||||||
|
pub fn solve() {
|
||||||
|
let lines = util::read_file("input/day19.txt");
|
||||||
|
let mut rules_map = HashMap::new();
|
||||||
|
lines.iter()
|
||||||
|
.take_while(|s| s != &&String::from(""))
|
||||||
|
.for_each(|s| {
|
||||||
|
let mut line_split = s.split(": ");
|
||||||
|
let idx = line_split.next().unwrap().parse::<usize>().unwrap();
|
||||||
|
let rule = Rule::parse(line_split.next().unwrap());
|
||||||
|
rules_map.insert(idx, rule);
|
||||||
|
});
|
||||||
|
|
||||||
|
let messages: Vec<&String> = lines[(rules_map.len() + 1)..].iter().collect();
|
||||||
|
|
||||||
|
println!("{:?}", try_match(&messages[0], &0, &rules_map));
|
||||||
|
let part1 = messages.iter().filter(|m| try_match(m, &0, &rules_map).contains(&m.len())).count();
|
||||||
|
println!("Day X Part 1: {}", part1);
|
||||||
|
|
||||||
|
// We update the rules to include the loops:
|
||||||
|
rules_map.insert(8, Rule::parse("42 | 42 8"));
|
||||||
|
rules_map.insert(11, Rule::parse("42 31 | 42 11 31"));
|
||||||
|
|
||||||
|
|
||||||
|
let part2 = messages.iter().filter(|m| try_match(m, &0, &rules_map).contains(&m.len())).count();
|
||||||
|
println!("Day X Part 2: {}", part2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Calculates and returns until when the string was matched
|
||||||
|
fn try_match(message: &str, rule_idx: &usize, rules: &HashMap<usize, Rule>) -> HashSet<usize> {
|
||||||
|
|
||||||
|
let rule = rules.get(&rule_idx).unwrap();
|
||||||
|
if rule.rule_type == Letter {
|
||||||
|
|
||||||
|
if message.starts_with(rule.letters.as_ref().unwrap()) {
|
||||||
|
let mut res = HashSet::new();
|
||||||
|
// Note: kind of a hack here, all the "letter" based matchers are of length 1
|
||||||
|
res.insert(rule.letters.as_ref().unwrap().len().clone());
|
||||||
|
return res;
|
||||||
|
} else {
|
||||||
|
return HashSet::new();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
return rule.options.as_ref().unwrap().iter()
|
||||||
|
.flat_map(|options| {
|
||||||
|
let mut try_from = HashSet::new();
|
||||||
|
try_from.insert(0);
|
||||||
|
let mut next_try_from = HashSet::new();
|
||||||
|
for option_rule_idx in options {
|
||||||
|
for start_idx in try_from {
|
||||||
|
try_match(&message[start_idx..], &option_rule_idx, rules)
|
||||||
|
.iter()
|
||||||
|
.for_each(|m| { if m != &0 { next_try_from.insert(start_idx + m); () }})
|
||||||
|
|
||||||
|
}
|
||||||
|
try_from = next_try_from.clone();
|
||||||
|
if try_from.is_empty() { break; }
|
||||||
|
next_try_from.clear();
|
||||||
|
}
|
||||||
|
return try_from;
|
||||||
|
}).collect();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
struct Rule {
|
||||||
|
|
||||||
|
rule_type: RuleType,
|
||||||
|
letters: Option<String>,
|
||||||
|
options: Option<Vec<Vec<usize>>>
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Rule {
|
||||||
|
|
||||||
|
fn parse(input: &str) -> Rule {
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
static ref LETTER_RULE_MATCHER: Regex = Regex::new(r###"^"([a-z])"$"###).unwrap();
|
||||||
|
}
|
||||||
|
return if LETTER_RULE_MATCHER.is_match(input) {
|
||||||
|
Rule {
|
||||||
|
rule_type: Letter,
|
||||||
|
letters: Option::Some(LETTER_RULE_MATCHER.captures(input).unwrap().get(1).map(|m| String::from(m.as_str())).unwrap()),
|
||||||
|
options: Option::None,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let options =
|
||||||
|
input.split(" | ")
|
||||||
|
.map(|s| s.split(" ").map(|o| o.parse::<usize>().unwrap()).collect::<Vec<_>>()).collect::<Vec<_>>();
|
||||||
|
Rule {
|
||||||
|
rule_type: Options,
|
||||||
|
letters: Option::None,
|
||||||
|
options: Option::Some(options)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Clone)]
|
||||||
|
enum RuleType {
|
||||||
|
Letter, Options
|
||||||
|
}
|
||||||
@@ -19,8 +19,9 @@ mod day14;
|
|||||||
mod day15;
|
mod day15;
|
||||||
mod day16;
|
mod day16;
|
||||||
mod day17;
|
mod day17;
|
||||||
|
mod day19;
|
||||||
|
|
||||||
const MAX_DAY: u8 = 17;
|
const MAX_DAY: u8 = 19;
|
||||||
const BENCHMARK_AMOUNT: u32 = 100;
|
const BENCHMARK_AMOUNT: u32 = 100;
|
||||||
|
|
||||||
fn solve(day: u8) {
|
fn solve(day: u8) {
|
||||||
@@ -42,6 +43,8 @@ fn solve(day: u8) {
|
|||||||
15 => day15::solve(),
|
15 => day15::solve(),
|
||||||
16 => day16::solve(),
|
16 => day16::solve(),
|
||||||
17 => day17::solve(),
|
17 => day17::solve(),
|
||||||
|
// 18 => day18::solve(),
|
||||||
|
19 => day19::solve(),
|
||||||
_ => println!("This day is not yet implemented")
|
_ => println!("This day is not yet implemented")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user