Day 19 - part 2 is more focused than I'd like
This commit is contained in:
530
19input.txt
Normal file
530
19input.txt
Normal file
@ -0,0 +1,530 @@
|
||||
70: 90 92 | 53 50
|
||||
99: 90 102 | 53 22
|
||||
24: 130 90
|
||||
125: 85 53 | 100 90
|
||||
61: 53 58 | 90 26
|
||||
88: 33 53 | 46 90
|
||||
32: 65 90 | 90 53
|
||||
48: 46 53
|
||||
116: 53 50 | 90 18
|
||||
40: 53 83 | 90 81
|
||||
54: 46 53 | 5 90
|
||||
36: 50 90 | 130 53
|
||||
58: 92 90 | 130 53
|
||||
2: 19 53 | 75 90
|
||||
95: 53 46 | 90 19
|
||||
124: 46 53 | 33 90
|
||||
79: 91 53 | 7 90
|
||||
46: 90 90 | 53 90
|
||||
87: 9 90 | 84 53
|
||||
122: 90 46 | 53 33
|
||||
15: 89 90 | 79 53
|
||||
41: 90 4 | 53 119
|
||||
7: 53 128 | 90 128
|
||||
93: 53 120 | 90 37
|
||||
121: 15 53 | 103 90
|
||||
91: 90 33 | 53 110
|
||||
5: 53 90 | 65 53
|
||||
26: 53 19 | 90 107
|
||||
44: 53 75 | 90 32
|
||||
23: 107 53 | 50 90
|
||||
33: 90 53 | 90 90
|
||||
75: 53 53 | 90 90
|
||||
18: 65 65
|
||||
59: 53 107 | 90 32
|
||||
104: 90 33 | 53 46
|
||||
20: 121 90 | 123 53
|
||||
100: 90 75 | 53 46
|
||||
131: 18 90 | 46 53
|
||||
9: 90 67 | 53 105
|
||||
37: 53 75 | 90 128
|
||||
3: 53 29 | 90 22
|
||||
120: 53 92 | 90 33
|
||||
35: 55 53 | 30 90
|
||||
115: 65 107
|
||||
106: 90 46 | 53 19
|
||||
89: 90 59 | 53 68
|
||||
83: 90 46 | 53 130
|
||||
25: 90 87 | 53 41
|
||||
11: 42 31
|
||||
84: 53 117 | 90 34
|
||||
8: 42
|
||||
53: "a"
|
||||
86: 53 6 | 90 12
|
||||
76: 53 78 | 90 97
|
||||
52: 126 90 | 115 53
|
||||
31: 53 35 | 90 20
|
||||
112: 110 90 | 32 53
|
||||
82: 101 90 | 127 53
|
||||
119: 53 27 | 90 93
|
||||
117: 90 81 | 53 23
|
||||
57: 82 53 | 43 90
|
||||
105: 90 126 | 53 21
|
||||
111: 53 32 | 90 110
|
||||
68: 53 18 | 90 46
|
||||
73: 71 90 | 24 53
|
||||
49: 77 90 | 48 53
|
||||
81: 90 50 | 53 75
|
||||
102: 32 53 | 128 90
|
||||
12: 92 53 | 19 90
|
||||
60: 62 90 | 108 53
|
||||
101: 53 104 | 90 62
|
||||
65: 53 | 90
|
||||
50: 53 90
|
||||
97: 53 56 | 90 64
|
||||
63: 99 90 | 39 53
|
||||
43: 90 125 | 53 60
|
||||
66: 130 90 | 33 53
|
||||
27: 53 2 | 90 14
|
||||
4: 3 90 | 74 53
|
||||
118: 53 76 | 90 57
|
||||
113: 86 53 | 13 90
|
||||
56: 90 28 | 53 54
|
||||
38: 36 90 | 69 53
|
||||
39: 10 53 | 23 90
|
||||
14: 90 50 | 53 18
|
||||
45: 53 72 | 90 40
|
||||
21: 130 90 | 107 53
|
||||
30: 90 113 | 53 1
|
||||
19: 53 53 | 90 53
|
||||
130: 53 53
|
||||
110: 53 65 | 90 90
|
||||
0: 8 11
|
||||
77: 53 110 | 90 92
|
||||
62: 53 33 | 90 19
|
||||
126: 50 90
|
||||
29: 75 53 | 5 90
|
||||
129: 98 53 | 47 90
|
||||
47: 53 94 | 90 95
|
||||
71: 107 53
|
||||
92: 53 53 | 90 65
|
||||
127: 22 53 | 109 90
|
||||
6: 92 53 | 32 90
|
||||
51: 26 90 | 66 53
|
||||
107: 90 53 | 53 90
|
||||
72: 90 124 | 53 104
|
||||
1: 53 96 | 90 52
|
||||
103: 53 73 | 90 61
|
||||
74: 2 90 | 131 53
|
||||
64: 90 7 | 53 122
|
||||
67: 53 70 | 90 104
|
||||
42: 53 25 | 90 118
|
||||
123: 63 90 | 80 53
|
||||
17: 46 53 | 130 90
|
||||
10: 19 90 | 33 53
|
||||
13: 53 112 | 90 17
|
||||
28: 90 128 | 53 110
|
||||
114: 53 5 | 90 50
|
||||
78: 49 90 | 51 53
|
||||
16: 111 53 | 14 90
|
||||
90: "b"
|
||||
85: 130 90 | 50 53
|
||||
80: 38 53 | 16 90
|
||||
69: 110 53 | 107 90
|
||||
98: 53 44 | 90 88
|
||||
94: 5 53 | 46 90
|
||||
108: 18 53 | 75 90
|
||||
55: 90 129 | 53 45
|
||||
128: 90 90
|
||||
34: 106 90 | 114 53
|
||||
109: 90 110 | 53 50
|
||||
96: 36 90 | 116 53
|
||||
22: 75 53 | 18 90
|
||||
|
||||
aaaaaaaabbbbaabaabbbaaba
|
||||
aaaaaaaaabbaaabbbaabaaaaabbaaabaaabbbbbb
|
||||
babaabaaabaaabbbaaaabbba
|
||||
baaaabbbabbabbbbabaababa
|
||||
aaaaabaabbbabbbabaaabababaabaabbbaaaabba
|
||||
babababbbaababbabaaaaaab
|
||||
bbabbbabbabaaabaaaaaaaba
|
||||
bbaabbaaaababbabbbabbbbb
|
||||
babbbbbbbbbababaaaabbbab
|
||||
abbbbbbaaaabbaaaaabbaaababbbbbababbaaaab
|
||||
aabbaabaaabaabaababbbaaa
|
||||
baaabaabaaabaabbbbaaaaba
|
||||
aabababbaabaaaabbaaaabaaabbbbbaa
|
||||
bbbbbababbaabaaabaababbababbaabababbababbaabbabaaaabbbba
|
||||
bbbaabbbaababbaaaaaaaabb
|
||||
aaababbbbbaaababababaabb
|
||||
bbabaabbababbbaabbababaa
|
||||
baaabababbbbbaaababbabab
|
||||
aaaababaaabbaababbaaaabb
|
||||
ababbabaaabaaaabbbbaaaba
|
||||
bbaaababbbbababbabbaabba
|
||||
babbbbbbbbbababababbaaab
|
||||
babaabbbbababaababbaabaabbabaabb
|
||||
baaaaabaaaaaabaabbaaabaa
|
||||
aabbabaaabaaabababbbbaab
|
||||
bababaabaabbaabbababaaab
|
||||
babaababbbbbbabababbbaaa
|
||||
babaaabbaababaaaaaaabbbb
|
||||
bbbbbabbbbaabaaabbaabbaabaabbaabaababbaa
|
||||
bbababaaaaaaaababbbaabbabbbaabbabbabbaabaaaaaaaaabbbabbbbaabbaababaaaaabaabbaaaa
|
||||
abaaabababaaabaabbbaaaaa
|
||||
baabbbbbabbbabbbbbaababbaababaaabbbbaaaa
|
||||
abbbabbbabbbaabbbaaaabab
|
||||
babbabbbabbbbabbaaabbaaabbababbabbbbbbaababaabbb
|
||||
babaabaaabbaabaaaaabbbbbabaabaaaabbbbaaaaaaababbabbaabbbaaabaaaababaaaba
|
||||
aabbababbaaaaaaabbbbababbaabbbbaaababbbbaaaabbabbabbbbaaaabbababbbbbabba
|
||||
bbaaabbaabaabaaabbaaaabb
|
||||
bbaabaaaabbabbababbbbbabbaaaaaababbaabbb
|
||||
baaababaabbbabaabbaaaaabaaababab
|
||||
abababbabbaabaabbaaabbaa
|
||||
bbbbabbaababaaaabbbbaaaababbabbbabbbbbabbbaaabbabbbbbbbabbbaabababaabbbb
|
||||
bbabaaaaaaababbababbabaaaaaaabaabbbbbaaabababbaaaaaaaabbbbabaabaaaaaabbbbababaabaabbaababbaaabab
|
||||
babaaaabbaaabababbaaabbbbaaaaaaa
|
||||
babbbabbbaabbababbbaaabb
|
||||
abbbabaaabbabbbbbbabababaaaaabba
|
||||
baaaaaaaaababaaaabbbbbaabbaaaaba
|
||||
bbbabbbababbaababaabbabaaabbbabbabaaaababbbaaaab
|
||||
bbbaabaaabbaaaaabbabaaaa
|
||||
abababbabaababbaaabaabaaaaababbbbaaabbaabbbababbababaaba
|
||||
bbbaabbbbbbbbbaababbaabababbaabaabbbbaba
|
||||
babbaaaaaabaaabaabaabaabbbaaaababaaaaabaabbbaaaabbbabaabbabbbaabbbabaaab
|
||||
bbabbbbaababaabbababbbbaaaaabaabbaababbbabaabaaaaababaaabbabbbba
|
||||
abbabaaaaabbbbbabbaaabbb
|
||||
aababaaaaaaabaaabbababbb
|
||||
babbbbbbbbbababaaaabaaab
|
||||
bbbabaabababaaaabaaaabba
|
||||
aaababbbbabbaabbbabbbabbbbababaa
|
||||
abbbbaaaabaaaabaabaaaaba
|
||||
bbabaabbbaabbabbaaaababbbbbaabbaabaaaaaabbabbbbaababaaba
|
||||
abaaababaaaaaaabbbabbbbaabbababbbbbaababbbbbabbaabbbbbababbabbbb
|
||||
bababaababbaaaaaaabbabab
|
||||
baaabbaabbaabaaababbababbbabbbabbbbbbaab
|
||||
baaaaababaababbaaaababab
|
||||
abbaabaabbbabbaaaaabaaab
|
||||
abbbabbaabbaaaaabbbbaaaabaababbabaabbbaa
|
||||
bbaabbbbbaabbaaaabaabaaaababbaaa
|
||||
aaabaaaaabbabbabaaababaa
|
||||
aabaabbaaabbbbbaabbbbbbaabaabbba
|
||||
aababbaababbbabbabbbabab
|
||||
bbabbaaaaabbbbbaaabababa
|
||||
aaabbbbbabbbbbaababaabba
|
||||
aaaaaaaabbabaaabbbabbbaa
|
||||
bbbabaaaaaabaaaaaaababaa
|
||||
aabbbabbbabbabababbbabbbbbbbabba
|
||||
baababbababbaabaabbbbaba
|
||||
abbbaabbbabbbabbabbabbaa
|
||||
aabbaabbabbbbbbabaabbabbabbbbbbbaaabbbbbaaaabbba
|
||||
bababaabaabaaabaaaabbbaa
|
||||
bbbabaabbaaababababbbbba
|
||||
abbbaabbbbbaaaabbabbbbabababbabb
|
||||
baabaaaabbababbbabbaabbabaaaabab
|
||||
babaabbabbaabbbabbaabbababbbbabb
|
||||
aaaaabbbaaabbbbbabbabbbbbbbabaabbbabbbababaaaaaa
|
||||
babaaaabbababbaaababaababaaaabba
|
||||
bababaabbbbabababbabaaba
|
||||
aaabbbbbaabababbababbabb
|
||||
bbbaabbbbabbbbbbaabaabab
|
||||
baababbabbbbbabaabaabbbb
|
||||
abbbabaabbbbaabaababbbaa
|
||||
aababaaaaabaaabaaaaaaaba
|
||||
abbbbaaaababaaabbaaaaaaababbaaaababbbaabbaabbbbbaabbababbaaabbbb
|
||||
bbbbbbaabbbababaabaaaababbbbbaabaabbaaaabbbbaaababababaa
|
||||
bbbaabbaaaabaaababbabbaaaabbabbabaabbbaaaabaaaaa
|
||||
bbbabbbabbbbbaababaaabbbaaababbaabaabaaa
|
||||
abbbabbaabbaaaaaaabababa
|
||||
baabaabbabaaabbabbbaaabb
|
||||
aaabaabaabaaabaaababbbaa
|
||||
babbaabaabaaaabbabbbbaba
|
||||
bbbbaabbbaabbaabbbabbbbaabaaababaaaaabab
|
||||
baabaabbaaaaabaaaabbabaabbbbbabaaababbabbbbbababbabaabbbbbabaaba
|
||||
abaaabbaaabaabbaaaaabbba
|
||||
ababaaaabbaaaaaaabbbaabbabbbbabb
|
||||
babaabbababbbabbabaabaabbbbbaabbbabaaabbaaabbbba
|
||||
baabbbbbbbbabbbbbababbab
|
||||
ababbababaaaaabbbbbabbbbabaaaabbaaaaabaaabaababb
|
||||
aaabaabababaabababbababb
|
||||
aaabbbbaaaaabbbbbbabbabbbabaabaabbaaaaaabaaaaabbbbbabbbabaaaaabaababaaba
|
||||
bbaabbaaaaaababbbaababaa
|
||||
aaaaabbbbbaaaaabbaababaa
|
||||
aaabbbbbabbbbbababbbaabbaaabbabbabaaabbb
|
||||
baaaaabbbbbbbbbabbbbbabbbaabbbababbbbbaa
|
||||
abbabababbbbabbabbaabbaabaaaabaabbbbbaaabbbbbbaaabbabbbabbbaaabbbbaaabab
|
||||
bbabbbabbbbabaaaabbabbabbaaabbab
|
||||
aabbaaabaabbbabbbbbaaaba
|
||||
ababbabaabbbaabbaaaaabbbaabaabbbbbbbbbbbbaaabbbbbaabaaabbaaaabba
|
||||
bbabbbababababaabbaaabbb
|
||||
babbabbbbbbabbbabbabaabbabbaaabbababbababbabbbbbabababaa
|
||||
bbaaaaabaabaabaabbbabbbbaabbbbbbaaaaaaba
|
||||
aaaaababbaaaaababaaabaaaaaaaaaabababbabbabbaaaaa
|
||||
abaaabbbaaabaabaaabaaaabaaabbbaa
|
||||
baaaaababbabbbbaaaaaaaaabbbbabba
|
||||
bbaabbaabbbbbabaaabbbbbabaaabaaaaaabbaba
|
||||
bbaaabbabaaaaabbaabbaababaaaabaaababbbab
|
||||
aabbaaababbbbbbbaabbabba
|
||||
abbabbabbbaaabbababaaaaa
|
||||
abbaabaabbbbbbbbbbbabbbbbabaabaa
|
||||
aabbabaaababbabaabbbaaaa
|
||||
bbabaababbabbaaaaaabbbbbabbaabaabaaabbbbbabbaabbbaaaaababbaababbbbababab
|
||||
bbabbaabbbabbbbabaaabbaa
|
||||
aaaabbababbaaabbabbbabaabbbaaababababbab
|
||||
aaaababbaaabaabbbaabaaab
|
||||
aabbaabbaaabaaaabbaabbab
|
||||
babababbaabbbbabbbabbaabbaaaaababaabbabbabbabbbaabababaabbabbbaa
|
||||
baabbaabbababbbbabaaaaba
|
||||
aabaaabbababbbaaabbbabaabaaaabbbabaabbaaabbbaabaaaabaaaaabaaabbabbbabbbb
|
||||
aabbbbbbaabaaabaaabbbbabaaabaabaababbaababbaabab
|
||||
bbbabbbaaaaabaabbbbbbaaaaabbbbbabbabaaabbbbaabba
|
||||
aabbbaaaabaaaabbbbbabbab
|
||||
bbaaaaaaabbbbbbbababbbaa
|
||||
baaaabbbabbbbbbbbbaababa
|
||||
abbabaaaaabbbbbaaabbaaaa
|
||||
bbbbbbbbaabaabbbbaaaabba
|
||||
aabaaaaaaabbbaababbaabbbbababbabababaaab
|
||||
aaaabbabaabbabaaaaabbbab
|
||||
baaabbbbbbbabaabbbaabaabaaaaababbaabbbbababbbbababbbbababbbbbbab
|
||||
baabbbbbbababbbbabaaaaaa
|
||||
bbbbbbbbbaaaaababbabbbbbbbbaaabb
|
||||
abbaaabbaaaabbabbaabbabbbbaababbbbbbbabb
|
||||
abbabababbaabaaaabbbaaba
|
||||
abbabaaaaabbbbbbaaaabbbb
|
||||
bbaabaababababbabbabaaaa
|
||||
ababbbbbbabbabbababbaababbbabbabbbabbabaaaaaababaaaabaabbbaababa
|
||||
bbabbabbabbababaaaababaa
|
||||
baabbaaabaabaaaaabaaaaab
|
||||
bbbabbaabbaaababbaaaaaab
|
||||
bbbbaabaababbabababbaaaa
|
||||
babbbabbabbabbabbbaaabbaaabbaabababbbabb
|
||||
aaaababbbaaaaababbbbbbaaabaababb
|
||||
bbbbaaaabbbbaaaaaabaaababbaabaababababaa
|
||||
baabbbabaaababababbbabab
|
||||
aaaaaaabbbbbbabaababbabb
|
||||
aaaaaababbbaaaaabababbab
|
||||
baaabbbbaaaabababababbba
|
||||
ababbbabaaaabbabaaaaabababaabbba
|
||||
abbabbbbbabbaabaabaababb
|
||||
baaaaababbbaabababbaabab
|
||||
babbaaaaaabbbbaabbabbbabbbbbbababaabbabbababaaba
|
||||
bbbbbaaaaabababbaabaabbaabbbaabbabaabbba
|
||||
bbbbaabaaaabbbbbbabbaaab
|
||||
baaababaaababbaaaabbbbbbabaaaaaa
|
||||
aaabbaaaababaabbabbbbabbbbaaaaaaaaabbaaabaabbaabbbbabbabbabbaaabaaabaabb
|
||||
aabaabbabbbabbbaabaaaaab
|
||||
abaabaaaaabaabaaabaabbba
|
||||
aabbbbabaaababbbababbbaa
|
||||
bbabaaababbabbabaabbaabbbbbbabba
|
||||
aabbbaaaaabbbbbbbababaaabaabbbaa
|
||||
abbbbabbaabbabaabaababaaabbabaaabaabaabbaaaaabaabbaaabbabbaaaaab
|
||||
bbbabaaabbaabbbbaaaaaaba
|
||||
baaaaabbaaaaabaabbababbb
|
||||
bbbabbbbbabbbbbbbbbbabab
|
||||
abbbabaabbaaababbbbbabaa
|
||||
aaaaabaaaaababbbabaaaabbabaaaaba
|
||||
abbababbbbbaaabbaaaabbbabaaabbbaaaaabbaababaaaababaaaabb
|
||||
abaabbbbbbbabaabababbabbbbabaaabbabababbaaabbaabbaababab
|
||||
baabbababbbabbaaaaaaaaba
|
||||
aabbbabbaaaabaaaababaaab
|
||||
abbabaaaaabbbbabbabbbbaaabbbbbabbbaaaabbbbaababb
|
||||
abbbbbbaaaabaababbaabbaa
|
||||
bbbbaabaabaaababaaabbabbaabbbabbbbababbbaabbabbabaabaaba
|
||||
abbbabaaaababaaaababaaab
|
||||
bbabaaababbaabbababbabaabaababaa
|
||||
aaaabbbaaaaabbbbabbbbbbabbbabaabbbabbbaabbaabababababaaabbbaabbabbabaaaabbbbbbbbabaaabba
|
||||
abbaabaabbbabbbbabaaaaab
|
||||
abbaaaaababbbbbbbabbabbaabbababbaaaaaabbabbaaaabaabbbaba
|
||||
aababaaaaabaaabbbaabaaab
|
||||
bbbabababbbabbbbabbabaaababaaaaa
|
||||
abbbbaaababbaaabbaaaabbabaabaaab
|
||||
abaabaabbbbabaabaabababa
|
||||
aaaaaaaaabaaababbbabbabbaaaaaaabaaaabbababababaa
|
||||
abababbbabababbaaabbabbbbbaabbbbbbaaababbbabbbbaabbabbaa
|
||||
bbbbbabaaabbbbabaaabbabbabababbaaaaabbbb
|
||||
aabbbbaaaaababbbaabbabba
|
||||
baaaaababaaaaababbabbbbaaaaaabaaababbaaabaaaaaaa
|
||||
abaaaabbabbaaababbabbbbb
|
||||
bbaabaaabaaaaabbbabbaabaaaabaabbaaaaabba
|
||||
abbbbbbbbabbbbaabbabaaaaabbabbbabaaabaaa
|
||||
bbbaabaaabaaaababbbbbabbbbbbbabbbbaaaaba
|
||||
abbaaabbbaabaabbbbbbaaab
|
||||
aaabbaaabbabbaabbababbaa
|
||||
abbbabbbabababbababaaaaa
|
||||
bbabbbbabaaaaababbaababbbbbaabaabbabbaaaaaaaabbbaaabbaab
|
||||
abaaababbbaabaaababbabaa
|
||||
bbaabaabbaaabbbbbaaaaabbaabbbbbbabbabaaabbaabababababbbabaaaabab
|
||||
abbaaaaaaabbabaababbbbba
|
||||
bbbababababaaabbabaaaaaa
|
||||
babbbabbbbbabaabababbabb
|
||||
abbaaaaaabbabaaabbbbaabbbabababa
|
||||
abbabbbbbbabaabbbabbabba
|
||||
baabaaaaaaaabaabbbbababaaaabbaaabbbaaabbbabbbaba
|
||||
baaabaababbaaabbabbbbabb
|
||||
abaabaabbbbbaabbababbbaa
|
||||
bbbbaabaabbababbbbababaabaaabbabbbbbabbabbbabbab
|
||||
bbabaaababbabaaaaaabaabbaabaaabaaabbaababbaaabbbbbbbabba
|
||||
bbbabaaaabbabbabbbbabbab
|
||||
bababaaababbbbbbbaabbbaa
|
||||
abbbbbbbbbabbaaabbababbb
|
||||
aabbaaabaabbbaaabbbaaaba
|
||||
aabbabbbbabaabababbabbaa
|
||||
abbbabaababaaabbabaabaaaaabbbbababaaabaababbaaaa
|
||||
aaaaabaabaaababaabaaaaab
|
||||
bbbaabbbbbaabbaababaabbb
|
||||
abaaaabbabbabbbbbbbbaaab
|
||||
aabababbbaaabababbabbabbaaaaabab
|
||||
bbabbaaaaaaaaaabbaaababb
|
||||
baaaaabaaaabaaaabbbabbbbaabbbbaaabaabbabbabbbbbababaaaaa
|
||||
aaababbaaababaaaaaabaababbbabaaa
|
||||
babbaabbbaaabaababaabbba
|
||||
abbbabaaabbababaaababbbb
|
||||
abbbaabbbabbababaabbaaabbabbaaaa
|
||||
bbbaabababbaaabaaaababab
|
||||
aaaaaaaaabbabbabababaabbbbaaaabbbbababbaaaabbaaaabababaabaabababbbbaaabaaaabaabb
|
||||
bbbbbaaabababbabaabbbbaabaaaaabbabbbabbabaabbbbaaabaababbbaabbba
|
||||
aaabbabbaabbaaabbbaaabbaaabbbbbabaaaaabaaababaaabaabaaab
|
||||
bbaababbaabbbbbbaabbbaaaabaabbab
|
||||
bbbbababababaaaaabbbaabbaaababbbababbabaaabbbaaa
|
||||
bababaaaaabaaabbbbabbababbbbbaaa
|
||||
babababbaaaaaaababaababb
|
||||
bbaaaaaaaabababbabbaabab
|
||||
abbaaaaabbbbbbaaaababaab
|
||||
babaababaababbaabbbabbbbbabbabbb
|
||||
aabbbbbbaababaaaababaabb
|
||||
aaaababbabababbabbabbabbbbaaababbabbbaab
|
||||
bbabbaaaaabaaababaabbaabaaaaabab
|
||||
aaaaaaaabbbbbaaaabbaabab
|
||||
abaaaabbbabbbabbabaabaabbbaaaaabbbbaabbb
|
||||
babaaabbabababbabbaaaaba
|
||||
baaababaabbabaabbaababbb
|
||||
aababaaaabaaabbaabaababa
|
||||
bbbabaabbabbbabbbbaaabbb
|
||||
abaaabbabbaabbaabaaabbaa
|
||||
bbbababbbbbbbaaabababbbaabbbaabbbaabaaabbabbabbabbaabaaaababbbbbbbbbbababbbabbaa
|
||||
bbbbaaaaaabbbabbabbaabaababbababaabbabaaaaababbbbaababaa
|
||||
bababbbbbaabbaababababbbabbbaaab
|
||||
bbaababbabbbaabbbababbab
|
||||
baabaabbaabbaabbbaaaabab
|
||||
aaaaabbbbababaabaabaaaaa
|
||||
bbbabaababbabaaabbbbabab
|
||||
bbbabaabaaaaaaaabaabbbababbaaabaaaabbabbaaaaabbbabbaaabb
|
||||
aabbabaabbbbaabaaababaaaabbbabbbbbbaaaaababbbbab
|
||||
aaaaaaabbabaaabbababaabb
|
||||
abaaabaabbabbaaabbbbbaab
|
||||
aabaabbaabbabaaabbabbabbabbbbbbbaaaabbbb
|
||||
baabaaaabbbabaabaabbaabbaababbaaaabbaaaaaababaab
|
||||
baabbaaaaabbbbbbabbabbba
|
||||
aabbbbbbbbaababbaaabaabaabbbabaababbbabaabbababb
|
||||
bbabaabbbabbaababbababba
|
||||
bbbbaabbbbaabbaaabbbbaba
|
||||
aaababbabaabbabbabaaaaab
|
||||
aaabaabaaaaaabaaabababab
|
||||
ababbabaabbbbbabbabbaababababbba
|
||||
abbaaabbbbbabaabaabbbbbababaababaabaabaabbaabbbaabbbbaaa
|
||||
baabbaabbbaaabbaabaaaabbbbbbbbaaabaaababababbbba
|
||||
aaaababaaaaabbabaabbaaaababaabaabaabababababbbbaaabbaaaa
|
||||
aaabaabbbbbaabaaababaaba
|
||||
bababaabaabbbabbaaaabbababbabbaa
|
||||
baabaaaaaabbaababaaababb
|
||||
baaaabaaaaaaaaaabbabbbaa
|
||||
babbaabbabaaabaaabbaabaabababbbabaababababaaaaaaabaaaaabaaabbbba
|
||||
abbaaaaabaabbbbbabaaaaaabbbbbbba
|
||||
aaabbaaaabaaaabbbaababab
|
||||
baaabbbbaabbbabbaabbbaab
|
||||
babbaabbbabbabaaababbbababaababbbabbbbbbbbaabaaaabaaabbbbaabbbbbbaaabbbb
|
||||
bbabbabaaaaaaaabaaaaaabb
|
||||
ababbbbbababbabaaabbaababababbbbabbbbaaaaaaaaaaaabbbbbbabbbaabba
|
||||
aaababbaaabababbababaaba
|
||||
aaaaababbababbabbaaabbbbbbaaaabaaaabbabb
|
||||
baabbbbbabbbabbbaaabaaab
|
||||
babaaababaababbbababbbbabbababababbbbaab
|
||||
abaabaabbabababbbaababbbbabbbbab
|
||||
baababbababaaaaaaababaababbaabaaaabaaabaabbbbbbabbbbabaabbbababbaaaabbbabaaaaababbbababaabaaabab
|
||||
bbbbbbaaabbababaabbbbaab
|
||||
abbaaaaabbabbabaababbaaa
|
||||
baaabbbbaabaabbbbbbabbbbbaaaabab
|
||||
bbbbbbaaaabaabaabaaabbaa
|
||||
aabaabbabbbabbbaabaaabbb
|
||||
bbaababbaabbbbabbbababbb
|
||||
bababaaabbabbbabaaaaabbbaaabbaab
|
||||
babbabbbbbabaabbbbabbbbaaabbbaaabaabbbbaaabbaaaabbbbabbb
|
||||
babbababbbabbabaabbbbaab
|
||||
aaaabbabbbabbbbabbbbaabaabbabababaaabaabbbbbbbbabaaaabba
|
||||
bbbbaaabaaabaaaaabbaabababaaabbbabbabbbb
|
||||
bbbabababbbbbbaaabbbbbaa
|
||||
baababbabaabbabbaabaabbbaabbbbbabbabbbaa
|
||||
bbaabbbbbbabbababaaabbaa
|
||||
aaaaaababaabbbbbbaabbabbbababaaaaababababaaabbabaaaabbbbaaaabbabbabbbaab
|
||||
babbbabbbaaabbbbbbaaaaaaaaabaabbbaabbaaaaababaabababaaba
|
||||
abababbbaaaababbbbaaabaa
|
||||
ababbabaaaaababbabaaaaaa
|
||||
bababaaaabbaaabbbababbab
|
||||
bbaabbbaabbabbbbaabababa
|
||||
baabbbbbabbabbabbbbbaaab
|
||||
abbaaaaaaaaabaaabaaaabba
|
||||
aabbaabbbbbabbaababbababaaabaabb
|
||||
bbaababbbbbabbbaaaababbabbaababbabababbabbababaabbaaabaaabaabbaa
|
||||
abbbbbabaaabbabbababbaab
|
||||
aaaaabaaaabaaaababbbbaaa
|
||||
aabaaabbbabbabbbabababaa
|
||||
aabbbabbaaaaabbbaababaab
|
||||
abababbbbbaabbaaabbbaabbaaaaabaabaaaabaabbbaaababbaababaabaababaababbbbb
|
||||
babbaabaabababbbaaabbaab
|
||||
abbbaabbabbbbbbbbaaababababbbaabbababbab
|
||||
aaaababbabbaaaaabaabaabbbbabbbaaaaaaabba
|
||||
bababbbbbbbbaabbaaaabbba
|
||||
bbaabbbaaaaaabbbbabbbbaa
|
||||
aabbaabaabbbabaabababbbbbbbbabab
|
||||
babababbabbbabaabbbabaaaabababaa
|
||||
babaaababbaaaabbbaabbbba
|
||||
ababaaaaabbbbbbbbaabbabbbabbaabbaaaabababaababaa
|
||||
bbaaaaabbaaaabbbbabbaabaababaababaabbaabababbbbaabbabbaa
|
||||
baabbabbaaabaabbbbbbaabaaaaabaabaabaabab
|
||||
aaababbbbbaababbabbabbaa
|
||||
aabbaaabaabbaaabbaababab
|
||||
abbabaaaaababaaaaaaaaaaabaaabaaabbbbabaa
|
||||
aaabaabaabbbabaabaabbabbaababaaaabaababa
|
||||
abbabbabbababbbbbaaaaaab
|
||||
aabaaabbbbbaaaabbbabababbaaaabbbaaabbbab
|
||||
bababbaaababbabababbabaabababaababbabaaaaaabaaaabbaaaaaabaabaaab
|
||||
aababaaabaaaaabbabababaa
|
||||
aabbabaabbabbaaabbbaaaba
|
||||
aabbabbbabbabaababbaaaaaaabbbabbaaabbaabaaaabbbbaaaabbba
|
||||
abababbabbbbaaaababbbbab
|
||||
aaaabbbbbbbbaabbbaababbaaabbbbbaaababbabbbbaaaaaababaabbababbbaabaababba
|
||||
abaaabbababababbbabababa
|
||||
abaaabbaabababbbbaaaaaaabbbbabbb
|
||||
aabababbbbbabaaababbabbbababaabb
|
||||
abababbaabbbaabbaabbbbbabbbbbbbb
|
||||
aabaabbbbbaabbbabaaabbbbbbaaaaaabbbbbbbabababbaabaaaabaa
|
||||
babaaaabaaababbaaabababa
|
||||
bbaabbbaababbababbbaaaab
|
||||
bbbaaaababbbbbaabbbbbababbababbaabbaabababbabbbababbbbababbbabaaaabbabaaabaaaababbbbbaaaabaaabbb
|
||||
baabaabbbaabbabaaababbba
|
||||
bbbaabbbbbababbbbbbbaababbaabbaabbbbbaababbaabbabbbbaaabaabaabbabaabbbaa
|
||||
bbbbbbbababbbbbbaabaababaaaaabbbbbbabbbb
|
||||
aababbaabbbbaabbbbbaabbbaabaabaaaaaaabbbbabababa
|
||||
abbbabaaabaaabbabbaaaaba
|
||||
aaaaabbbaabbbbbbaaababbbbabaabbaababaabbbabaaaaabbaaabbb
|
||||
babbabbbbbabaaabaaaabbaa
|
||||
bbbbaabbaaaaabaabbabbaaabbabaaaa
|
||||
aaababbbaabaaabbbbbaabba
|
||||
aabbaabbababaaaaabbababbbababbaaabbbbaabbbbaaabbbaaabaab
|
||||
bbabbabaabbabaabababaaab
|
||||
bbaaababbbbbaabababbbbaa
|
||||
aaaababaabbaaabbabbbbbaa
|
||||
bbaabbbaabaabaabbbaaaaababbabaabbbabbabaaabbabbabbbbabaa
|
||||
babbababaabaaabababbababbbaaababbbabbbbbbabababa
|
||||
aababbaaaaabaabbbbaaabaaabbbbabb
|
||||
bbbaaabbabaabbbbaabbabbbbabbaabbbabaababbbbaaaaaaababaabaaaaaaabbababaaa
|
||||
abbaaabbbbabbaaaabaabbba
|
||||
aaaaabaaaaaabbabbbaabaaaabaaaaaa
|
||||
aaabbbbbbaabaabbabbbaaab
|
||||
abaabaabbabaabbabbababbb
|
||||
aabbbaaaabababbababbbabbbabbabababbbbaabbaaaaaaa
|
||||
baababaababbabbbbbbabbbbababbabaabaaaaba
|
||||
bbaabbaabbaaaaaaaaabbaba
|
||||
aaaaabbbbaabbababababbbbbaababbaaaabbaab
|
||||
abbaabbabaaabbbaaaaaaabbaababbbaaabbbbbbabaaaaabbaabaaaabaaaaaababaabaababbbbbbbbaabbabb
|
||||
baababbabbabbabaabbabaaababbbaaa
|
||||
baabbaabaababbabbbbbabbb
|
||||
aabbaaababbbabbbbaabbaabababbbbb
|
||||
aabbbabbaaabaabaabbbaaab
|
||||
abbbbbbbbabababbbbaaaaabaabaabbbbababbaa
|
||||
bbbbbaaabbabaaabaababbababbababababaabbbbabaaaaa
|
||||
abbabbabaabbbbbbaabbbbbbbabbabbbabbaaaaaabbbaabababbaaaa
|
||||
aaaababbaababbabaaaaabaaabbbbbbbbbbbbaba
|
||||
bbbbabbaabaaabbabbaaabbaaababbaabbabbabaababaababbaaabaa
|
||||
aaabbbbbbaabaabbbbaababa
|
||||
baabaaaaaaabbabbbabbbabbbabbaaabbaaaabab
|
@ -59,6 +59,9 @@
|
||||
<None Update="18input.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="19input.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -21,6 +21,7 @@
|
||||
Q14.Go();
|
||||
Q15.Go();
|
||||
Q18.Go();
|
||||
Q19.Go();
|
||||
Util.Log($"Total time={(System.DateTime.Now - start).TotalMilliseconds}ms");
|
||||
}
|
||||
}
|
||||
|
218
Q19.cs
Normal file
218
Q19.cs
Normal file
@ -0,0 +1,218 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
|
||||
namespace _2020
|
||||
{
|
||||
class Q19
|
||||
{
|
||||
static Dictionary<int, Rule> rules = new Dictionary<int, Rule>();
|
||||
static List<string> messages = new List<string>();
|
||||
|
||||
[DebuggerDisplay("ch={ch} | num rules={ruleIdxs?.Count}")]
|
||||
class Rule
|
||||
{
|
||||
public char? ch;
|
||||
public List<List<int>> ruleIdxs = new List<List<int>>();
|
||||
}
|
||||
|
||||
public static void Go()
|
||||
{
|
||||
var start = DateTime.Now;
|
||||
MakeList();
|
||||
Util.Log($"Q19 MakeList took {(DateTime.Now - start).TotalMilliseconds}ms");
|
||||
var p1start = DateTime.Now;
|
||||
Part1();
|
||||
Util.Log($"Q19 part1 took {(DateTime.Now - p1start).TotalMilliseconds}ms");
|
||||
var p2start = DateTime.Now;
|
||||
Part2();
|
||||
Util.Log($"Q19 part2 took {(DateTime.Now - p2start).TotalMilliseconds}ms");
|
||||
|
||||
Util.Log($"Q19 took {(DateTime.Now - start).TotalMilliseconds}ms");
|
||||
}
|
||||
|
||||
static void MakeList()
|
||||
{
|
||||
int mode = 0;
|
||||
foreach (var line in File.ReadAllLines("19input.txt"))
|
||||
{
|
||||
if (mode == 0)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(line))
|
||||
{
|
||||
mode++;
|
||||
continue;
|
||||
}
|
||||
|
||||
var chunks = line.Split(":");
|
||||
var ruleIdx = Convert.ToInt32(chunks[0]);
|
||||
|
||||
if (chunks[1].StartsWith(" \""))
|
||||
{
|
||||
rules.Add(ruleIdx, new Rule() { ch = chunks[1][2] });
|
||||
}
|
||||
else
|
||||
{
|
||||
var refs = chunks[1].Split("|");
|
||||
var ruleIdxs = new List<List<int>>();
|
||||
foreach (var ruleRef in refs)
|
||||
{
|
||||
var refGroup = new List<int>();
|
||||
|
||||
var refIdxs = ruleRef.Split(" ");
|
||||
foreach (var refIdx in refIdxs)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(refIdx))
|
||||
{
|
||||
refGroup.Add(Convert.ToInt32(refIdx));
|
||||
}
|
||||
}
|
||||
|
||||
if (refGroup.Count > 0)
|
||||
{
|
||||
ruleIdxs.Add(refGroup);
|
||||
}
|
||||
}
|
||||
|
||||
rules.Add(ruleIdx, new Rule() { ruleIdxs = ruleIdxs });
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
messages.Add(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static Tuple<bool, int> PassesRule(Dictionary<int, Rule> ruleList, int ruleNum, string str, int startIdx = 0)
|
||||
{
|
||||
if (ruleList[ruleNum].ch.HasValue)
|
||||
{
|
||||
return new Tuple<bool, int>(str.Length > startIdx && ruleList[ruleNum].ch == str[startIdx], 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
var matchedGroups = false;
|
||||
var matchLen = 0;
|
||||
foreach (var grp in ruleList[ruleNum].ruleIdxs)
|
||||
{
|
||||
var matchedGroup = true;
|
||||
matchLen = 0;
|
||||
for (int i = 0; i < grp.Count; i++)
|
||||
{
|
||||
var matchedRule = PassesRule(ruleList, grp[i], str, startIdx + matchLen);
|
||||
if (!matchedRule.Item1)
|
||||
{
|
||||
matchedGroup = false;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
matchLen += matchedRule.Item2;
|
||||
}
|
||||
}
|
||||
|
||||
if (matchedGroup)
|
||||
{
|
||||
matchedGroups = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return new Tuple<bool, int>(matchedGroups, matchLen);
|
||||
}
|
||||
}
|
||||
|
||||
static void Part1()
|
||||
{
|
||||
int numMatched = 0;
|
||||
foreach (var msg in messages)
|
||||
{
|
||||
var result = PassesRule(rules, 0, msg);
|
||||
if (result.Item1 && result.Item2 == msg.Length)
|
||||
{
|
||||
numMatched++;
|
||||
}
|
||||
}
|
||||
|
||||
Util.Log($"Q19Part1: total={messages.Count}, numMatched={numMatched}");
|
||||
}
|
||||
|
||||
static void Part2()
|
||||
{
|
||||
var rulesUpdated = new Dictionary<int, Rule>(rules);
|
||||
rulesUpdated[8] = new Rule()
|
||||
{
|
||||
ruleIdxs = new List<List<int>>()
|
||||
{
|
||||
new List<int>()
|
||||
{
|
||||
42,
|
||||
},
|
||||
new List<int>()
|
||||
{
|
||||
42,
|
||||
8,
|
||||
},
|
||||
},
|
||||
};
|
||||
rulesUpdated[11] = new Rule()
|
||||
{
|
||||
ruleIdxs = new List<List<int>>()
|
||||
{
|
||||
new List<int>()
|
||||
{
|
||||
42,
|
||||
31,
|
||||
},
|
||||
new List<int>()
|
||||
{
|
||||
42,
|
||||
11,
|
||||
31,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
int numMatched = 0;
|
||||
foreach (var msg in messages)
|
||||
{
|
||||
var firstRuleMatches = new List<Tuple<bool, int>>();
|
||||
Tuple<bool, int> match = null;
|
||||
var startIdx = 0;
|
||||
while ((match = PassesRule(rulesUpdated, rulesUpdated[0].ruleIdxs[0][0], msg, startIdx)).Item1)
|
||||
{
|
||||
firstRuleMatches.Add(new Tuple<bool, int>(match.Item1, match.Item2 + startIdx));
|
||||
startIdx += match.Item2;
|
||||
}
|
||||
var matchCombos = 0;
|
||||
foreach (var firstRuleMatch in firstRuleMatches)
|
||||
{
|
||||
startIdx = 0;
|
||||
while ((match = PassesRule(rulesUpdated, rulesUpdated[0].ruleIdxs[0][1], msg, firstRuleMatch.Item2 + startIdx)).Item1)
|
||||
{
|
||||
if (firstRuleMatch.Item2 + match.Item2 == msg.Length)
|
||||
{
|
||||
matchCombos++;
|
||||
break;
|
||||
}
|
||||
startIdx += match.Item2;
|
||||
}
|
||||
|
||||
if (matchCombos > 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (matchCombos > 0)
|
||||
{
|
||||
numMatched++;
|
||||
}
|
||||
}
|
||||
|
||||
Util.Log($"Q19Part2: total={messages.Count}, numMatched={numMatched}");
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user