Day 20 part 1 solution.
This commit is contained in:
parent
7bfe984659
commit
e8007abb76
561
2020/input/2020/day19.txt
Normal file
561
2020/input/2020/day19.txt
Normal file
@ -0,0 +1,561 @@
|
||||
102: 100 47 | 76 84
|
||||
23: 60 47 | 73 84
|
||||
132: 17 47 | 81 84
|
||||
108: 55 100
|
||||
18: 116 47 | 26 84
|
||||
103: 84 115 | 47 81
|
||||
65: 84 113 | 47 50
|
||||
128: 107 47 | 125 84
|
||||
14: 84 100 | 47 107
|
||||
118: 47 17 | 84 57
|
||||
2: 47 100 | 84 40
|
||||
28: 63 84 | 74 47
|
||||
22: 102 84 | 123 47
|
||||
123: 84 74
|
||||
19: 3 47 | 13 84
|
||||
24: 74 47 | 81 84
|
||||
115: 55 55
|
||||
90: 92 47 | 44 84
|
||||
48: 84 94 | 47 96
|
||||
109: 17 84 | 100 47
|
||||
92: 84 75 | 47 108
|
||||
66: 38 47 | 125 84
|
||||
83: 66 47 | 108 84
|
||||
31: 121 84 | 77 47
|
||||
29: 47 61 | 84 111
|
||||
45: 47 47 | 47 84
|
||||
59: 47 49 | 84 43
|
||||
37: 47 30 | 84 95
|
||||
36: 107 84 | 125 47
|
||||
82: 74 84 | 38 47
|
||||
61: 84 10 | 47 110
|
||||
79: 47 28 | 84 109
|
||||
33: 101 47 | 133 84
|
||||
12: 45 47 | 63 84
|
||||
91: 122 84 | 93 47
|
||||
122: 65 47 | 52 84
|
||||
21: 57 84 | 115 47
|
||||
8: 42
|
||||
67: 102 47 | 64 84
|
||||
39: 113 84 | 81 47
|
||||
41: 84 124 | 47 10
|
||||
50: 47 47 | 84 84
|
||||
17: 47 84 | 84 84
|
||||
120: 98 84 | 78 47
|
||||
113: 55 47 | 47 84
|
||||
20: 84 128 | 47 104
|
||||
7: 84 1 | 47 20
|
||||
51: 84 113 | 47 81
|
||||
56: 84 83 | 47 69
|
||||
131: 84 127 | 47 97
|
||||
0: 8 11
|
||||
5: 47 63 | 84 125
|
||||
94: 15 84 | 127 47
|
||||
121: 99 47 | 27 84
|
||||
119: 47 115 | 84 57
|
||||
129: 47 80 | 84 131
|
||||
15: 47 100 | 84 45
|
||||
35: 84 50 | 47 76
|
||||
95: 47 115 | 84 107
|
||||
68: 127 84 | 51 47
|
||||
124: 84 107
|
||||
75: 50 55
|
||||
57: 47 84 | 84 55
|
||||
13: 47 33 | 84 129
|
||||
53: 106 47 | 59 84
|
||||
106: 16 84 | 118 47
|
||||
89: 84 125 | 47 45
|
||||
104: 45 84 | 76 47
|
||||
99: 47 56 | 84 7
|
||||
78: 84 74 | 47 81
|
||||
64: 17 47 | 115 84
|
||||
32: 50 84 | 40 47
|
||||
1: 47 24 | 84 72
|
||||
47: "a"
|
||||
80: 114 47 | 109 84
|
||||
88: 47 119 | 84 132
|
||||
105: 47 125 | 84 100
|
||||
6: 68 84 | 67 47
|
||||
110: 76 84 | 63 47
|
||||
38: 84 84 | 84 47
|
||||
49: 47 63 | 84 76
|
||||
26: 55 107
|
||||
81: 47 84
|
||||
74: 84 47
|
||||
96: 84 89 | 47 117
|
||||
77: 47 86 | 84 71
|
||||
135: 32 84 | 2 47
|
||||
133: 47 15 | 84 128
|
||||
42: 19 84 | 62 47
|
||||
30: 47 100 | 84 74
|
||||
27: 6 47 | 91 84
|
||||
63: 84 55 | 47 47
|
||||
62: 84 87 | 47 23
|
||||
76: 84 84
|
||||
4: 84 135 | 47 54
|
||||
60: 41 47 | 37 84
|
||||
100: 47 47 | 84 47
|
||||
85: 47 112 | 84 18
|
||||
116: 125 84 | 63 47
|
||||
134: 57 47 | 115 84
|
||||
34: 52 47 | 25 84
|
||||
40: 47 47
|
||||
111: 58 84 | 126 47
|
||||
3: 29 47 | 130 84
|
||||
114: 17 84 | 107 47
|
||||
52: 47 45 | 84 74
|
||||
10: 47 100 | 84 81
|
||||
98: 47 76 | 84 100
|
||||
112: 84 82 | 47 103
|
||||
72: 40 47 | 45 84
|
||||
126: 50 84 | 113 47
|
||||
107: 84 47 | 47 84
|
||||
11: 42 31
|
||||
55: 84 | 47
|
||||
54: 12 84 | 5 47
|
||||
130: 34 47 | 70 84
|
||||
84: "b"
|
||||
127: 81 47 | 17 84
|
||||
87: 84 53 | 47 9
|
||||
101: 105 84 | 14 47
|
||||
9: 88 84 | 120 47
|
||||
73: 47 79 | 84 22
|
||||
97: 74 84 | 50 47
|
||||
117: 74 47
|
||||
70: 47 134 | 84 46
|
||||
58: 47 50 | 84 115
|
||||
125: 47 47 | 55 84
|
||||
46: 47 81 | 84 17
|
||||
86: 84 90 | 47 85
|
||||
25: 38 84 | 63 47
|
||||
69: 39 47 | 78 84
|
||||
43: 47 100 | 84 125
|
||||
93: 84 66 | 47 35
|
||||
44: 47 21 | 84 36
|
||||
16: 57 47 | 107 84
|
||||
71: 48 84 | 4 47
|
||||
|
||||
babaaabbbababababbbbabbaabbaabaa
|
||||
babaaaabaaaaababbbbaaaaa
|
||||
abbabaabbaaabababaabbbbabbbbbaabbbbabababaaaabbbbababbbb
|
||||
bbbabababbabbbabbbabbbbb
|
||||
babaabbbababbbabaabaaaaa
|
||||
abbabaabbaababbabababbbababbbabbabbabbbabbaabbbb
|
||||
aaaaabaabbbbbaabbbbbbbbbbaaabbaaabbaabab
|
||||
baababbabbbabbaaaaaababbaabbababbbabbbbb
|
||||
aaabaaaabbabbbabbabaabbbabaabbbbaaaaabaaaabaabaaababaabbabbaaaabbbbaabbabbabaaaaaaaabaab
|
||||
ababaaabababbbababaaabab
|
||||
bbbbabbbbbaabaaaaaabbbbbbabbbabaabbaaababbbaaaaababaabaabaabababbabbbabbabaaabbaaabbaaaa
|
||||
babaabaaababaaabaaaababa
|
||||
aabaaabbaabbbabbabaabaab
|
||||
bbbaabaaaabaaabbbaaabbbabbbaaabb
|
||||
aaaaaaabaaababbbbbbbbbbbbaaabaabbaaabbab
|
||||
bbabbabbaaaaabababaababa
|
||||
babbababbbabbaababaababbaaaaabaaabbbabba
|
||||
bbbbbbbababbaaaaabaaabbaabbaaaab
|
||||
bbbbbaaabbbbbaaaaaabaaaabbbaaabb
|
||||
babbababaababbbbbbbaaabb
|
||||
abaabbaabbababaabbababba
|
||||
abaaabbaaabaabbbabababba
|
||||
babaaaabaaaababbabbbbaaa
|
||||
bbbbbbbabaababbaaaaababbabbaabbabbbaabaababaabbbbbbaabab
|
||||
aaabbabbbaabababbaabaaba
|
||||
bbbababbabaabbabbbabaaaa
|
||||
baabbabababaaaabbbbbbaab
|
||||
bbabbbbabaababbabbbaabab
|
||||
abaabbabbbabbabbabbbabba
|
||||
bbbbbbbaaababaaabbaabbbabbaaabbbbabababb
|
||||
aabbaaabbabbabaaaabbabaababbbaababaabababaaabbaa
|
||||
aaabaababbbabbbbaaababbbbaaabbbb
|
||||
aaaaaaaaaaabaaaababbabbb
|
||||
bbbabbbbaabaababaabbabab
|
||||
baaabaabbaaaabbbbaaaaaaa
|
||||
bbbbbbbaabbabbaabaabaaaa
|
||||
aaaaabaabbabbaaaaaaaaabb
|
||||
aabaaabbaabbabaaabbabaabbaababaaabbbaaaaababbaabaaabbaaabbaaabaa
|
||||
bababbbaaabaababbbababaabbaabaabbaaaabbabbaabababbbabbbababbabbb
|
||||
abbbaababbaabaaaaababbbaaaabbbaa
|
||||
aababbbaaaabaabbbbabaaaa
|
||||
aaaaabbaaabaaabbbababaaa
|
||||
bbbababaaabaaaabbabbabaabbababababababbbabbaaaaabbababbabbbbabbbabbbaabb
|
||||
bbbabababbbabababababbbb
|
||||
bbaaababbbabbbbaabbbbbaa
|
||||
bbababaabaaaabbaabbbbaaa
|
||||
bbbbabbababbbbaabbaaaababbababbaabaaabababbabbabbbbbbaababbbbabbbbaaaaabbbaabbba
|
||||
abbabbabbbbbbaabaaaaabababaaaaabaaabbaaaabababba
|
||||
bbbabaabaababaaabaabbaaa
|
||||
bbababbbbaaababaaaabbabbaaabbbaa
|
||||
aabbbbababaabbaabababbaa
|
||||
aaabbabbbaabbbabbbbbbbbabaaaabbaaabababaabaaabab
|
||||
aaaaaaababbabbabbabaaaaa
|
||||
aababaaaaaababbbabbabbabaaababbbbbabbababababaaaabbabbbb
|
||||
babaabbbbaaabaaabbbabbab
|
||||
bbbbabbbbaabbbabbbaabbbaabbbbbaabbbbaaabbbbaabbbbaababbaaaabaaaabbabbabbabbaabbb
|
||||
aaabbbabbaaabaabbaaaaabaabababab
|
||||
abbababbabbbbbabbaabbbabaaababbbbbbbabaababbbbbabababbbb
|
||||
bbaabbbaaaaababaaabaaaabbbbbbaabbaaaabbaabaaabaabaaaabbabbabbbaabbaaaaaa
|
||||
abbabbaaaabaaaabbbbbbaabbabaababbbbabbba
|
||||
bbaaaabaabbababbbbaabbaa
|
||||
aabbaabaabbaaabbaaabaaaaaaababbabababbaa
|
||||
baaaabbaaaaaabbbbabbababbaabbbbabbabbabbaabbaabb
|
||||
babbaaaabbaabaaabbbbaaaabbbabbaaaaaaaabb
|
||||
aaaaababaaabbabbababbabb
|
||||
abbabaaaaaabaababbabaaab
|
||||
aaabaababbaabbbaababbabb
|
||||
babbabaabaababbabbabaabb
|
||||
abbabbaabbabbbabababaaaa
|
||||
bbabbbaaaababaaaaaabbbaa
|
||||
bbbbbbbaaaaaabbabbbaabaaaaabbaaa
|
||||
bbbaabaababaaabbaababbabaababaabbbababba
|
||||
bbaaabbaabaabbbbbbbaababbbaabaabaaabaababaaaaabbbaaabaababaaaaabaabbbbaabaabbbaa
|
||||
baabbababbaaaaababaabbabaabbbaabaabbaabbabbbaaababbaaaab
|
||||
bbabaaaaaaaabababaabbababbaabbbbabbbaaababbaababaabaaaaaaaabaabb
|
||||
baaaaaabbaababbaababaaaa
|
||||
bbbabbbbbbaabaabbaaabbab
|
||||
babbbabababaaaabaabbaaabbbabaabababbbaaabaababbbbbaababbbabbbabb
|
||||
aabaaababababababaabbbababbababbbabbaabb
|
||||
bbaabaaabbaabababbaababaabbabbba
|
||||
bbbabaaaababaabbaabbabbbbabbaabaabbabaabbaabaabaabbaabbabaaabaaa
|
||||
abbaaabbbbbbbbbbaaabbaab
|
||||
baabbbbbaabbaabbaabbababbaabaaba
|
||||
baaaabaaabbbbaabaabbabbbbaababbb
|
||||
abbbbbbaabbbbbbbbbbbbaaaaaaabaaa
|
||||
abbbbbbbbbabbbaabbbaaabaaabababa
|
||||
aababbbaabbabaabbabaaaba
|
||||
bbabbaabbabbabaaababbbba
|
||||
aaabbbabbaabaabbbbbabbbbaaaaabbbbabbbabababbbaaa
|
||||
aaabaabbaabaababaabababb
|
||||
bbababaaabbbaabaabbababa
|
||||
baabbbaaaaababababaabbaababbabbb
|
||||
babbbaabbaaaabbaababbabb
|
||||
bbababbbababbbaabbabbbabaabababaaabaaaaa
|
||||
babbbbbbbbabbbababbbbaab
|
||||
abaabbbbbabbbbbbaaabbaba
|
||||
bbabbbaabbbbbaaabbbaaaaa
|
||||
abbbbbbbbaabbbaaabbbbbbabaaaabaaaaaabbbb
|
||||
aabaaabababbbbbbaaabbaab
|
||||
bbbabababbbbbbabbbbbaabaabababbaaabbbbbb
|
||||
aababbbaaaaaaaaaabbaaaaa
|
||||
ababaababaababbbabbbbabaaabbabaaabbabbaabbaaaaaababaabba
|
||||
aabbaaabaabbbaabaabaabbbaaabaaab
|
||||
aabbaaabaaaaabaaaaabbbabaaabaaaababaaaaaabbbbbaaaababbaa
|
||||
babbbaabaabaaabababbabaababbbaabbabaabbaabababbababaaaaa
|
||||
aabbbbabababbbaaaaabaabbbaabbabaaaabababaabaaaabaaaababaabbbabbaabaaabbb
|
||||
bbbbbbababbbabaababbabaabababababaababbabbbbbbbabbaaabbb
|
||||
bbabababaaababbabbababba
|
||||
abbbbbbabbbbbbaaabbbaabbbbabaabaaaaaaabb
|
||||
aaaaabbbbaaaabbabbbabbab
|
||||
aabbaaabbbbaaaabbabababbbabbaabbbbababbbbaaabbbababaabbbaabaaaaababbbaaa
|
||||
ababbbabbbabbbaaababbbbbaabbabbaababbaaa
|
||||
abbabbababbababbbbbbabbb
|
||||
aabbaabaabbabbabbaabbaab
|
||||
baabbbaaabbababbabbaaaba
|
||||
baaabbbaaabbbabbbaaaaaaa
|
||||
bbaaababaaaaabaabaaaabba
|
||||
aabaaabbbbabbaabaaababaabbbbaabb
|
||||
bbbbabbaaaabbabbaabbabab
|
||||
aabaaaabbaaaaabababbabba
|
||||
bababbbabaabaabbaaaabaab
|
||||
ababaaabbbaabaabbbaabaaababaabbbabaabbaaaabbbaaabbbaabab
|
||||
aababaaabbbbaaaaaaabbbbb
|
||||
abaabbaabbbbbaaaaaaabaaa
|
||||
babbbabababbaaaabaaaabab
|
||||
abbbbbabbabbaaaababbaabb
|
||||
bbaaaaabbbbababaaaaabaab
|
||||
bbaababaaaabaabbabaabaab
|
||||
bbababbaabbbbabbbaaaaabbabababba
|
||||
bbabbaabbbbbabbaabababbbaabbbbbabaabbaaabbbabbbabaabbaab
|
||||
abbabbaabbaaaaabbbabbbaabbbabaaabbaaabbbaaabaaab
|
||||
aaababbababbabaabaabbbababbabbabbbaababaabbbabbaabaababa
|
||||
baabbaabbbabbababbaaaaaabaaabbab
|
||||
aabbabaabbbbbbbbbaabaaababaaaaaa
|
||||
abbaabbabaaaaabaabbbabaabaaabaabaabaabbbaabaabaaaabaaaaa
|
||||
baaaabbabaababbababbbababababbbb
|
||||
bbabbaabbaaabbbabaaabaababbbbbbabbaaabaa
|
||||
baabbbbaabbbbbbabaabbaab
|
||||
baaaabbaabbababbaababbababaaaabbbbbbbabababaaaba
|
||||
baabbbbbaabaabbbbbabbaaaabbaabbaabbbbbabbbbbbaba
|
||||
babaabbbbbaabaaaabaababbabbbbabbbbbaaaaa
|
||||
baabbababbaababaabbbaaab
|
||||
bbaaaabbbaaaaaabbbabababbaabbabbbaaabbaaababaabb
|
||||
abbbbbbaaababaaababbaaba
|
||||
baabbabababababaaaaaababbababbbabaabbbaaabaaabab
|
||||
aaaaababaabaabababbbbbbbabbbaaba
|
||||
bababaaabbbaabbabaaaaabb
|
||||
aabbaababbabbbbabbbaaaab
|
||||
bbbbbbbbaabbbabbbabbbbba
|
||||
aabaababbaabaabbbbaaaaababaaaaabbaaaaaaa
|
||||
aaaaaaaaaaaaabababbbbbbabbbaabab
|
||||
bbbaabaaababbbaaaabaaababbababbbabaaabbaabaaaaaa
|
||||
ababbabbbbbbaabbaaabbaaabbaaabbaaaabbbba
|
||||
baabababbbbbabaaababbbaabbaaababbbbaaaababbabbbb
|
||||
bbaabbbaabaaabaaababaabb
|
||||
bbabbbaaabbaabbbaaaabbaa
|
||||
bbbabaabaaaaabaaaababaaaabaaabaaaaaaabbaabbaabbabbbbbaba
|
||||
baaaabbaabbbaabaabbabbaabbbaaabaaabbbbbaaaaabaab
|
||||
bbabbabbbbbbbaabbbababbbbbaabaaaaaabbaaa
|
||||
abbbbbbbabaaabbbabbaaaabaaabababaabaabababbbaaaaabaaaababbababbabbbbabbb
|
||||
baabbabaababbbaabbababba
|
||||
bbaabbbaaaabbbbaaabaabaa
|
||||
baabbabaabbbbbabaaaaabaababbbbaaabaaaaaa
|
||||
baaabaaabbbababbababaaabaababbaa
|
||||
aaababbabbaaaaabbaabababbbabaaba
|
||||
aabbbaabaabbaaababbbaabb
|
||||
bbbbbbbbbaabababaabaabaa
|
||||
ababbaaaaabbbbbaaaabbaabbaaabaaabaabbaabbabbbababbbbabbabaaaaaababaaaaba
|
||||
baaaaabaaaaaababaabbaaaa
|
||||
aaaaaaaabbabababaaaabbaa
|
||||
aababaaaababbbaabbbaaaaa
|
||||
aaaaaaabbbaaabababbbaaab
|
||||
aaababaaaabbbbababbaaaab
|
||||
aaababaabaaaabbaabbaabab
|
||||
bbaabaaaaaabaabbbabaaabbababaaba
|
||||
ababaaabbaaaabbabbaabaaaabbababbaababaaababaabbbbabbabbb
|
||||
aaaaaaabaaababbbbbaaaabbbbabaaaabaaabbabbaabbbab
|
||||
abbabaaaabaaabbabbabbaaaababbbbbbbbaaaaa
|
||||
abaaaaababbbbbababbbbaba
|
||||
abaabaaaaabbbbaaaaaabaab
|
||||
babababaaababaaaabaababa
|
||||
bbbaaaaabbbbbbaaaabbaabb
|
||||
aababaaaaaaaabaaabbbbaab
|
||||
ababaaabababbbaaaaaabbab
|
||||
baabbbabbbaabbbaabbbaabb
|
||||
baabbbbaabbbaababbababba
|
||||
bbbbabaaaaaababbbaababaa
|
||||
aaaaabbabbbaabbaabaabbbaaabababababbbbba
|
||||
baabaaabbbaabaabababaabb
|
||||
aaabaaaaabbabbaabaabaaaa
|
||||
aaabaabaabbabbabbabaabab
|
||||
babaabbbbaabbbbbabaaabbabbaabaaabbababbababbbaaaababaabb
|
||||
baaabaaababbabababbaaabbbaabaaabbaabaaaa
|
||||
baaabaabbbababbbabbbbbabbabbaaab
|
||||
abbabaaaaabbbbbababbaaaaaaaaababbabaababaabbbbbb
|
||||
abbbbbbaabbbbaaababaabaaabbbbabbabbbbababbababbababaaaabbbaaaaba
|
||||
aaabaabbabbbabaaabbaaaaa
|
||||
bbbbaaabbbbabaaabaaabbbb
|
||||
babbbaabbaabbbbbaaaabaaa
|
||||
aaaaabaabaabaaabaabbaababbaababb
|
||||
baababbbababbabbbbbbbaabaaaaabbababbbbbabaaaababbbbbbbbbbbaaaaabbabaaaabbababbab
|
||||
baabaabababaababaaabbaaa
|
||||
aababbabababaaababbabaaabbababbaabaababa
|
||||
bbabbbabbabbbaababababba
|
||||
abbaabbbaababaaaabbbabab
|
||||
aaababbbabaabbbbbbbbabbb
|
||||
aabbbbabbaaabaaaabbbaabb
|
||||
abbbbbaabbbaabababaabaabababbaba
|
||||
aaababaabbbbaaaababaaabbbaabbabbaaaabbaaababbaaa
|
||||
bbaaaabaabbabaaaaabbaaabbbbabbab
|
||||
aaabbababbbbababbbbbaaaababaaaaaababbaababaababbaababbbaaabbaaba
|
||||
abbaabbbbabaabbbababbaab
|
||||
baabbbbbbbaaabbbbababbbbbbaaaaaaabbbbbaaabaababa
|
||||
aabbbbabbbbababbbabaaabbbabbbbbbbaaaabab
|
||||
baabbbaabbabbbbababbbbaa
|
||||
babbbbbbabbbbbbbaaabaabbbbbbbbbabbaaabaa
|
||||
bbbabaaabbbbbaaaaaabbaab
|
||||
abbbbbababaaabbaaababbbabbaaaaabaaaaabaabaaaaabb
|
||||
bbabababaabbbaabaaabbbbabaaabbab
|
||||
aaabbbbabbbbaaabbbbabbbbbbbbabbbaabababb
|
||||
baaaabbaabbababbbabaaaaa
|
||||
baababaabbaaaaabbababaabbbababbbababbbbabbabbaabbaaaabbabbaaabbbbbabbabbabbbabab
|
||||
aaaaaaaaaabbbbababbbbabb
|
||||
abbaaabbbaaaaaabbababaab
|
||||
abaabbbbbaabbabaaaabababaabbababaaabbaab
|
||||
aaaaabaabaababbaabbbbaba
|
||||
bbbbbaaabbabababbaabbabaabaaaabaaabababb
|
||||
aaaaabbaabbabaaaabbabbbabbbaaabbbaabaaaabbaaaaaa
|
||||
aaabaaaaaaaaabbaaabaaabbbaabbbabaaaaabbbbabaaaaa
|
||||
abaababbaababbbbaaabaaaabbbbbbbaabbaabaa
|
||||
abaaabaabbbbbbabaabbbabbababaaba
|
||||
bbabbaaabbaaaaababaaabbaaabbbabbbbbbabbaaabbabba
|
||||
aaaaaaabbaababababaabbaababbaaaabaaabbab
|
||||
bbbbbaaaaaababbbbaabbaab
|
||||
abbaabbbbbaaaabbbbbbaaaabaabbabbaabbbaabbbaabbab
|
||||
aaaabbbababaababbbbaababaababbaabbbabaababbbaabbbbaabbbaababbbaa
|
||||
abbabbaaabbbaababbabaaab
|
||||
aaaaaaababbaaabbbbaababb
|
||||
baaabbaabaaabbaaabbbabba
|
||||
babbbaabbbabbaabaabbaabaaabababa
|
||||
aaaababbabababbbababaaabbbabaababbaababaaaabaabaabbabaaabbbaabaa
|
||||
aaaaaaabaabbabaaabbabbaaaababbbbabbabaaabaaabaabaaaabbbaaabbbaaa
|
||||
abbbbbbbbbbbabbabbbbaabb
|
||||
baaabbbaabaababbaaabbaba
|
||||
bbbbbbabbabbbabbaabaababbbbaabab
|
||||
aaaaababbbbbabbbababbaabbbbbbabbaabbbbbbbbaaaaaa
|
||||
ababaabbbababbbbbbbaaaabaabbbaaa
|
||||
aaaababbbbbbabbabbaabbaa
|
||||
aaabaababbbababbbabbabbb
|
||||
bbababaaabaaabbaaabbaaaa
|
||||
aaaaababbbaabbaaaaaaaabaabbbababbbbaabab
|
||||
aabbaabbbabaabaabaaaaaaaabaababbbabbbbbaababbabbababaabaaabbbabbaabaabbaaabbbbba
|
||||
bbbbaaaabbabababbbaaaaaa
|
||||
abaaaaabaaaaaaabaabbaaabaaababaaaabaaaaa
|
||||
babbbaabababaaabababbaab
|
||||
baaaaaababababbbbaabababbbbbbaabbabaaaabaaaaaabaaababbaa
|
||||
aabaaabbaababbabbabaabbbaababbabaabbbbaa
|
||||
ababbbbbabbbaabababbaaba
|
||||
bbababababbbaaaaabaabbabaaabbabb
|
||||
bbaabaabaabbbaabbaaaaaabaabbabbbabbbbaab
|
||||
baabaabbaababbbabbbbbaba
|
||||
aaaaabababaaaaababababba
|
||||
abababababbbabbbbababaaa
|
||||
ababbbaabbabbbbabbbbbbaaabbbbabaabbabbba
|
||||
babaaaaaaaabbaaabbbaabab
|
||||
abaaababaaaabaaabaaaaaaabbabbbaaaababababaaaababaaaababbbbabaabbaabbbbba
|
||||
aaababbbbaaaabbbaaaaaaabbbbabbbaaabbbbaa
|
||||
babababaaaaababbabaabaab
|
||||
bbaabbbababbabababaabaababbbbabaabbaaaaababbbbab
|
||||
abababbbaabbbbababbbaaaaaaabaaab
|
||||
aabaabaaaaaababaabbaaaabaabaaaaaaaababaa
|
||||
aabbbaabbbbbabaababbabba
|
||||
abbbaabaaaaaaaaababbbabbbbaaaababbbbbababbbaaaaa
|
||||
aaabbbabbbbababbbbaabaabbaaaabab
|
||||
aabbaababbabbbabbbbbbaba
|
||||
abbaabbabbbbaaaaabaaaabbbaaababb
|
||||
aaabababbbbbaaaabbbababb
|
||||
abbbbbbbaaabaababbababababaabbbaabaabaaa
|
||||
bbbabababaabbababaabbbbabaababaa
|
||||
bbbabbabaaaabaaaaabbaaababababababababaaaaaabbbbaaaaabaabbaababb
|
||||
aabaaabaaaaaaaababbabbbb
|
||||
aabbabaabaabbabbaaabbbbaaabaabaa
|
||||
bbaaaabbbbbabaaabababbbaaabaaababababaab
|
||||
bbbbbbbaaabbbbbaaaaabbab
|
||||
babaabbbbaaabaaabbbababbbbbaabaaabbbbaba
|
||||
bbaaaabbbbbbaaaaabababaaaaabbaaabbbaabba
|
||||
bbabbbababaabbbbaabaaabaaaabbaaa
|
||||
baabaabbabaababbbbaabaabbaabbabbabbbbababbaaabbb
|
||||
babbbabaabbbaababababbab
|
||||
aabaaabbabaaaaabbbaaaabbaaabbaba
|
||||
aaaaabaaabaabbbbaabbbbbb
|
||||
aaaabbbabbababaabaabbbaabbbbbababababababbbaaabbaaabbabaaababbba
|
||||
abaaaabbabbbbbabbbabbbababbaababbbaaabba
|
||||
abababbbbaabbbbbbabbbbbbabbbbbabaaaababbababaabb
|
||||
abaaabbabbababbbabaababbbaabbbbababbbaabbbaabbaa
|
||||
babbbbbbbaabababbbababaaabbabbaabaabbabbaabbbaaa
|
||||
aaababbababaaaabbbbaaaaa
|
||||
babaaabbaabbbbbaaaaababa
|
||||
aaabaaaaaabbaababaabbabababbaaaabbaabbaa
|
||||
abaabbabbbaababaabbbaabababbabaabbaaaababbababaaabbbabbb
|
||||
bbbbababbbaabaabbabaaabbaababbaaabaaabbb
|
||||
baabbbabaaaaaaabbaabbaab
|
||||
bbbaaabaaaababbbababaabbbbbbbaabbbbababb
|
||||
babbaaaababbabbaabababbbababbbabaaababaa
|
||||
aaabababaabbabaabbbabaaababbbbab
|
||||
bbbbababbbabbbababbababbbaababaababaabba
|
||||
bbbababababbbbbbabbbaaaaabaabbba
|
||||
aabaaabbabbbbbaaabaababaabaaabab
|
||||
bbabbabaabaaaaaababbbbaa
|
||||
abaabaabaaaaabaabbbbbabababbabbbaabaabaa
|
||||
bbabbbaababbbabbaabbaaabbabbabaabaaabaaababaabaabbbabbababbbbabbbabbabbabbaabbbb
|
||||
aaaaabaababbababababbbbbaababbabbbabababbbbbabbb
|
||||
abaaabbabbabbbaaaabababb
|
||||
abbbbbababaaaaabbabaaaaa
|
||||
bbbabbabaaabbaabbaaaabaababbaaab
|
||||
bbbbbbbbabaabbaaaabbbaaa
|
||||
baaabbbaaababbbbabbbabbbabaabaabaababaab
|
||||
aaaababbbbaabbbaaaaababbbabbabba
|
||||
bbabbbaaababaaabbbbbbbbabbaabaababbabbba
|
||||
aaabababbabbbabaaabbabaaaaabbaba
|
||||
aabaabbbbaabbbabaaabbbbabbbbabbb
|
||||
bbbbbbabababaaababaabbbbaabbaaaabababbbb
|
||||
abaaaabbaaabaabbbbaaababaaabbaabaabbbbbb
|
||||
baabbababbbaaabaababbbba
|
||||
baaabbbabababbbaabbaabab
|
||||
babababaaaabaaaabbbbabbb
|
||||
babbababaaabbbbabbbaabaabaabbbbbaaabbbab
|
||||
baabbaabbababbababbaaaaa
|
||||
bbababbbaaaaaaaabaabbbbaaaaabaaa
|
||||
abbbaabbbbbbbbaabbabbbabbbbbabaaababaaab
|
||||
bbaabbbababaabbbbabaaaba
|
||||
baaababababaabbbbbabbaba
|
||||
abababbbaababbbbabbabaabbaabbbaaabbbaabaabbbbaaa
|
||||
bbaaaaaaaaabababbaabababaababbbbbbbbabaaaaabbabbbbbbbbaabaaaaabbbababbaaaaababaa
|
||||
baaaaabaaaaaaaaaabbabbba
|
||||
baabbbbaabaabbabbaaabbbb
|
||||
abbabbabaabbabaaaabbabab
|
||||
abaabbbbbaaaaababbabaaba
|
||||
bbbbbaaabbaabbbaabaaabbaabaaaaabbaabababaabbabbbbabbaabb
|
||||
babbbabaabaaabbaabbbbbaa
|
||||
bbabbaabbabbabaabbaaaabaaaabbaab
|
||||
aaaababaaabaaaaabbabbabaababaabaaabbabbb
|
||||
abbaaabbbbababaabaaaabaa
|
||||
baabbbbabaabaabbbaabbaab
|
||||
baababbabbbabaabaaabaabbbaaabaaabbbbbaba
|
||||
bbbababbaabbbabbbbbbbbaa
|
||||
bbbbbbabbbabbabbabbaabbbaaabaaab
|
||||
bbbababbababaaababaaabbabaababbb
|
||||
baabaabbaabbabaabbbaaaab
|
||||
bbaaaababbabababaaabaaaaaaabaabaabbbbaba
|
||||
bbabbaaabbbbbaaabbbaabab
|
||||
ababaaababbabababbaababb
|
||||
aabaaaababbabbabbabbbbaa
|
||||
aaaabaaabbaabbabababaaaaabbbabbb
|
||||
abbbabaabbabbbaaaabaaababbabbabbbbaabaababaaabbb
|
||||
bbaaaabbaabbaaabaaaaaaabaaabbbbaaabbaabaaababaaabbaaabaa
|
||||
babbbabbaaabababbbabaaab
|
||||
abbabbabbaabbababbabbbbaaaaabbbabbababba
|
||||
abbaababbbaabbababbbabbaaabbbbbaaaabababaabababbbbaabbbaabbabaabbbbbabbaabaaaaab
|
||||
babbbabaababbbabbbbabbba
|
||||
baaabaabaaaaaaabbabaabba
|
||||
baabaabbbaabaaabbbabbaaabaaaaaabbbbbaabb
|
||||
bbababbbabaaaabbbababaaa
|
||||
baababbaaaabbbbaabbababbaabbaabaabaabbbabbabaaab
|
||||
bbbbbbaaabbbababbaababbbbaaabbaabbaababb
|
||||
bbabbaaabaabbbaababbaabb
|
||||
ababbbababbbbbbbababbabb
|
||||
babababababaaaaaaaaababababbaaabbabaabab
|
||||
abaaabaaabbaabbbbabbaaba
|
||||
aaaababbbabbbbbbbbbaabba
|
||||
babbbabaaababaaabaaababb
|
||||
ababbbabbbabbabbbbababaaaaabbbaa
|
||||
aaaaabbbaabbaababbbbbbbbbaaaabbbaaaaabaabbbbaabaaababbaabababbabbabbabbb
|
||||
abbabaabbbabbbaaaaabaaaabbbbbaaa
|
||||
bbbbabbaaabaabbbaabababb
|
||||
bbbabbaabbbaabaaabaaabaabaaaaaabaabbbbaa
|
||||
bbbababbbabaaaabaaabbaba
|
||||
abbababbabaababbbaabbabaaaabaabbaaaabaaabbabbbbbababababbbbaabba
|
||||
aaabaaaaaababbbaabbaabab
|
||||
abaabbaabaaabababaaabbbababbbbab
|
||||
aaaaabbbbbababbbbabaaaaa
|
||||
aabaaabaaababaaaabaabaaa
|
||||
aabaabababbbaaaabaabbaaa
|
||||
babaabaababaabbbbbababbbaaababbaabbabaabbabbbbabbaabaaba
|
||||
aabaaabaaaabaaaabbaabbbb
|
||||
bbbbaabaabaaabaaaababbbabaabbaab
|
||||
bbabababbbabbbbaabbbbaab
|
||||
baabababbaabbbbbbaaabbbabbbabbbbbabaabbababbaaabaabababa
|
||||
abbbabbbabbabbabbaaaabaabbbbbaaaabaabababaababaaaaabababaababbba
|
||||
baabbabbbaabbbbaabaabbabaababbaa
|
||||
abaababbaaaaabbbaabbbaabaaababbbbbaaababaaaaababbabbaabb
|
||||
bbbabbbbababababaaabaaabbaabbabaabbabbbbaababaaaabbbabbbbbbabbbbaaaaababbaaaaaaa
|
||||
aababbabaabababaaababbabbaaaaaaabbbbbbaabbaaabbbbbbaabbb
|
||||
ababbbabaaabaababbbaaabb
|
||||
abbbbbbaabbbbbbbbbababba
|
||||
bbabbbbabbabbbaaabbabaababbbaaaaaabbaaaa
|
||||
bbaabaababbbbbbbabaabaab
|
||||
aaaaabbabbbbabbabaabbbbbbabbabaaababbabbaabbaaaa
|
||||
abbaabbabbbbbbbbabababba
|
||||
abababbbabbababbabbabbaabbbbaabb
|
||||
baaabaaaaaaaabbabaaababb
|
||||
abaabbbbbabaaaabbaaaabaa
|
||||
bbaabaaabbaabaaaabbbbbaa
|
||||
baabaaabbbbbbbbabbababaaabbaaaab
|
||||
bbaaabababbaaabbaabaaabbaabaabbabaaaabaa
|
||||
aababbbbbbabbabbbbabbbbaaabababb
|
||||
abbbabaabbaaaaabaaabbaaa
|
||||
abbbaaaabaaabaaaaaaaaaaabbaabbab
|
||||
aaabaaaabbbbbbbaabbababbbabbbabaabbabbaabbbbaaaabbbaabbb
|
||||
aabbaaabbbabbabbbbbaabaaaaaaaabaabbbaabb
|
||||
babbbbbbaabbabaabaaaabab
|
||||
aaaaabbbaaaaabbaaababbbaabababab
|
||||
baabaabbbbbbbbbabbaabaaababaabab
|
||||
aababbbbaaaabbaababaaaaabaabbbabbbababaaaabaaabbaaaabaabababbbabbabaabbabaabaaaa
|
||||
aababaaaabbbababbbaabaabbbbababbbbaaabababababba
|
||||
bbbbbbabbabbababaaaaabaabaabbbaabbaaabababbaaaab
|
||||
abbaabbbaabbbbabbbabbaba
|
||||
bbaababaabaabbbbbabababb
|
||||
aabaabbbbbbbbbbababbababbbbbababbabbaaab
|
||||
bbabbaabaabbaabababaaaabbabbaaaaabaaabab
|
||||
babbaaaabbabbabbabbaabab
|
||||
bbbababbabbababbbabbaabb
|
||||
aaababbabaaaaaababbbabba
|
||||
babaabaabaaababaaabaaabaaaabbabb
|
||||
1728
2020/input/2020/day20.txt
Normal file
1728
2020/input/2020/day20.txt
Normal file
File diff suppressed because it is too large
Load Diff
404
2020/src/day20.rs
Normal file
404
2020/src/day20.rs
Normal file
@ -0,0 +1,404 @@
|
||||
//! --- Day 20: Jurassic Jigsaw ---
|
||||
//! The high-speed train leaves the forest and quickly carries you south. You can even see a desert in the distance! Since you have some spare time, you might as well see if there was anything interesting in the image the Mythical Information Bureau satellite captured.
|
||||
//!
|
||||
//! After decoding the satellite messages, you discover that the data actually contains many small images created by the satellite's camera array. The camera array consists of many cameras; rather than produce a single square image, they produce many smaller square image tiles that need to be reassembled back into a single image.
|
||||
//!
|
||||
//! Each camera in the camera array returns a single monochrome image tile with a random unique ID number. The tiles (your puzzle input) arrived in a random order.
|
||||
//!
|
||||
//! Worse yet, the camera array appears to be malfunctioning: each image tile has been rotated and flipped to a random orientation. Your first task is to reassemble the original image by orienting the tiles so they fit together.
|
||||
//!
|
||||
//! To show how the tiles should be reassembled, each tile's image data includes a border that should line up exactly with its adjacent tiles. All tiles have this border, and the border lines up exactly when the tiles are both oriented correctly. Tiles at the edge of the image also have this border, but the outermost edges won't line up with any other tiles.
|
||||
//!
|
||||
//! For example, suppose you have the following nine tiles:
|
||||
//!
|
||||
//! Tile 2311:
|
||||
//! ..##.#..#.
|
||||
//! ##..#.....
|
||||
//! #...##..#.
|
||||
//! ####.#...#
|
||||
//! ##.##.###.
|
||||
//! ##...#.###
|
||||
//! .#.#.#..##
|
||||
//! ..#....#..
|
||||
//! ###...#.#.
|
||||
//! ..###..###
|
||||
//!
|
||||
//! Tile 1951:
|
||||
//! #.##...##.
|
||||
//! #.####...#
|
||||
//! .....#..##
|
||||
//! #...######
|
||||
//! .##.#....#
|
||||
//! .###.#####
|
||||
//! ###.##.##.
|
||||
//! .###....#.
|
||||
//! ..#.#..#.#
|
||||
//! #...##.#..
|
||||
//!
|
||||
//! Tile 1171:
|
||||
//! ####...##.
|
||||
//! #..##.#..#
|
||||
//! ##.#..#.#.
|
||||
//! .###.####.
|
||||
//! ..###.####
|
||||
//! .##....##.
|
||||
//! .#...####.
|
||||
//! #.##.####.
|
||||
//! ####..#...
|
||||
//! .....##...
|
||||
//!
|
||||
//! Tile 1427:
|
||||
//! ###.##.#..
|
||||
//! .#..#.##..
|
||||
//! .#.##.#..#
|
||||
//! #.#.#.##.#
|
||||
//! ....#...##
|
||||
//! ...##..##.
|
||||
//! ...#.#####
|
||||
//! .#.####.#.
|
||||
//! ..#..###.#
|
||||
//! ..##.#..#.
|
||||
//!
|
||||
//! Tile 1489:
|
||||
//! ##.#.#....
|
||||
//! ..##...#..
|
||||
//! .##..##...
|
||||
//! ..#...#...
|
||||
//! #####...#.
|
||||
//! #..#.#.#.#
|
||||
//! ...#.#.#..
|
||||
//! ##.#...##.
|
||||
//! ..##.##.##
|
||||
//! ###.##.#..
|
||||
//!
|
||||
//! Tile 2473:
|
||||
//! #....####.
|
||||
//! #..#.##...
|
||||
//! #.##..#...
|
||||
//! ######.#.#
|
||||
//! .#...#.#.#
|
||||
//! .#########
|
||||
//! .###.#..#.
|
||||
//! ########.#
|
||||
//! ##...##.#.
|
||||
//! ..###.#.#.
|
||||
//!
|
||||
//! Tile 2971:
|
||||
//! ..#.#....#
|
||||
//! #...###...
|
||||
//! #.#.###...
|
||||
//! ##.##..#..
|
||||
//! .#####..##
|
||||
//! .#..####.#
|
||||
//! #..#.#..#.
|
||||
//! ..####.###
|
||||
//! ..#.#.###.
|
||||
//! ...#.#.#.#
|
||||
//!
|
||||
//! Tile 2729:
|
||||
//! ...#.#.#.#
|
||||
//! ####.#....
|
||||
//! ..#.#.....
|
||||
//! ....#..#.#
|
||||
//! .##..##.#.
|
||||
//! .#.####...
|
||||
//! ####.#.#..
|
||||
//! ##.####...
|
||||
//! ##..#.##..
|
||||
//! #.##...##.
|
||||
//!
|
||||
//! Tile 3079:
|
||||
//! #.#.#####.
|
||||
//! .#..######
|
||||
//! ..#.......
|
||||
//! ######....
|
||||
//! ####.#..#.
|
||||
//! .#...#.##.
|
||||
//! #.#####.##
|
||||
//! ..#.###...
|
||||
//! ..#.......
|
||||
//! ..#.###...
|
||||
//! By rotating, flipping, and rearranging them, you can find a square arrangement that causes all adjacent borders to line up:
|
||||
//!
|
||||
//! #...##.#.. ..###..### #.#.#####.
|
||||
//! ..#.#..#.# ###...#.#. .#..######
|
||||
//! .###....#. ..#....#.. ..#.......
|
||||
//! ###.##.##. .#.#.#..## ######....
|
||||
//! .###.##### ##...#.### ####.#..#.
|
||||
//! .##.#....# ##.##.###. .#...#.##.
|
||||
//! #...###### ####.#...# #.#####.##
|
||||
//! .....#..## #...##..#. ..#.###...
|
||||
//! #.####...# ##..#..... ..#.......
|
||||
//! #.##...##. ..##.#..#. ..#.###...
|
||||
//!
|
||||
//! #.##...##. ..##.#..#. ..#.###...
|
||||
//! ##..#.##.. ..#..###.# ##.##....#
|
||||
//! ##.####... .#.####.#. ..#.###..#
|
||||
//! ####.#.#.. ...#.##### ###.#..###
|
||||
//! .#.####... ...##..##. .######.##
|
||||
//! .##..##.#. ....#...## #.#.#.#...
|
||||
//! ....#..#.# #.#.#.##.# #.###.###.
|
||||
//! ..#.#..... .#.##.#..# #.###.##..
|
||||
//! ####.#.... .#..#.##.. .######...
|
||||
//! ...#.#.#.# ###.##.#.. .##...####
|
||||
//!
|
||||
//! ...#.#.#.# ###.##.#.. .##...####
|
||||
//! ..#.#.###. ..##.##.## #..#.##..#
|
||||
//! ..####.### ##.#...##. .#.#..#.##
|
||||
//! #..#.#..#. ...#.#.#.. .####.###.
|
||||
//! .#..####.# #..#.#.#.# ####.###..
|
||||
//! .#####..## #####...#. .##....##.
|
||||
//! ##.##..#.. ..#...#... .####...#.
|
||||
//! #.#.###... .##..##... .####.##.#
|
||||
//! #...###... ..##...#.. ...#..####
|
||||
//! ..#.#....# ##.#.#.... ...##.....
|
||||
//! For reference, the IDs of the above tiles are:
|
||||
//!
|
||||
//! 1951 2311 3079
|
||||
//! 2729 1427 2473
|
||||
//! 2971 1489 1171
|
||||
//! To check that you've assembled the image correctly, multiply the IDs of the four corner tiles together. If you do this with the assembled tiles from the example above, you get 1951 * 3079 * 2971 * 1171 = 20899048083289.
|
||||
//!
|
||||
//! Assemble the tiles into an image. What do you get if you multiply together the IDs of the four corner tiles?
|
||||
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::ops::Index;
|
||||
use std::str::FromStr;
|
||||
|
||||
use aoc_runner_derive::{aoc, aoc_generator};
|
||||
|
||||
#[derive(Default, Debug)]
|
||||
struct Tile {
|
||||
id: usize,
|
||||
pixels: Vec<u8>,
|
||||
width: usize,
|
||||
height: usize,
|
||||
}
|
||||
|
||||
impl FromStr for Tile {
|
||||
type Err = ();
|
||||
fn from_str(s: &str) -> Result<Tile, ()> {
|
||||
let mut it = s.split('\n');
|
||||
let id = it
|
||||
.next()
|
||||
.unwrap()
|
||||
.split(' ')
|
||||
.skip(1)
|
||||
.next()
|
||||
.unwrap()
|
||||
.strip_suffix(':')
|
||||
.unwrap()
|
||||
.parse()
|
||||
.expect("couldn't parse tile number");
|
||||
let rows: Vec<_> = it.collect();
|
||||
let height = rows.len();
|
||||
let mut width = 0;
|
||||
let mut pixels = Vec::with_capacity(height * height);
|
||||
rows.iter().for_each(|row| {
|
||||
width = row.len();
|
||||
pixels.extend(row.bytes());
|
||||
});
|
||||
Ok(Tile {
|
||||
id,
|
||||
pixels,
|
||||
height,
|
||||
width,
|
||||
})
|
||||
}
|
||||
}
|
||||
impl Index<(usize, usize)> for Tile {
|
||||
type Output = u8;
|
||||
|
||||
fn index(&self, (x, y): (usize, usize)) -> &Self::Output {
|
||||
&self.pixels[x % self.width + y * self.width]
|
||||
}
|
||||
}
|
||||
impl Tile {
|
||||
fn border_set(&self) -> HashSet<Vec<u8>> {
|
||||
let mut set = HashSet::new();
|
||||
set.insert(self.top_border());
|
||||
set.insert(self.right_border());
|
||||
set.insert(self.bottom_border());
|
||||
set.insert(self.left_border());
|
||||
|
||||
let rev_set: HashSet<_> = set
|
||||
.iter()
|
||||
.map(|b| {
|
||||
let mut b = b.clone();
|
||||
b.reverse();
|
||||
b
|
||||
})
|
||||
.collect();
|
||||
set.union(&rev_set).cloned().collect()
|
||||
}
|
||||
fn top_border(&self) -> Vec<u8> {
|
||||
(0..self.width).map(|x| self[(x, 0)]).collect()
|
||||
}
|
||||
fn right_border(&self) -> Vec<u8> {
|
||||
(0..self.height)
|
||||
.map(|y| self[(self.width - 1, y)])
|
||||
.collect()
|
||||
}
|
||||
fn bottom_border(&self) -> Vec<u8> {
|
||||
(0..self.width)
|
||||
.map(|x| self[(x, self.height - 1)])
|
||||
.collect()
|
||||
}
|
||||
fn left_border(&self) -> Vec<u8> {
|
||||
(0..self.height).map(|y| self[(0, y)]).collect()
|
||||
}
|
||||
}
|
||||
|
||||
#[aoc_generator(day20)]
|
||||
fn generator(input: &str) -> Vec<Tile> {
|
||||
input
|
||||
.split("\n\n")
|
||||
.map(|s| s.parse().expect("failed to parse tile"))
|
||||
.collect()
|
||||
}
|
||||
#[aoc(day20, part1)]
|
||||
fn solution1(tiles: &[Tile]) -> usize {
|
||||
let mut border_counts = HashMap::new();
|
||||
tiles.iter().for_each(|t| {
|
||||
t.border_set().iter().for_each(|b| {
|
||||
let c = border_counts.entry(b.clone()).or_insert(0);
|
||||
*c += 1;
|
||||
})
|
||||
});
|
||||
|
||||
let corner_tiles: Vec<_> = tiles
|
||||
.iter()
|
||||
.filter(|t| {
|
||||
let matches: usize = t.border_set().iter().map(|b| border_counts[b]).sum();
|
||||
matches == 12
|
||||
})
|
||||
.collect();
|
||||
corner_tiles.iter().map(|t| t.id).product()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
use super::*;
|
||||
const INPUT: &'static str = r#"Tile 2311:
|
||||
..##.#..#.
|
||||
##..#.....
|
||||
#...##..#.
|
||||
####.#...#
|
||||
##.##.###.
|
||||
##...#.###
|
||||
.#.#.#..##
|
||||
..#....#..
|
||||
###...#.#.
|
||||
..###..###
|
||||
|
||||
Tile 1951:
|
||||
#.##...##.
|
||||
#.####...#
|
||||
.....#..##
|
||||
#...######
|
||||
.##.#....#
|
||||
.###.#####
|
||||
###.##.##.
|
||||
.###....#.
|
||||
..#.#..#.#
|
||||
#...##.#..
|
||||
|
||||
Tile 1171:
|
||||
####...##.
|
||||
#..##.#..#
|
||||
##.#..#.#.
|
||||
.###.####.
|
||||
..###.####
|
||||
.##....##.
|
||||
.#...####.
|
||||
#.##.####.
|
||||
####..#...
|
||||
.....##...
|
||||
|
||||
Tile 1427:
|
||||
###.##.#..
|
||||
.#..#.##..
|
||||
.#.##.#..#
|
||||
#.#.#.##.#
|
||||
....#...##
|
||||
...##..##.
|
||||
...#.#####
|
||||
.#.####.#.
|
||||
..#..###.#
|
||||
..##.#..#.
|
||||
|
||||
Tile 1489:
|
||||
##.#.#....
|
||||
..##...#..
|
||||
.##..##...
|
||||
..#...#...
|
||||
#####...#.
|
||||
#..#.#.#.#
|
||||
...#.#.#..
|
||||
##.#...##.
|
||||
..##.##.##
|
||||
###.##.#..
|
||||
|
||||
Tile 2473:
|
||||
#....####.
|
||||
#..#.##...
|
||||
#.##..#...
|
||||
######.#.#
|
||||
.#...#.#.#
|
||||
.#########
|
||||
.###.#..#.
|
||||
########.#
|
||||
##...##.#.
|
||||
..###.#.#.
|
||||
|
||||
Tile 2971:
|
||||
..#.#....#
|
||||
#...###...
|
||||
#.#.###...
|
||||
##.##..#..
|
||||
.#####..##
|
||||
.#..####.#
|
||||
#..#.#..#.
|
||||
..####.###
|
||||
..#.#.###.
|
||||
...#.#.#.#
|
||||
|
||||
Tile 2729:
|
||||
...#.#.#.#
|
||||
####.#....
|
||||
..#.#.....
|
||||
....#..#.#
|
||||
.##..##.#.
|
||||
.#.####...
|
||||
####.#.#..
|
||||
##.####...
|
||||
##..#.##..
|
||||
#.##...##.
|
||||
|
||||
Tile 3079:
|
||||
#.#.#####.
|
||||
.#..######
|
||||
..#.......
|
||||
######....
|
||||
####.#..#.
|
||||
.#...#.##.
|
||||
#.#####.##
|
||||
..#.###...
|
||||
..#.......
|
||||
..#.###..."#;
|
||||
|
||||
#[test]
|
||||
fn test_generator() {
|
||||
assert_eq!(
|
||||
generator(&INPUT).iter().map(|t| t.id).collect::<Vec<_>>(),
|
||||
vec![2311, 1951, 1171, 1427, 1489, 2473, 2971, 2729, 3079,]
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_solution1() {
|
||||
assert_eq!(solution1(&generator(&INPUT)), 1951 * 3079 * 2971 * 1171);
|
||||
}
|
||||
}
|
||||
@ -10,6 +10,7 @@ pub mod day17;
|
||||
//pub mod day18;
|
||||
pub mod day19;
|
||||
pub mod day2;
|
||||
pub mod day20;
|
||||
pub mod day3;
|
||||
pub mod day4;
|
||||
pub mod day5;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user