1
0
Fork 0

Split from monorepo

This commit is contained in:
Nicola Zangrandi 2024-02-08 09:55:40 +01:00
commit 438edfdb90
Signed by: wasp
GPG key ID: 43C1470D890F23ED
85 changed files with 24048 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.idea

12
2015/aoc_d1p1.py Normal file
View file

@ -0,0 +1,12 @@
#!/usr/bin/env python
floor = 0
with open("inputd1.txt", "r") as f:
for input in f:
for c in input:
if c == "(":
floor += 1
elif c == ")":
floor -= 1
print(floor)

20
2015/aoc_d1p2.py Normal file
View file

@ -0,0 +1,20 @@
#!/usr/bin/env python
floor = 0
pos = 0
basement_pos = 0
with open("inputd1.txt", "r") as f:
for input in f:
for c in input:
pos += 1
if c == "(":
floor += 1
elif c == ")":
floor -= 1
if floor < 0 and basement_pos == 0:
basement_pos = pos
print(floor)
print(basement_pos)

23
2015/aoc_d2p1.py Normal file
View file

@ -0,0 +1,23 @@
#!/usr/bin/env python
total = 0
with open("inputd2.txt", "r") as f:
for line in f:
dimensions = [int(x) for x in line.split("x")]
l = dimensions[0]
w = dimensions[1]
h = dimensions[2]
lw = l * w
wh = w * h
hl = h * l
smallest = wh
if (lw < hl and lw < wh):
smallest = lw
elif (hl < wh):
smallest = hl
total += (2 * lw) + (2 * hl) + (2 * wh) + smallest
print(total)

13
2015/aoc_d2p2.py Normal file
View file

@ -0,0 +1,13 @@
#!/usr/bin/env python
total = 0
with open("inputd2.txt", "r") as f:
for line in f:
dimensions = sorted([int(x) for x in line.split("x")])
l = dimensions[0]
w = dimensions[1]
h = dimensions[2]
total += (2 * l) + (2 * w) + (l * w * h)
print(total)

19
2015/aoc_d3p1.py Normal file
View file

@ -0,0 +1,19 @@
#!/usr/bin/env python
visited_houses = []
current_house = (0, 0)
with open("inputd3.txt", "r") as f:
for input in f:
for x in input:
if x == "^":
current_house = (current_house[0] - 1, current_house[1])
elif x == "v":
current_house = (current_house[0] + 1, current_house[1])
elif x == ">":
current_house = (current_house[0], current_house[1] + 1)
else:
current_house = (current_house[0], current_house[1] - 1)
visited_houses.append(current_house)
print(len(set(visited_houses)))

38
2015/aoc_d3p2.py Normal file
View file

@ -0,0 +1,38 @@
#!/usr/bin/env python
visited_houses_human = []
current_house_human = (0, 0)
visited_houses_robot = []
current_house_robot = (0, 0)
count = 0
with open("inputd3.txt", "r") as f:
for input in f:
for x in input:
if x == "^" and count % 2 == 0:
current_house_human = (current_house_human[0] - 1, current_house_human[1])
elif x == "^" and count % 2 == 1:
current_house_robot = (current_house_robot[0] - 1, current_house_robot[1])
elif x == "v" and count % 2 == 0:
current_house_human = (current_house_human[0] + 1, current_house_human[1])
elif x == "v" and count % 2 == 1:
current_house_robot = (current_house_robot[0] + 1, current_house_robot[1])
elif x == ">" and count % 2 == 0:
current_house_human = (current_house_human[0], current_house_human[1] + 1)
elif x == ">" and count % 2 == 1:
current_house_robot = (current_house_robot[0], current_house_robot[1] + 1)
elif x == "<" and count % 2 == 0:
current_house_human = (current_house_human[0], current_house_human[1] - 1)
else:
current_house_robot = (current_house_robot[0], current_house_robot[1] - 1)
if count % 2 == 0:
visited_houses_human.append(current_house_human)
else:
visited_houses_robot.append(current_house_robot)
count += 1
print(len(set(visited_houses_human + visited_houses_robot)))

12
2015/aoc_d4p1.py Normal file
View file

@ -0,0 +1,12 @@
#!/usr/bin/env python
import hashlib
secret = "iwrupvqb".encode('utf-8')
counter = 0
hash = hashlib.md5(secret).hexdigest()
while hash.startswith("00000") == False:
counter += 1
hash = hashlib.md5(secret + str(counter).encode('utf-8')).hexdigest()
print(counter)

12
2015/aoc_d4p2.py Normal file
View file

@ -0,0 +1,12 @@
#!/usr/bin/env python
import hashlib
secret = "iwrupvqb".encode('utf-8')
counter = 0
hash = hashlib.md5(secret).hexdigest()
while hash.startswith("000000") == False:
counter += 1
hash = hashlib.md5(secret + str(counter).encode('utf-8')).hexdigest()
print(counter)

43
2015/aoc_d5p1.py Normal file
View file

@ -0,0 +1,43 @@
#!/usr/bin/env python
total = 0
with open("inputd5.txt", "r") as f:
for line in f:
vowels = 0
previous_letter = ""
double_letter = False
for c in line:
naughty = False
if c in ["a", "e", "i", "o", "u"]:
vowels += 1
if c == previous_letter:
double_letter = True
if (previous_letter == "a" and c == "b"):
naughty = True
if (previous_letter == "c" and c == "d"):
naughty = True
if (previous_letter == "p" and c == "q"):
naughty = True
if (previous_letter == "x" and c == "y"):
naughty = True
if (naughty):
break
previous_letter = c
if (naughty == False and vowels >= 3 and double_letter == True):
total += 1
double_letter = False
previous_letter = ""
vowels = 0
print(total)

1
2015/inputd1.txt Normal file

File diff suppressed because one or more lines are too long

1000
2015/inputd2.txt Normal file

File diff suppressed because it is too large Load diff

1
2015/inputd3.txt Normal file

File diff suppressed because one or more lines are too long

1
2015/inputd4.txt Normal file
View file

@ -0,0 +1 @@
iwrupvqb

1000
2015/inputd5.txt Normal file

File diff suppressed because it is too large Load diff

200
2020/inputs/day1.txt Normal file
View file

@ -0,0 +1,200 @@
1956
1994
457
1654
2003
1902
1741
1494
1597
1129
1146
1589
1989
1093
1881
1288
1848
1371
1508
1035
1813
1335
1634
1102
1262
1637
1048
1807
1270
1528
1670
1803
1202
1294
1570
1640
1484
1872
1140
1207
1485
1781
1778
1772
1334
1267
1045
1194
1873
1441
1557
1414
1123
1980
1527
1591
1665
1916
1662
1139
1973
1258
1041
1134
1609
1554
1455
1124
1478
1938
1759
1281
1410
1511
930
1319
1302
1827
1216
1404
1460
2002
1590
1817
1341
1631
1608
1382
1158
1594
1049
1804
1555
1753
447
1021
1079
609
1766
1327
1851
1052
1737
1175
1043
1945
1573
1113
1724
1203
1856
1682
1623
1135
1015
1423
1412
1315
1375
1895
1351
1530
1758
1445
1518
1819
1567
1305
1919
1952
1432
1099
1476
1883
1871
1900
1442
1393
1214
1283
1538
1391
1008
1109
1621
1876
1998
1032
1324
1927
481
1732
1370
1683
1199
1465
1882
1293
1671
1456
1197
1506
1381
1469
1830
1957
1850
1184
1564
1170
1943
1131
1867
1208
1788
1337
1722
1760
1651
1069
1574
1959
1770
66
1190
1606
1899
1054
980
1693
1173
1479
1333
1579
1720
1782
1971
1438
1178
1306

104
2020/inputs/day10.txt Normal file
View file

@ -0,0 +1,104 @@
79
142
139
33
56
133
138
61
125
88
158
123
65
69
105
6
81
31
60
70
159
114
71
15
13
72
118
14
9
93
162
140
165
1
80
148
32
53
102
5
68
101
111
85
45
25
16
59
131
23
91
92
115
103
166
22
145
161
108
155
135
55
86
34
37
78
28
75
7
104
121
24
153
167
95
87
94
134
154
84
151
124
62
49
38
39
54
109
128
19
2
98
122
132
141
168
8
160
50
42
46
110
12
152

91
2020/inputs/day11.txt Normal file
View file

@ -0,0 +1,91 @@
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLL.LL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.L.LLLLLLLLLLLLLLL.LLLL.LLL
.LLLLLLLL.LL.L.LLLLLLLLL.LLLLLLL.L.LLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLL.L.LLLLL.L.LLLLLLLLLLLLLLLLLL
LLLLLLLLL...LL.LLLLLLLL..LLLLLLLLL.L..LLLLLLLLLLLLLLLLLLLLLLLL.LLL..LLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLL.LLLLLL.LLLLLLLLL.LL.LLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLL..LLLLL.LLLLLL...LLLLLLL.LLLLLLLLLL
LLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLL.LL
LLLLLLL.LLLLLL.LLLLLLLL..LLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLL.LLLL.LLLLLL.L
.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLL.LLLL.LLLLLLLLL.LL.L.LLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLL.LLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LL.LLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLL
LLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLL..L..LLLLLLL.LLLLLLL
L.....L..L....LLLL......L.L....LLLL..L...L..LL..........L...LL..LL.LLL..L.LL...LL.L...L.L....L..
LLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLL.LLLLLL.L.LLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LL.LL.LL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLL.LLLL.LLLL.LLLLLL.L.LLL.LLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLL.L.L.LLLLLLLL
LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL..LLLLLLLL.LLLLLLLLLLLLLL.LLL.LLL.L.LL.LLLLLL.LL.LLLLL
.L..L....LLL...LL.L.LL......L........LL...L..L..LL.......L....L.L.LLL......LL..L..L.....LLL.....
LLLLLLLLL.LLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLL.LLLL.LL.LLLLLLLLLLLLLLLL.LLLLL.LL
LLLLLL.LL.LLLLLLLLLLLLLL.LLLLLLLLL.LLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL
L.LLLLLLL..LLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL..LLLLLL.L.LLLLLLLL
LL.LLLLLL..LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLL.LLLLL.LLLL.L.LL.LLLL.LL.LLLLLL.LLLLLLLL
LL.LLLLLLLLLLL.LLLLL.LLL.LLLLLLLL..LLLLLLLL.LL..LLLL.LLLLLLLL..LLLLLLLLLLLLLLLLL.L.LLL..LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLL.LLLL.LLL.LLLLLLLL
LLLLLLL.L.LLLL.LLLLLLLLLL.LLLLL.LL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLL.LLLLL.LLLL.LLLLLLLLLLLLL
LL.LLL....L....L.L....LL...L......L.....LL.LL.LLL....L.LL........L.LL..L.LLLL.LLL.LLLLLLL.L..L..
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLL.LLL.LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLL.LLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLL.LL.LLLLLLLL
LLLLL.LLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.L.LLLLLLLLLL.LLL.L
LLLLLLLLL.LLLL.LLLLLL..L.LLLLLLLLLLL.LL.LLLLL.LLLLLL.LL.LLLLLL.LLLL.LLLLLLLLLLLL.LLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.L.LLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLL
LLL.LLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLL.LLLL.LLLLLL.LL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLL.LL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL
.L.LL....L.....LL...L.....LL..LL.........L.L..L.......LL...L.L......L........L...L.....L.....LL.
LLLLLLLLLLLLLL.LLLLLLL.L.LLLLLLLLL.LLLLLLLL.LLLLLLL..LLLLLLLLLLLLLL.LLLLLLLLL.LLL.LLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLL.LL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL..LLLLLLL
LLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLL
.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLL..LLL.LLLL.LLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLLL.LLLLL.LLLLLLL.L.LLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLL.LLLLL.LLL.LLLLLLLLL..LLLLLLL
L....L..L...L....L.....L...L...L......L.LL.L....L.L.......L.LL.LL.LL....L...LLL...LL...LLL...L.L
LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.L.LLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.
LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL..LLLLLLLLLLLLLLLL.LLLLLLLLL.L.LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LL.LLLLLL.LLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLL.LLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLLL
.LLLLLLLL.LL.L.LLLLLLLLL.LLLLLLL...LLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLLLLL..LLLLLLLL.LLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LL.LLLLLLLLL.LLLLLLLLLLLLL.LLLL.LLLL.LLLLLLLLLLL.LLLLLL
LLLLLLLLL.LLLL.LLLLLLLLL.LLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLL.L.LLLLLLL.LLLLLLLLL.LLLL.LLL
LL.LLLLLL.LL.L.L.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL..LLLLLLL.
LLLLLLL.L.LLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL
LL......LLL.L......LL.LLL.....L..L.........L....L..L....L.L....L...L..L...L...L..L..L....L......
LLLLLLLLL.LLLLLLLLLLLLLL.L.L.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLLLLLL..LLLLLLLLLLLLLLL.LLL.LLLLLLLL.LLLLLLLL.LLLLLLL.L.LLLL.LLLLLLL.L.LLLLLLL.L.LLLLLLLL
LL.LL.LLLLLLLLLLLLLLLLLL.LLLLLLLLL..LLLLLLL.LLLLLLLL.LLLLLLLL..L.LLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.
LLLL.LLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL
.LLLLLL.L.L...L.L.....L..L......LLL..L..L.L..LLL....LLL......L........LL..L.L....LL.L..L.L......
LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLL.LLLL.LL.L.L.LLLLLL..LLLLLLL.
LLLLLLLLLLLLLL.LLL.LLLLL.LLLLLLLLL.LLLLLLLL.LL.LLLL..LLLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL..LLLLL.LL.LLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL..LLLLLLLL.L.LLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL..LLLLLLL
LLLLLLLLL.LL.L.LLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.LL.LLLLL
....L.LLLLL......L.LL....L.L...L..LL...LLL.LLLL...LL.L.L....L.LL...L.......L...L.L..LL.........L
LLLLLL.LL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLL.L.LLLLLLLL.LLLLLLLL.LLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLL.LLLLLLLLLLLLLLLLLL.LL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLL..LLLLLLLL.LLLLLLLLLL.LLL.LLL.LLLL.LLLLL.L.L.LLLLLLL.L.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLL.L.LLLLLLLLL..LL.LLLL.LLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL
LL........L.....L....L..L...L.LLL........L.....L...L.......L.....L..L.L........L.L..L....LL.L.L.
LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLL
LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL..LLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLL.LLLL.L.LL.LLLLLLLL.L.LLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLL.LL.L.LLLLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLLL
LLLLLLLLL.LLLL.LLLLLLLLL.LLLL.LLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL.L.LL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL
LLLLLLLLLLLLLL..LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL...LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LL.LLLLLLLL.LLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.
...........LL.L.L.LLL..LL.L..L...LL.L.L........LL.L..L.....L..L...L.L....L.LL..LL..L.L.LL..LL..L
LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLL.LL.LLLLLLLL.LLLLL.LLLLLLLLL.LLLLL.LL.LLLLLLLL.LLLLLLLLL.LLLL.LLLLLLL.L.L.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL.L.LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLL..LLLLLLLLL..LLLLLLLL.LLL.LLLL
LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LL.LLLLLLLL.LLLL.LLL.LLLLLLLLL.L.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL
LLLLLLLLLLLLLLL.LLLLLLLL.LLL.LLLLLLLLLLLLLL.L.LLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL
LLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLL.L.LL..LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLL..LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.L.LLLLLLL..LLLLLLLLL.L.LL.LL
LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLL.L.L
LLLLLLLLL.LL.L.LLLLLLLLL.LLLLLL.LL.LLLLLLLL.LLLLLLLLLLLLLLLLLL.LLL.LLLLLLLLLLLLLLLLLLLL.LL..LLLL

780
2020/inputs/day12.txt Normal file
View file

@ -0,0 +1,780 @@
S1
R270
S5
W2
F63
S3
L90
W4
F59
S1
F21
W4
R90
W1
R180
S2
W2
F91
W5
R270
F97
R90
E2
R90
F6
W1
R90
W3
F1
S4
F1
N3
F76
S4
W5
F88
W4
N3
W2
F48
N1
F50
E3
F18
L90
F30
S3
R90
W1
N5
W1
R90
R90
E1
S2
F73
R90
S4
F89
F34
L90
F11
S3
F20
S5
E3
R180
E3
L90
E2
F1
E3
N3
F84
R90
E4
R180
F24
N3
L90
F15
W4
F52
S5
L180
N4
R90
E5
F11
S4
F27
R180
E4
R180
W3
N2
W1
S3
W4
E5
F97
L180
E3
N4
E3
S4
L90
S4
R90
N5
E1
S5
F19
E1
S2
L180
F36
S2
L90
W1
F8
W1
F67
E3
L90
F33
N4
F35
W2
F33
L180
N1
L90
R90
N3
W4
S1
F36
E2
F2
L90
W3
L90
E5
F4
L90
N1
N5
W4
N5
R90
W4
N5
W2
N5
F43
N3
W3
S2
W2
R90
E1
R90
F26
R90
E4
L270
F97
L180
N2
F2
R90
F33
E2
F85
E4
F80
R90
N2
L90
S5
F96
W1
S5
L180
F54
E3
F84
E3
L90
W1
N2
W4
L90
W4
F26
E5
R180
W1
F43
N4
E1
S4
S3
L90
N3
E1
F14
E1
N2
F93
S1
W3
N5
F15
W5
R90
F93
L90
E5
S4
E4
L90
E2
N4
F98
R90
W3
F100
R90
E2
F100
N5
F9
R90
F36
N3
W3
N4
F35
E3
R90
W4
L90
W3
F15
L90
F73
S2
E1
R180
F93
L270
F37
S1
F36
N1
E1
W1
R90
F46
W2
N4
F50
R90
W4
F90
L90
S3
F2
E1
L90
E5
S2
F91
W2
F21
E2
N2
W5
F79
E1
F77
L90
W5
N2
E3
L180
S2
W1
S1
R90
S5
R180
E2
F55
W4
R90
S3
L90
S1
R180
W4
R180
W5
S5
L180
F35
N1
F72
L90
W4
L180
S1
E1
N5
L90
W5
N1
E2
N4
W3
F3
W4
F96
E1
F20
R90
W4
F99
L90
E4
N3
N3
W3
N5
E2
N4
E4
L90
S2
W3
F3
R90
E2
R90
F23
N5
F39
W3
R90
N3
R180
R90
F94
W1
R90
N3
F16
R90
F61
R90
F67
N4
F72
S2
F39
W1
S1
R90
F67
S1
L90
W5
N5
E3
F65
E2
N1
S4
L90
N4
W5
R90
F49
L180
F22
E2
L90
N3
R90
F61
L180
F57
L90
F90
R90
E5
L180
E1
L180
S3
W4
F55
E1
F95
R180
W5
L180
F23
E3
F97
S1
F19
N2
W4
F10
L90
W4
S1
L90
W5
F64
R90
W4
F60
W4
L90
W3
F15
E5
N5
L90
S2
L180
F64
L180
F93
E5
F13
R270
S4
F58
R180
W5
S1
W4
N1
L270
S4
E4
N5
F38
W4
N2
W2
N1
R90
E1
L90
N2
R90
N3
E3
N3
F90
W2
L90
F95
S1
S4
F48
L270
W2
L90
F34
S3
F23
N2
F13
R180
E2
F95
L90
N2
R90
S2
E3
N1
F41
N2
R180
S4
W3
L90
W5
L90
F35
S5
E2
S5
E3
F81
W4
N3
F28
E1
F93
S3
F53
L90
W5
F59
W1
R90
E2
S5
F80
W3
S5
F6
R90
F8
W1
R180
E2
L270
N3
F59
W5
F51
R90
N2
E4
R90
E4
S1
W2
N1
F45
R90
N5
F28
L90
N4
F78
S1
R90
N5
L90
S2
F92
L180
E3
R90
F26
W1
L180
R90
S3
F51
N1
L90
W2
F84
L180
E1
F54
E4
F65
R90
S5
E2
F78
E1
R90
S1
R90
W3
R180
F99
E5
R90
F44
L90
W3
N3
R180
N4
E1
S4
L180
S4
F59
E4
F1
N5
R180
S5
L180
F38
E4
N3
R180
N1
W4
R90
F30
L90
S3
R90
F71
L90
E5
N4
R90
F50
N2
L180
F3
W5
L90
W5
R90
W5
N5
R180
E2
F39
W5
R90
F72
N5
E3
F37
S5
W1
F11
L180
E3
F55
R90
R90
F85
W4
F53
S1
F33
W4
L90
W5
F64
E5
R90
N1
R90
F14
N4
L180
S3
E1
F21
S2
F26
S5
F6
S2
L90
F50
N2
L180
W4
N2
E2
R90
F35
N1
F69
W3
N2
W3
L90
E1
S3
E4
F58
N1
W5
S5
L90
W1
S3
W1
S4
E4
R90
N5
R180
F57
L90
F69
W4
F2
R90
F1
L90
W1
S2
F40
S1
L180
F31
R180
F24
R90
S3
L180
S1
W2
F64
S1
W1
R180
W5
S3
L90
S5
E5
R90
E1
F5
N5
F3
W3
F57
R180
E3
F94
W1
F54
W4
S2
W2
N1
L90
W5
S4
L180
L90
F100
E3
R90
N5
E1
R90
E5
L90
S5
L90
S1
R90
E4
S1
W4
F65
R90
N3
W5
F64
R90
E5
R180
W5
F28
S5
L180
S5
R90
E4
F82

2
2020/inputs/day13.txt Normal file
View file

@ -0,0 +1,2 @@
1008141
17,x,x,x,x,x,x,41,x,x,x,x,x,x,x,x,x,523,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,13,19,x,x,x,23,x,x,x,x,x,x,x,787,x,x,x,x,x,37,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,29

574
2020/inputs/day14.txt Normal file
View file

@ -0,0 +1,574 @@
mask = 0XX1XXX1101X101100101001010X1X110000
mem[41476] = 14032
mem[20538] = 23975525
mem[44025] = 8902467
mem[23416] = 13278193
mem[40963] = 2086
mem[17050] = 1569690
mem[13533] = 5470449
mask = 011000101X10X1XX00101100001XX1XX0111
mem[11041] = 688451207
mem[2356] = 131442632
mem[47817] = 59104
mask = 0001101XX011X0X10X10000X010XX111000X
mem[12356] = 716205
mem[16949] = 26265398
mem[38622] = 24845
mem[769] = 755
mem[56920] = 305369
mem[8196] = 61569921
mem[188] = 12675
mask = 11011X1010XX100100X0011000X1X0100100
mem[19009] = 356438366
mem[12368] = 25473412
mem[29459] = 799158
mem[13465] = 15500913
mem[8375] = 1762
mem[46272] = 94167
mask = X000111001110X100000X0011011XX100011
mem[15450] = 4114776
mem[34487] = 8375
mem[41817] = 18121
mem[6307] = 60515
mem[40743] = 517650454
mask = 10X01110111100XX00X010X111000101X1X0
mem[7812] = 16330414
mem[30335] = 466060785
mem[35944] = 847
mem[49580] = 1958
mem[59473] = 19887792
mem[28900] = 6542
mem[34820] = 98175933
mask = X010XX101101010X0000X0010001000001X0
mem[46282] = 22976226
mem[40137] = 45087136
mem[51356] = 3370437
mem[62716] = 40
mem[63300] = 7924
mem[10817] = 1508
mask = 0001101000X110010XX0X00001011X111101
mem[32646] = 162859393
mem[62320] = 2426317
mem[313] = 72238800
mem[49382] = 14540
mask = 0001101100110011X011000000X00111X1X1
mem[42477] = 1291
mem[34497] = 81992143
mem[21183] = 8224931
mem[45331] = 4850589
mem[25706] = 334861
mask = 000110111011100X00XX010X010011101110
mem[39907] = 4465
mem[21799] = 357055
mem[59734] = 17314354
mask = X00X101X101110X10010111XXXX0011100X0
mem[46366] = 190719510
mem[18743] = 16121
mem[19149] = 248746
mem[14315] = 7780
mask = XX000X100011001X0000101000X0X0XXX001
mem[2954] = 2613
mem[50772] = 992647
mem[18070] = 3128616
mask = 10XX1110000X0110010X10X100X1X111XX01
mem[51264] = 328844982
mem[43715] = 3650584
mask = X00X10111011100100101X1X00X0X0X11001
mem[42619] = 22042108
mem[64225] = 42365
mem[50397] = 22223
mem[22643] = 72733769
mask = 1X001110X0110110X000XX10111001XX0001
mem[19149] = 882536950
mem[42775] = 361
mem[46895] = 342576
mem[32700] = 5694
mem[11470] = 6481999
mask = 00011X1100110011X01X100X001011X1X110
mem[39264] = 16344930
mem[8161] = 382432628
mem[63411] = 1224
mem[7160] = 166212
mem[38527] = 1049945
mask = 0110100010110111000000111X0111X10X0X
mem[22956] = 935
mem[37256] = 4029977
mem[63527] = 614740755
mem[35499] = 4431
mem[42900] = 49979206
mem[51745] = 882
mask = 10XX1100X01100100100X0X1X1111X0000XX
mem[61801] = 3618
mem[28559] = 421756
mask = X01011X0111X0000000X11X11101X011001X
mem[3161] = 14874
mem[29508] = 2092706
mem[40251] = 30980889
mem[4788] = 394
mask = 1XX0100110011101110000X01001110XXX01
mem[2387] = 118365350
mem[11825] = 66225
mem[16756] = 91924010
mask = 1000100X1XX11X01XX00XX1010X111011011
mem[20652] = 15633
mem[58061] = 7651801
mem[33499] = 103658
mask = 00000X0X10X1101101100110011X00010001
mem[25435] = 148
mem[24037] = 31691643
mem[44316] = 711
mask = 10001110XX010X1X010111010X010XX00000
mem[63842] = 29627531
mem[36624] = 1296
mem[56181] = 30061
mem[47386] = 40106
mem[58312] = 1375
mask = 0001101010011XXXX0100011010000101000
mem[42115] = 7172450
mem[49180] = 987035517
mem[13301] = 28324706
mem[33025] = 394238236
mask = 1110101X01X1000000000111101X0011X001
mem[24725] = 4310928
mem[2620] = 41285327
mem[47820] = 3129173
mem[1293] = 5127449
mem[11745] = 28590
mem[36381] = 4204
mem[51744] = 51694
mask = 100111X0000100100X0010X1X11010100011
mem[25359] = 884
mem[19779] = 1731
mem[11585] = 4188926
mem[30395] = 236676337
mask = 00X110111X0110X1000X101001X00001X100
mem[27733] = 313
mem[65360] = 86981
mem[46366] = 767235
mem[29755] = 83833
mem[32124] = 232097371
mask = 001110111X01101100XXX10110X100X1010X
mem[53702] = 199650
mem[44608] = 6590868
mem[34829] = 5394
mask = X010111011X101000X0X100110001X001100
mem[17120] = 23453
mem[38913] = 185044
mem[18780] = 4903
mem[175] = 21851
mem[39035] = 2030
mem[22611] = 123784
mask = 11101110011100100X00X1100XX000110010
mem[64049] = 5356981
mem[63577] = 117267698
mask = 1X101X10011100X00000X1X11X000010X011
mem[13208] = 1183
mem[23377] = 24464667
mem[57628] = 138647
mem[18400] = 1395575
mem[29779] = 494833
mem[37426] = 3361062
mem[47386] = 607532373
mask = 101X11100X00011001000XX0100000XX1X11
mem[61236] = 119878442
mem[37985] = 34919
mem[45599] = 412119
mem[62029] = 56098
mem[32672] = 106027256
mem[16953] = 19574328
mem[28683] = 497476095
mask = 10X01110XX110XXX000010011X00XX101011
mem[36926] = 999
mem[26268] = 12770
mem[13208] = 4100495
mem[36974] = 56256136
mem[59728] = 12633
mask = 10001XX0101110010000010000101101X11X
mem[21209] = 1165019
mem[52913] = 4010374
mem[39089] = 5103489
mem[59734] = 115220582
mask = 010X1X01101010110010001XX10X01100100
mem[46092] = 219343233
mem[37520] = 4795
mask = 10001X1X0011010X0X00X011101101111001
mem[43095] = 22274
mem[63382] = 14322315
mem[29851] = 198203
mem[38913] = 365650159
mem[23153] = 4470189
mem[43043] = 387267864
mem[12301] = 3613737
mask = 000110X1001110010X101X01111110X0X10X
mem[53114] = 17151
mem[32537] = 857661
mem[49382] = 59317139
mem[24893] = 3884
mem[29265] = 10769292
mem[49438] = 103605698
mem[57488] = 949859
mask = 10XXX11X00110X100000X000010011X011X0
mem[58061] = 319898
mem[57563] = 43183
mem[5257] = 949147935
mem[57481] = 15066
mem[14197] = 5250925
mem[39109] = 1471
mask = 00011X101001X0X100011011X11110XX1000
mem[59252] = 46539
mem[52900] = 4898
mem[61334] = 40829484
mem[24965] = 8050
mem[36876] = 441653
mask = X00110X11011100000001010XX010X100000
mem[45393] = 1597628
mem[13748] = 66625913
mem[40882] = 2875
mem[960] = 105796443
mem[52406] = 2823788
mem[3856] = 11564504
mask = 10X1101010X1X00100010X0X010101110110
mem[37859] = 23030
mem[28890] = 5943
mask = 11X0101001X10X0X00001X1010X10010X0XX
mem[53315] = 133575
mem[23196] = 238
mem[55322] = 81
mem[55314] = 5922
mask = 1X001X1X00110111X000111X10101X001XX0
mem[58877] = 81175841
mem[51461] = 434887
mem[29757] = 325911
mask = X0X0X1X0X01100000000X00110X00101XX11
mem[26312] = 220610
mem[36669] = 25461656
mem[26785] = 606
mem[17752] = 115
mem[6189] = 6698
mem[7480] = 1190
mem[15971] = 96609
mask = X110X0101011011100001X100X0010X00X01
mem[43175] = 6644146
mem[10749] = 231447710
mem[19322] = 58074323
mem[15573] = 8577
mem[62029] = 61918
mem[31715] = 18297
mem[41994] = 44438
mask = X001X01110X1100X00X000X00X00X01X0000
mem[58513] = 212212
mem[35792] = 15346
mem[64206] = 4719831
mem[832] = 543960291
mem[18780] = 62502300
mask = XX1111100X0101100X0X0X0X000001X10111
mem[21109] = 474293
mem[28900] = 2806
mask = 10XX111000X10X100X00100X1010010X0011
mem[14165] = 15464
mem[53233] = 152163192
mem[44025] = 121941797
mem[53450] = 433714
mem[4913] = 7421311
mem[188] = 60127159
mask = X001101000011X01001X0X110111100X0X01
mem[60747] = 192522
mem[54204] = 28849
mem[36729] = 22698774
mem[52115] = 110985
mem[57563] = 682
mask = 1001XXX00011001X010X0010110XXX0X1011
mem[32646] = 1756
mem[15029] = 776777504
mem[3161] = 5837481
mask = X00XX0X0101X101101X00000010XX0X10001
mem[57391] = 1622433
mem[12908] = 1770908
mem[43252] = 2640
mem[60063] = 14000
mem[26203] = 22549887
mem[827] = 14605957
mask = 10X11X110000011X00X00X1000111X001000
mem[10734] = 338
mem[58310] = 226465
mem[52913] = 454
mem[37616] = 249660
mem[17625] = 266511
mem[57381] = 361428
mask = 100110X010X11X0100000001X000010X0101
mem[49180] = 626303
mem[8469] = 116
mask = 101X1110XX0X0010010000X1010010110X1X
mem[9552] = 623773022
mem[30060] = 14419380
mem[16756] = 21987
mem[14129] = 466
mem[13465] = 30465
mem[63276] = 128236
mask = 1001110100XX11X000001X1X0101X0000010
mem[27588] = 8166
mem[1516] = 11756
mem[53138] = 1983
mem[62272] = 468137433
mem[30834] = 30766905
mem[47453] = 39455
mask = 0001101X100110010001010X11X1XX0011X0
mem[24972] = 1715002
mem[43864] = 90876
mem[61372] = 192618
mem[10734] = 837
mask = 1010X1100111X0000000111100011110X0X0
mem[47239] = 74086526
mem[49939] = 49746
mem[10895] = 23075
mem[65011] = 202673707
mask = X0X1101XX0111001001X10010111001X1100
mem[20214] = 61662
mem[37436] = 345208
mem[1630] = 388457
mem[23511] = 61766884
mem[20859] = 64848629
mask = 1000X11X001101X10X00110010X1110010X0
mem[25419] = 28604
mem[38913] = 32927
mem[17205] = 472
mem[56058] = 594
mask = 00X11011X01110010XX0000X000X0X1X1X01
mem[26203] = 26989
mem[45551] = 732
mem[58839] = 55235
mem[1129] = 67488208
mask = 100111X1000XX11X000011000010XX0XX00X
mem[14155] = 1172166
mem[19010] = 530312985
mem[26312] = 25222184
mem[4356] = 113886497
mem[62320] = 255163
mem[13910] = 8896163
mask = 100X1X101011X00100000X01000X01000101
mem[64201] = 3294
mem[4767] = 1238
mem[26268] = 92962256
mem[23511] = 859
mem[51259] = 2059
mem[61026] = 4725
mem[36876] = 877705
mask = XX011XX010111011001X1001000X0111X0XX
mem[65483] = 598563
mem[57113] = 294
mem[24944] = 54471
mem[6485] = 8443403
mask = 1X001X11001101X10X00X1001111011100X1
mem[62670] = 48958
mem[62173] = 126785687
mem[63951] = 1275323
mem[64656] = 401353954
mem[53988] = 713
mem[55322] = 1690
mask = 0100X11000110X1X00001X10010XX1XX0100
mem[19129] = 108065922
mem[59734] = 62554
mem[57425] = 70969544
mask = 100X111X00X1XX1000X000100100010010XX
mem[59081] = 248635
mem[33589] = 89551144
mem[26483] = 3592
mem[58837] = 14938
mask = XX01101010011001000XX00100X10XX00101
mem[26268] = 1919550
mem[42543] = 32407420
mem[14012] = 3176
mem[6070] = 2625503
mem[1970] = 41445788
mem[12368] = 507057537
mask = 0X0X111100111101001X1X0X11001100100X
mem[10671] = 13772
mem[44082] = 875
mem[5761] = 81
mem[9631] = 303660028
mem[16661] = 406188
mem[27807] = 12578
mem[19729] = 938033
mask = 101X111X0X0X0110010000X11X00001X11X0
mem[33143] = 2074831
mem[20348] = 172308
mem[29757] = 40606526
mem[37173] = 2311463
mem[59173] = 67005
mem[15642] = 687972
mask = 1001111100010X10000001X0101000X0X001
mem[32455] = 11789
mem[32961] = 2914
mem[51811] = 1940
mask = 0001101010X1100100X000010XXX01110X01
mem[59734] = 7041
mem[2047] = 728301208
mem[14012] = 72433008
mem[12356] = 126031399
mem[59410] = 42309395
mem[32323] = 3938
mask = 1011111000X10110X00000X1010001X10000
mem[47952] = 14328
mem[7064] = 7527457
mem[3914] = 2201809
mem[15520] = 16301732
mask = 10XX11100X11001001000000XX1111110001
mem[56178] = 339
mem[15606] = 3802900
mem[19168] = 976891
mem[65483] = 892268
mask = 000X101XX011000100100011X101101X0X01
mem[43261] = 3271356
mem[5201] = 15846
mem[64201] = 38576337
mask = XX10XXX0101101110000X01X10001111100X
mem[8469] = 9742701
mem[6060] = 63043
mem[41875] = 2040147
mask = X0X11110X0010X100X0X0010X000110100XX
mem[24811] = 146228691
mem[5282] = 94502573
mem[51356] = 27360
mask = 0011X0111101101X0X000X00100100X00000
mem[20214] = 79404
mem[53053] = 494301615
mem[32749] = 651
mem[6205] = 195615011
mem[50888] = 18
mem[46557] = 701
mask = 1001111X000X01100000X1001010100XX0X1
mem[31943] = 98133204
mem[15986] = 50658
mem[51787] = 541
mem[65378] = 224955462
mask = 10111X1X00X10110010X0000000000011011
mem[25419] = 738
mem[47453] = 2686
mem[24643] = 7536
mask = 0001X01010111X1X0100000011000011010X
mem[35756] = 64
mem[5149] = 60645652
mem[41871] = 1890098
mem[3022] = 252603
mem[52062] = 5875
mem[58943] = 797237350
mask = X00110101011XX010000110100010X000000
mem[37436] = 6548079
mem[35764] = 3432001
mem[36941] = 65975
mask = 000010X100X10001X0100X01010000X10101
mem[34696] = 2248339
mem[14083] = 15975033
mem[6577] = 901
mem[26908] = 255502
mem[12789] = 30697828
mask = 10X010101011000100X0X11001000110010X
mem[44320] = 1393
mem[29757] = 342285
mem[36642] = 6661
mem[7779] = 125978
mem[52090] = 28218650
mem[36766] = 1451129
mem[32821] = 38672
mask = X001X0101011101X0110000X0X00X111X001
mem[688] = 1445
mem[29459] = 3116969
mem[28168] = 2056
mem[20652] = 329409
mem[62382] = 1589
mask = 100111101011X0X1000000X1X01100000011
mem[44082] = 522049
mem[35499] = 306435
mem[2296] = 1624116
mem[477] = 199553
mask = 000X10010X111X010110X0X111X011100100
mem[51461] = 304494089
mem[59109] = 7054
mem[43106] = 841367
mem[23495] = 35948
mem[47405] = 4105986
mask = 1000X110001100100000101X0010XXXX1011
mem[34346] = 63860
mem[15450] = 21287640
mem[39226] = 10848394
mem[65171] = 342808754
mask = 10X1111000X10X100100X01X000001X10X11
mem[20605] = 25239
mem[15530] = 15210
mem[53450] = 631977
mem[49382] = 337741132
mem[44802] = 36180
mem[13730] = 386297
mem[44304] = 410
mask = 110XXX101001100100001XX100010XX11101
mem[6307] = 360684
mem[34209] = 30559
mask = X0001X100X110010000000X0100X01X0X011
mem[31037] = 16148100
mem[53546] = 9890720
mem[39022] = 17
mem[36766] = 29407814
mem[12512] = 60996381
mask = 100011XX11110011X000XX111X110X1X1X11
mem[7064] = 21863392
mem[42144] = 115358
mem[24037] = 24921044
mem[38714] = 260084
mem[63382] = 7611
mem[5421] = 138958764
mem[45370] = 9438
mask = 0011100110111X110010X001010X1001X010
mem[3501] = 16752744
mem[50874] = 1870557
mem[21866] = 1042519950
mem[46366] = 29539240
mem[1293] = 4121521
mem[29265] = 2517
mask = 01X00010101X011100X00X111XXX11000111
mem[57313] = 1088911
mem[30558] = 275492
mem[45058] = 7674206
mem[57037] = 1601
mem[55547] = 33529493
mem[48001] = 2606536
mask = 110X1010101X10010010X1110110000001XX
mem[43175] = 7896118
mem[18400] = 24947055
mem[33760] = 535147272
mask = 0000100100X110X10110001X1100X1100110
mem[52455] = 4031
mem[2080] = 597
mem[13626] = 5341
mem[21873] = 2003200
mem[1186] = 6032486
mem[51356] = 62404345
mem[45393] = 483
mask = X001111100X111X100XX10X0010011X00000
mem[61372] = 497780
mem[19961] = 4926248
mem[4632] = 210849418
mem[18128] = 59536
mask = 0X10X010101X0101001010101011010001X1
mem[42008] = 1078148
mem[59430] = 3978
mem[6072] = 430913
mem[48979] = 122586
mem[6310] = 76628023
mem[1521] = 10557
mask = 1X00X1100011010101X011X1100111100000
mem[175] = 9206
mem[64788] = 330
mem[22968] = 887
mask = 1X101010X01101110000001110X11XXX0100
mem[11815] = 58824493
mem[2296] = 253702
mem[50586] = 4894669
mem[54541] = 348778635
mem[3242] = 842
mask = 01111101X011101XX01000110XX01X10010X
mem[28575] = 349000485
mem[21743] = 503483
mem[3887] = 225375382
mem[45872] = 5853
mem[45920] = 814440
mem[39231] = 193428

1
2020/inputs/day15.txt Normal file
View file

@ -0,0 +1 @@
5,2,8,16,18,0,1

264
2020/inputs/day16.txt Normal file
View file

@ -0,0 +1,264 @@
departure location: 44-709 or 728-964
departure station: 42-259 or 269-974
departure platform: 39-690 or 701-954
departure track: 49-909 or 924-965
departure date: 48-759 or 779-957
departure time: 38-115 or 121-965
arrival location: 32-808 or 818-949
arrival station: 45-418 or 439-949
arrival platform: 35-877 or 894-962
arrival track: 26-866 or 872-958
class: 32-727 or 736-969
duration: 35-446 or 460-968
price: 26-545 or 571-961
route: 35-207 or 223-960
row: 43-156 or 165-955
seat: 26-172 or 181-966
train: 49-582 or 606-952
type: 36-279 or 303-968
wagon: 26-657 or 672-959
zone: 36-621 or 637-963
your ticket:
83,127,131,137,113,73,139,101,67,53,107,103,59,149,109,61,79,71,97,89
nearby tickets:
539,619,928,309,835,99,521,478,54,340,849,859,376,357,524,841,221,935,806,147
231,827,907,526,238,542,181,853,303,143,116,701,206,140,927,203,443,753,151,258
445,679,816,617,82,102,197,100,239,490,488,78,707,349,689,335,847,183,144,314
476,833,232,489,937,256,87,409,223,364,978,939,398,331,153,945,513,237,934,272
492,927,578,788,808,529,739,20,201,688,405,877,228,168,361,521,400,398,618,520
332,694,481,571,523,516,395,122,844,358,232,132,315,486,899,154,269,201,831,50
907,706,927,126,133,97,217,334,745,751,580,862,526,845,680,125,96,445,863,322
498,753,844,670,150,657,853,150,377,487,152,369,500,241,360,204,142,236,948,91
578,675,491,230,332,464,258,858,508,330,492,780,494,234,839,645,160,795,896,687
814,875,617,185,490,490,501,940,224,751,609,844,442,525,640,609,336,251,532,685
684,196,757,841,580,576,18,319,150,249,676,337,155,115,652,638,475,398,789,379
445,490,199,140,88,694,184,247,307,386,198,85,905,860,484,244,532,224,681,251
172,936,701,440,779,941,639,351,238,70,787,91,259,340,58,541,815,399,238,202
715,369,504,226,138,866,783,231,580,147,82,335,533,144,530,462,836,751,473,801
932,459,242,947,653,150,618,683,198,608,88,342,948,497,675,53,681,544,315,615
422,244,791,929,799,128,374,473,148,931,381,822,318,853,147,367,531,412,242,470
464,899,490,846,381,326,271,948,396,318,653,981,310,822,502,895,78,935,78,461
231,339,79,530,680,461,863,521,839,517,379,108,395,613,644,751,823,212,206,151
526,507,403,354,931,859,787,728,247,781,643,203,847,326,506,79,65,332,91,783
571,182,753,841,338,746,254,307,896,648,726,89,314,706,943,464,444,481,465,928
184,513,335,941,303,198,537,571,409,337,497,621,350,617,98,897,850,679,794,260
235,255,393,310,188,65,943,543,94,374,500,482,122,992,656,523,704,742,331,792
315,152,320,983,493,166,754,376,619,480,149,929,330,80,529,131,150,57,251,842
54,77,540,141,61,205,273,214,745,145,166,131,93,525,500,521,223,52,237,404
300,616,784,250,852,354,327,944,675,859,673,941,789,829,234,104,842,85,742,98
110,244,95,93,529,162,82,309,142,680,65,410,531,758,511,790,333,352,926,397
496,518,828,896,52,828,805,62,470,121,853,831,346,654,684,196,535,15,251,381
231,444,530,616,795,620,78,460,947,748,757,78,706,336,82,317,186,256,216,196
520,838,365,445,928,855,418,943,195,689,176,638,151,59,82,495,58,681,737,545
172,755,782,71,514,336,383,470,168,70,168,199,307,102,793,250,739,174,368,279
897,734,446,184,254,785,499,949,903,405,401,679,356,753,354,351,842,443,207,203
60,577,746,229,105,475,640,877,848,477,545,525,793,752,313,315,318,983,537,249
474,833,611,169,61,800,759,228,321,833,303,673,513,862,76,122,803,520,67,667
504,919,413,521,514,251,785,170,656,759,510,537,579,462,794,756,687,479,864,507
949,774,866,805,357,442,183,874,934,195,511,742,756,683,396,407,637,348,866,344
687,305,781,780,821,586,945,94,87,230,353,376,849,379,510,368,709,489,113,191
275,356,277,655,529,493,541,141,132,804,620,171,382,443,483,978,737,536,532,904
357,369,142,383,802,782,722,391,905,684,226,413,379,74,792,618,351,939,580,578
368,394,514,461,445,933,677,324,318,250,863,266,855,703,781,142,460,74,753,947
935,852,127,241,309,825,481,206,642,81,375,862,330,21,496,60,677,238,532,138
258,680,336,136,640,193,372,100,227,856,495,103,92,341,356,703,568,147,311,514
412,673,398,244,397,313,378,780,107,905,318,208,172,374,464,690,379,686,538,638
660,321,894,681,515,539,486,403,469,91,675,186,386,839,197,639,411,873,69,837
845,413,996,87,314,674,362,258,783,412,341,529,519,654,526,757,899,617,909,492
127,749,682,785,735,418,112,834,934,381,613,107,748,474,84,72,514,355,942,701
541,100,75,155,645,410,612,519,976,656,854,140,61,140,401,827,466,798,385,192
332,126,836,373,545,313,379,69,345,751,348,750,746,643,763,519,943,508,679,274
642,521,55,479,54,615,323,247,736,80,979,489,97,238,759,579,363,826,91,929
227,497,467,249,808,441,906,361,815,523,206,352,383,521,798,84,360,74,680,100
96,486,465,382,796,198,500,717,462,617,245,247,649,941,946,750,408,845,637,311
379,168,181,100,507,798,928,784,174,128,830,480,113,311,379,474,361,613,909,325
130,144,649,305,273,637,112,353,528,786,944,866,931,269,381,271,153,902,552,129
520,908,58,249,842,831,756,253,21,238,645,607,902,200,439,100,112,324,374,672
614,173,149,316,132,309,484,270,249,104,542,524,350,357,244,331,507,405,793,345
943,140,784,620,818,558,780,53,894,673,500,370,109,539,372,376,505,785,909,782
900,187,113,464,991,534,368,181,463,841,747,362,945,640,153,227,241,944,833,743
863,838,340,366,230,500,643,103,772,127,88,754,611,496,791,444,440,903,75,467
649,828,617,466,188,502,315,352,866,758,919,247,835,574,750,409,468,247,359,202
371,846,121,755,474,472,176,325,153,97,949,201,65,171,908,500,277,937,90,388
929,392,539,469,843,440,947,893,347,312,128,63,754,685,947,227,679,470,945,303
731,77,872,620,88,616,104,681,204,312,115,688,386,195,676,506,87,707,519,149
278,365,780,785,874,251,114,321,499,898,729,101,637,684,167,797,826,930,615,51
319,924,819,856,202,71,102,55,838,81,231,150,656,840,354,679,744,475,344,814
926,657,378,507,927,389,680,238,185,319,475,897,132,936,685,540,16,331,508,613
681,897,228,303,835,356,523,403,314,709,382,272,370,109,470,479,923,443,896,782
677,239,501,233,180,928,351,101,373,151,321,347,445,198,112,679,828,751,680,96
840,497,237,318,490,848,248,351,413,850,945,662,460,945,439,929,126,199,330,320
647,489,508,105,648,253,270,807,201,110,537,12,336,369,581,609,190,535,676,489
534,668,686,442,938,394,798,755,190,412,505,375,101,752,490,405,875,573,417,677
231,461,260,138,611,824,333,331,406,351,229,97,756,926,678,849,488,758,230,121
82,347,442,172,652,898,687,491,392,539,538,389,257,505,334,325,840,89,918,138
517,352,192,701,848,617,804,704,344,785,58,839,351,140,394,242,144,342,179,142
166,140,226,442,183,499,166,272,839,795,908,165,901,703,262,91,358,127,872,834
788,157,156,675,876,376,473,404,709,752,373,780,324,146,169,819,807,337,514,204
190,511,822,204,495,948,123,117,932,509,148,706,66,110,861,674,637,545,486,855
119,227,439,442,808,378,929,949,313,142,359,789,503,442,908,310,315,474,395,935
367,210,531,480,142,245,833,172,320,137,468,800,827,930,199,318,904,642,516,865
538,198,113,62,362,528,787,668,936,657,184,345,895,236,385,829,522,253,758,352
315,708,796,639,162,690,688,750,366,171,509,476,708,782,637,368,934,125,73,248
617,156,576,737,521,755,932,266,939,203,690,578,853,98,414,50,759,440,819,331
593,232,442,468,578,949,383,129,800,152,77,386,935,819,925,470,305,396,308,874
102,361,319,187,226,942,493,272,247,68,475,364,398,141,821,900,56,480,814,307
650,796,98,92,687,646,128,140,168,813,203,825,851,80,136,473,581,150,865,806
263,520,275,378,406,113,59,194,759,128,522,183,498,167,185,702,652,606,133,578
707,331,737,748,820,759,257,742,856,500,318,814,507,898,244,153,470,319,532,110
488,382,380,145,126,807,359,343,606,82,750,194,607,981,409,151,860,862,339,900
873,620,230,924,345,750,62,387,802,113,97,930,63,416,750,76,657,507,260,325
111,749,114,785,477,572,248,687,500,64,925,931,132,783,795,491,998,248,754,56
115,83,245,512,638,327,108,451,826,757,675,521,342,350,102,462,348,841,874,798
941,822,582,948,500,645,393,757,214,362,103,132,181,515,227,828,827,406,375,232
647,362,660,738,497,366,803,505,335,105,75,153,313,759,501,241,62,149,748,926
123,146,613,390,742,638,907,515,334,686,411,854,933,469,174,126,169,395,842,351
830,315,59,573,843,656,523,533,528,403,259,141,523,333,876,355,880,680,134,942
234,22,808,145,529,374,142,572,344,409,607,930,858,825,804,223,534,505,466,539
684,688,940,524,357,684,844,673,381,794,895,516,308,582,380,487,731,241,797,685
196,112,331,528,533,396,489,579,266,496,77,440,650,165,399,469,475,507,364,56
354,139,945,330,742,894,782,989,87,231,54,358,51,681,350,652,936,745,134,936
804,439,935,234,944,849,186,173,254,690,326,102,149,926,115,792,829,167,508,746
388,684,243,814,80,350,637,335,442,146,474,825,477,686,578,331,269,378,472,828
826,863,520,70,279,522,801,579,500,237,696,534,242,259,932,540,182,544,72,701
886,227,369,89,612,147,488,152,511,646,104,853,352,94,741,223,858,150,383,680
792,51,440,64,838,116,195,674,70,902,829,779,682,404,808,860,619,466,807,836
652,499,177,830,104,674,377,128,787,123,153,782,230,237,526,478,273,523,92,85
418,364,405,327,502,538,539,278,372,508,245,306,325,488,548,674,97,135,944,906
409,996,83,929,461,485,829,384,171,844,933,755,780,860,491,331,473,541,874,142
390,92,141,310,747,142,653,498,203,829,946,393,142,251,360,22,804,385,240,167
874,255,324,340,562,529,366,190,100,480,109,171,947,491,188,154,680,404,275,486
945,947,61,110,500,920,875,248,352,56,475,949,876,686,745,443,171,821,348,645
705,498,139,798,369,418,666,124,227,578,530,376,607,122,613,87,101,50,930,129
475,235,549,581,610,820,206,96,901,802,128,818,413,542,151,362,401,474,76,331
506,608,462,708,980,838,582,803,56,503,83,258,384,925,171,874,152,823,170,89
517,606,475,644,105,195,846,445,323,619,498,183,310,79,493,155,90,533,259,218
63,619,373,850,902,90,153,542,269,330,94,357,797,203,909,201,776,615,606,340
501,342,74,394,94,212,401,475,877,72,519,128,148,640,859,68,525,54,358,904
875,821,377,781,823,781,398,619,945,130,930,750,802,752,704,439,1,645,337,309
533,830,474,829,98,613,896,744,512,126,248,511,113,250,66,515,585,128,877,259
201,858,793,791,828,471,859,581,899,76,836,738,259,155,816,360,474,414,277,835
5,324,784,71,677,617,745,808,184,56,478,682,578,310,390,330,656,872,305,684
508,686,519,385,245,759,766,136,898,128,332,205,276,58,60,252,906,167,737,169
799,650,674,67,181,243,155,254,785,208,934,197,835,350,76,865,516,248,837,503
361,90,874,251,310,733,155,60,69,276,325,370,330,149,62,397,519,704,823,345
186,256,497,252,75,880,516,278,172,381,61,357,358,115,858,202,512,375,836,247
465,324,828,443,518,708,781,895,122,334,161,759,517,356,616,399,65,796,127,236
792,170,109,461,141,928,758,201,101,114,739,153,108,675,938,512,177,330,580,943
92,407,385,278,92,723,333,757,936,373,90,788,388,505,738,609,826,321,153,858
350,780,492,311,414,306,702,252,257,782,837,823,137,166,988,648,186,781,613,789
83,341,408,537,607,483,948,122,349,757,144,81,945,757,758,474,370,651,947,567
110,689,77,706,383,353,395,187,399,402,186,223,816,373,112,530,908,327,531,851
492,137,785,209,610,392,791,411,523,198,377,386,225,236,344,837,491,781,393,579
233,172,271,138,875,789,512,81,63,406,479,232,122,704,895,946,448,136,684,949
351,238,909,505,96,523,192,444,491,259,313,345,100,530,116,257,532,646,103,675
642,149,898,346,487,470,896,358,493,674,275,461,503,572,443,787,839,905,499,117
306,947,308,523,334,467,127,782,389,835,448,862,895,482,614,278,252,402,641,336
232,368,805,944,138,86,143,499,644,60,320,942,89,533,489,71,782,927,327,17
141,672,108,175,844,378,843,647,223,372,140,109,705,785,407,843,795,400,182,310
253,684,377,93,409,606,688,23,476,51,709,828,860,736,156,75,483,169,441,92
519,312,95,899,115,949,818,308,119,611,206,372,643,524,63,757,89,538,783,801
577,872,902,510,51,239,278,541,576,235,780,475,758,321,350,575,117,324,83,410
932,796,508,832,894,392,314,90,58,13,478,440,942,818,145,271,736,475,181,937
113,737,758,182,145,454,332,66,52,488,545,129,500,126,509,703,306,137,534,618
928,900,799,575,417,254,903,373,803,803,263,313,365,100,894,250,842,799,929,128
69,705,638,72,321,814,610,397,926,902,67,499,122,508,74,744,825,746,183,410
926,316,324,483,348,356,544,945,865,538,380,508,76,758,506,380,326,640,118,824
832,340,786,225,704,206,508,535,843,347,326,120,620,473,650,247,100,238,309,337
677,581,526,334,677,705,266,60,367,485,646,88,252,104,752,509,908,486,684,377
55,861,490,521,265,182,339,876,575,242,782,153,673,495,256,534,360,346,233,361
446,126,228,876,991,351,271,499,239,831,618,708,935,256,704,904,129,131,227,850
219,642,394,413,129,276,843,701,619,349,242,247,608,320,824,864,894,536,701,255
544,642,256,128,379,279,307,523,256,75,410,536,357,785,806,790,663,826,642,392
311,337,896,352,315,538,786,271,370,54,129,89,946,837,71,519,715,818,76,270
871,638,385,795,238,63,645,226,388,337,128,270,679,839,846,516,314,607,616,475
94,794,188,392,490,73,144,908,504,139,182,573,844,391,947,333,528,549,782,384
758,517,808,637,347,836,105,610,643,852,55,719,581,646,74,362,396,410,141,337
949,749,745,848,187,51,350,497,165,543,929,321,245,945,272,121,396,810,198,108
407,54,341,519,926,801,73,397,606,524,385,470,413,346,670,80,279,360,901,392
794,139,837,745,834,380,701,312,463,705,151,313,682,168,866,1,703,500,476,202
544,892,621,354,924,134,736,793,338,872,346,80,823,675,121,97,801,464,508,58
370,538,474,641,171,189,342,381,94,145,999,384,383,400,645,866,513,140,618,97
230,621,616,240,675,414,933,22,362,828,618,926,486,393,895,88,110,230,528,940
483,852,446,339,512,684,582,200,896,862,979,353,319,610,145,374,581,446,750,252
157,648,683,439,460,224,357,135,279,69,899,154,75,515,321,349,115,657,156,189
414,794,652,930,397,440,655,306,484,512,342,861,344,902,100,860,513,976,66,388
405,932,488,444,745,870,528,446,657,188,863,689,475,56,708,476,325,757,336,638
456,783,396,84,237,107,443,645,106,652,304,337,110,477,134,899,145,410,709,544
334,865,677,708,642,660,343,83,945,855,899,529,704,877,675,199,639,342,337,848
490,855,851,784,119,652,489,416,349,538,705,439,736,537,751,312,152,273,307,95
696,125,500,754,90,516,681,533,902,226,97,377,57,322,312,191,384,794,109,196
195,50,197,253,339,992,502,168,402,107,757,137,247,62,275,855,245,231,645,86
638,316,191,524,699,821,898,205,102,98,375,279,376,97,82,582,233,386,347,242
177,369,248,754,803,270,927,382,305,532,854,854,614,355,746,356,484,253,388,406
844,896,376,832,385,757,755,930,376,509,353,569,255,442,166,312,498,894,394,738
362,591,803,532,678,527,517,852,345,440,832,948,403,673,96,228,861,909,840,412
484,817,196,102,476,352,232,742,359,367,609,82,207,201,520,521,233,940,384,480
906,329,207,67,510,71,98,920,857,384,77,247,571,388,121,387,147,241,894,478
390,530,97,924,187,681,120,69,151,226,239,750,945,399,389,613,334,897,463,223
345,276,484,617,229,102,580,989,155,683,639,485,545,89,348,800,940,257,137,98
68,711,59,69,646,496,410,352,94,519,947,896,465,67,76,830,481,411,95,255
704,535,780,309,314,64,63,904,509,93,408,225,189,372,503,139,146,512,4,621
277,406,273,709,461,324,923,377,645,747,56,327,820,576,60,502,487,191,754,876
364,325,755,509,677,385,235,349,945,480,641,858,142,905,933,214,306,806,97,827
4,187,466,402,929,944,125,256,705,199,130,849,741,136,234,944,650,274,682,781
318,340,499,237,348,396,682,62,131,574,708,380,278,866,927,85,267,877,830,371
776,196,576,749,353,362,934,315,476,538,272,510,396,575,93,574,498,185,741,256
50,909,410,647,920,305,655,184,233,361,391,908,258,779,530,708,655,793,92,651
677,226,140,709,312,201,443,91,657,899,111,502,464,62,365,374,195,330,670,833
555,346,608,401,256,128,318,418,353,56,187,743,231,87,133,909,113,363,319,939
204,313,485,190,620,390,820,369,737,323,197,121,488,460,655,812,529,617,185,902
749,678,375,242,514,752,325,709,736,532,143,776,269,656,510,486,865,484,305,905
942,247,779,305,361,707,817,270,323,833,440,105,242,687,201,875,334,411,132,863
484,653,224,511,322,387,229,309,470,64,186,362,202,482,277,660,645,342,320,501
608,465,234,143,369,740,363,164,928,805,189,315,154,828,147,346,690,846,621,524
825,78,355,520,840,768,58,410,304,581,464,279,572,145,521,534,908,872,755,148
71,901,640,395,718,200,860,854,834,908,371,832,277,904,441,378,780,756,927,130
489,79,794,258,54,790,792,82,246,80,513,821,97,350,846,144,572,277,695,190
139,571,742,381,506,515,679,649,822,853,532,908,23,516,132,474,132,73,857,251
61,805,355,524,851,894,691,81,905,924,898,473,652,749,460,948,512,185,414,519
505,752,239,508,817,188,345,906,198,525,340,355,688,516,247,517,476,847,542,169
649,646,898,462,539,472,396,310,148,832,303,187,362,848,402,646,853,661,477,91
612,383,369,231,229,939,351,106,820,313,401,175,654,644,342,334,235,367,675,853
794,120,754,469,399,383,613,579,360,87,418,414,390,828,864,606,345,860,309,200
746,539,316,14,800,274,641,507,335,410,745,872,947,131,227,656,900,535,802,460
945,836,325,610,376,939,616,235,311,408,322,102,743,442,697,141,825,321,534,861
252,203,78,611,824,653,348,700,946,508,864,338,98,78,611,319,439,344,791,232
508,943,13,933,83,193,149,647,786,385,739,477,707,199,486,746,169,155,466,315
472,782,945,275,53,618,340,377,390,545,849,753,375,355,468,704,856,480,157,305
338,507,476,303,271,541,135,528,790,53,565,505,249,387,678,747,860,509,466,844
140,246,64,309,196,94,834,193,136,97,471,827,251,170,713,757,738,344,460,388
847,290,440,313,534,754,481,822,754,740,316,469,538,790,793,864,325,196,575,796
645,672,342,193,646,305,781,189,139,979,316,900,749,324,478,525,753,934,256,73
613,324,781,581,56,335,524,812,74,142,229,748,873,378,895,529,316,755,147,342
95,106,310,303,345,490,736,145,544,614,127,193,93,333,15,56,463,532,861,947
366,460,388,806,540,444,96,58,442,577,620,741,685,836,209,785,53,933,787,576
522,322,739,572,618,938,686,444,756,254,482,196,333,360,799,101,639,572,768,356
127,856,860,943,658,87,115,108,862,619,675,384,581,70,526,789,403,369,938,139
475,256,471,91,840,71,183,938,316,255,582,522,840,501,145,677,700,839,866,655
744,262,389,538,839,844,194,907,228,181,478,941,418,948,329,418,329,379,643,127
237,85,72,150,574,619,678,82,658,71,411,674,273,527,856,791,834,327,87,756
390,500,270,354,74,701,567,497,611,779,146,741,328,383,877,309,90,749,279,237
379,155,70,508,530,171,906,257,376,535,778,152,439,129,235,80,803,859,743,522
527,690,385,491,249,780,618,57,798,365,409,223,924,537,903,498,874,137,720,580
536,875,477,246,114,167,55,803,609,525,670,834,244,67,54,704,753,757,127,829
653,942,643,938,214,751,80,749,749,513,645,838,866,538,145,60,275,674,673,346
914,113,304,639,310,783,851,825,685,309,69,351,875,155,152,238,353,575,78,638
822,334,935,793,146,492,861,767,529,753,277,758,843,321,468,491,340,679,83,226
444,870,341,653,852,89,651,941,309,258,645,841,606,364,649,873,138,529,259,800
898,683,464,783,897,607,99,183,483,395,219,932,706,847,737,128,754,409,259,409
608,564,144,86,523,941,226,519,97,925,333,67,383,501,226,581,106,805,481,614
171,55,392,79,501,925,189,196,366,269,996,833,531,371,110,785,354,201,759,352
374,60,400,272,54,74,353,522,494,785,811,277,69,201,744,399,341,929,940,66
190,805,131,494,806,260,753,576,131,531,896,384,607,354,791,194,149,644,904,500
68,498,742,747,57,792,9,256,508,942,354,614,110,339,325,851,826,64,64,143
443,92,847,250,516,827,247,562,71,794,224,751,498,484,279,202,513,244,641,542
379,487,709,324,906,204,613,207,553,904,319,792,805,368,168,617,840,442,488,205
249,876,640,471,542,801,744,245,127,206,808,978,823,925,513,873,347,69,931,442
818,353,391,512,102,175,402,362,94,247,682,257,493,441,73,397,123,839,575,738
135,59,606,183,743,255,528,171,387,513,473,577,66,899,139,65,410,757,371,178
100,315,606,894,345,131,199,472,123,931,646,993,493,615,611,154,182,418,106,835
227,580,210,650,201,225,374,675,362,366,269,402,127,399,808,409,504,688,205,506
83,862,749,940,760,446,483,468,223,103,378,740,379,132,753,131,329,169,197,136

8
2020/inputs/day17.txt Normal file
View file

@ -0,0 +1,8 @@
.##...#.
.#.###..
..##.#.#
##...#.#
#..#...#
#..###..
.##.####
..#####.

373
2020/inputs/day18.txt Normal file
View file

@ -0,0 +1,373 @@
(5 * 6 * 5 * 7) + (6 + (8 * 3 * 9 + 2 + 7) + 7 + (4 * 2 + 5)) + 8
(4 + 6 * 4) + 6 * ((2 + 5 * 3 + 3 + 7 + 3) * 3 * (7 * 8 * 7 + 2) + (3 + 5)) + 7 * 3 * 6
(7 + (3 + 6)) * 7 + 9 * 4 + 8
2 * 5 + (4 + 9 + (4 + 7 + 3 * 7 + 6) + 7 + 8) + 2 * 7 * 3
(5 * 2 + (6 * 7 * 2 * 7 * 9 + 2) * 4 + 7) * (6 + 7 * 6 * 3) + 7 + 6 * 6
5 + 9 * (2 * 3) * (3 + 5 + 4 + 8 + 3) + ((2 * 8) * (5 * 8 + 8 + 3 + 5 * 9) + 6 * 5 + 2)
4 * 5 + ((7 + 9 + 2 * 5 + 8) * 3 * 9 * 7 + 4) + (7 * (9 + 7 * 3 * 7) + 6)
4 * (6 * (7 + 9 * 4 * 2 * 5) + 4 * (4 + 2 + 9) * 7 * 2) + 5 * (4 * (2 + 6 + 3 * 3 + 5) * 5 * 9)
7 * (2 + (3 * 6) * 8 + 3 * 3 * 4) * (8 + 8 + 2 * 5 + 4 * 8) * ((2 * 5) + 9 * 6 + 5 * 8)
6 + (9 + 4 + (9 * 5 + 3 * 3) * (9 + 9 * 5 + 6) * 5 * 8) * 7 * 5 + ((7 * 6) + 4) * 2
(5 * 6 * 3) * (6 * 3 + 8) * 6 * 4 * 5
3 * 2 * 2 * 7 * (9 + (9 * 6 * 7 * 6 * 9 + 6) + (6 + 9 * 5 + 9) + 6) * 4
9 + 3 + (3 * 7 * 7 * (4 + 2 * 6 + 9 + 6 * 9) + 4)
4 * 4 + 3 + 6 * 4
(7 * 2 * (5 * 2) * 6 * (7 + 9 * 6 * 9 * 9 * 2) + (3 + 5)) * (4 + (8 * 5 * 6 * 7) * 5 + 3 + 3 + 2) * 4
2 * 9 + (7 * 9 + 3 * 3) * 4 + 6 + 8
((5 + 5) * (3 * 9 * 5 * 4)) * 3
9 * 5 * 9 * (7 + 9 * 5 * 8 * 4) * (3 * 6 + 8 * 4 + 5 * (9 * 5 + 5))
(7 * (5 * 8 * 8 + 3) + 7 + 8) * 9 + ((6 + 7 * 8 + 7) + 5 + 6 * 3 + 8)
9 * 7 + 8 * 5 + (8 * (3 * 6 + 9 + 3) * 8 * 5)
(3 * 4 + 6 + 5 * 2) + 9 + 3 * (9 + (3 + 2 + 4)) * (6 * 8 + 6 * 6 * 2 * (7 + 9))
3 + 7 + 2 + 9 + ((4 + 8 + 7) * 5 + (3 + 6) + 3 * 9 + 8) * ((9 * 2) + 3 + 6 + (5 + 6 * 9 * 6 + 8 + 5))
2 + (5 * 3 + 7 * (5 + 8 + 6 + 8 * 6) + 2 * (2 * 7 * 4 * 7 + 8)) + 8 * (2 * 3 * 7 * 5) * (7 + 3 + (8 + 2 * 3 * 9 + 9 * 2) * 2 + 8) + (2 + (5 * 4 + 2 * 9 + 2 * 3) * 3 + 5 + (4 * 9 * 2) + 2)
2 + ((9 * 5) + 4 * 5) + 7 * 4 + 7
(6 + 2 + 7) + 7 * 3
(7 * 7 + (5 + 7 + 2 * 4) * 5 + 2) * (3 + (4 * 3 + 7 + 4) + 8)
9 * ((7 * 2 + 3 * 7 * 3 * 8) + 4 + 2 * 2 + 6 * 9) * 4 + 4 + 7
3 * 2 * 6 * 8 + 2 * (8 + 5 * (9 * 5) + (7 * 3 * 5 + 3 * 2))
5 + 9 + 3 + 8 + (4 + 4)
9 * 2 * 3 * (8 + 5 * 9 + 9 + 9) + (2 * (6 + 6 + 8 + 6 + 2 * 5) * 5)
(3 + 8 * 5) + 8 * 9 + (2 + 3 * (4 * 2 * 8 + 2 * 8) * 3 + 9 * 5) * 7 * 5
(8 * 9 * (4 * 2 * 5) + 5 + 5) * 5 * 9 + 3
8 * (6 * 4 * (5 * 7 + 8 + 4 + 9) + 6) * (4 * 4 * 4 * 2 * (8 * 3 * 7 * 7 + 4)) + 2
((7 * 8) * 9 * 5) * 9 * 7 * ((4 + 6) + 3 + 2 + 3) * 5
5 * 6 * 2 * ((8 * 9 + 3 * 7) * 3 + (7 + 4))
4 + ((9 * 2 + 2 + 5 + 6 * 5) * 3) * (6 * 6)
(5 * 8 + 2) * (3 + (7 + 5 + 5 + 8) * 5 * (4 + 5 + 9)) + 2 + 3 * 8
((6 * 4 + 4 + 9 * 5 + 4) + 6 * 4 + 2) * 9 * 7 * 4 * 6
(2 + 6 * 3 + 4 * 7 + 3) * 9 + 9 + 5
9 + 2 + 9 + 5 * 4
8 * 6 * 6 * 6 + 5
2 + (5 * 5 + 7 + 8) + 6 * 4 * 2 + 6
(5 * 7 * 6 * 8 * 5) * 2
2 * 5 + (6 * (6 + 5 * 3) * 3) * (8 + 3 * 9 * 4 * 9 + (6 + 7 + 4 + 5 + 6 + 6))
2 + (8 * (5 + 6 + 9 + 6 * 8 * 6) * 7 * 5 * 2 + 3) + 7 * 5
8 + 4 + (9 * 6 + 6 * 6 * (9 + 3 * 7 + 8 * 2) * 3) + ((8 * 2 + 7 + 8) * 3 + 7 + 2) * 8
4 + 4 + (2 * 3 + 6 + (7 * 4 + 7 * 9 * 5 * 6)) + 4 * 6
(7 + 8 * 7 * 4 * 7) * 8 * (4 * 6 * 4 * 9 + 6) + 4 + 2
2 + 5 * ((8 + 5 * 9 * 2 + 3 * 5) + 2 * 9 * 2) + 5 * 7
(8 + 3 + 4 + 9 + 6 * 9) * 2 * 5 * 8 * 5 + 6
(3 * (5 + 9) * 5) * (7 + (9 * 5 * 3 * 4 * 3) * (2 * 7 + 2 * 3 + 2 + 7) * 3) + 3 * 2 * 9 + 5
(4 + 4 * 5) + 8 * 7 * 9 + 5 * (5 + 3 + (2 + 5 * 2))
(8 * 3 + 8 * 8) + 5 * (3 * 8 + 8 + (5 * 3 + 9 + 6 + 6) * 3 * 9) + (4 * 6 + 4 * 6 * (6 + 8)) + 7
3 + 4 * 2 + 8 * ((5 + 9 + 9) * 6 * 5)
2 + ((7 + 4 * 8) + 8 * (2 * 4) + 8 * 3)
(9 + 4 + (2 + 4 + 9 * 7 + 4)) * 9
8 + 8 + 6 * (3 + 7 + (4 + 6 + 8 * 7 + 7) + 9 * (9 * 3 * 9)) + 5 + 8
6 * 6 + (7 + 5 + 2 + (5 + 6 * 9 + 5 + 6)) * (2 * 7 + 6 * 9) + 6 + 3
3 * 9 + 2 * ((3 + 2 * 7) + 2 + 7) + 2 + 4
7 * (2 + 6 + 8 + 9 + 5 + 9) * 7 * 5
((7 + 3 + 8 * 5 + 3) * 3 + 3) + 3 + (5 + 9) + 2 * 6 + 6
(2 * 7 * 6) + 8 + (2 * 6 * 6 + 5 * 4 + 3) + (9 * (6 * 8 * 2 + 9 * 2) * 6 * 6)
2 + (7 * (8 + 6 + 4 * 3 * 9) + 2 + (6 + 6 + 6) + 2 + 4) + 6
2 + 5 * 5 + (4 + 6 * 5 * (4 * 2 + 4 + 6))
8 + 9 + ((6 + 4 * 4 * 2 * 4) + (3 * 2 + 6 + 6 * 8) + 5 + (6 * 6) + (3 + 7 * 9 * 4 * 4 * 8) * 2) + 3
9 * (8 * 2 + 4) * 5 * 6 * (3 + 6)
((7 * 5) + 4 + (2 * 6 * 5 * 5 * 5) + 9 * 9 * (9 * 7 + 8 + 8 + 8 * 7)) + (6 + 9 + 4 * 8 * 3 + 8) + 8 * 6 + 4 * 9
3 * 6 + (6 * 3 * 5 * 9 * 8 * 6)
2 + 7 * (6 + 2 + 9) + 7
((9 + 8 * 8 * 3 * 3) + (8 * 6 + 3) * 3) * 2
2 * 7 + 7
3 + 9 * 8 + 6 * 3 + (2 + (2 * 6) + 3)
((2 * 4 * 8 * 7) + 7 + 7 * 7) + 4 + 4 + 3 + (2 + 6 + (5 * 3 * 8 * 5) * 9)
(2 * 6 * (3 + 7) * 5) * 9 * 4 * (3 + (7 + 5) + 5 * (2 * 6 + 4 * 3 + 3)) * 9 + 5
7 + 8 + 5 + ((9 + 3 * 6 + 8 * 8 * 5) * 9 + (7 * 6 * 7 + 2) + 6) * 6
9 * (9 + 7 + 8 * 4 + 2 + 4)
8 * (2 + 9 * 9) + 9 * (9 * 2 * 8 * 7 + 2 * 2)
(9 + (5 + 3 * 6 * 8) + 6 + 2 + (8 * 6 * 2 * 5 + 3 + 3) * (7 * 9 + 3)) * 7 + 3 * (2 * 4) + 8 * 7
2 * 3 + 2 * 6 * 2 + (7 + 3 + 4 + 3 + 3 + 5)
8 + (9 + 2 + 6 * 4) + 5 * 7
7 * 9 + 4 * 7 + 9 + 8
9 + 4 * 7 * 8 + (6 + 8 + 9 * (8 * 4 * 2) + 4)
3 + (9 + 9 * 3 * 2) * 7
(7 * (3 + 3) + 9 * 3) + (3 * 7 * 9) * 3 + 2 + (3 * 9 + (2 + 3) * 3 + 7 * 5)
(5 + 2) + 5 * 9 + 3 * 9 + 9
9 * 6 * (5 + 7 * 4 * 3 + 2 * 3) * 2 * 5 + (5 * 9)
(2 + 3) * 2 + 4 * 3 + 9 + (9 * 3)
8 + 3 + (6 * 6 + (4 * 7 + 8 * 8 + 6) + 9 + 2 + 7)
(6 + 4 + 9) + 6 + (3 * 5 * (3 + 5 * 7 + 3 * 8 + 7) + 3 * 2 * 8) * 9
((6 + 7 * 5 + 2 + 6) + 5 + 9 * 6 * 8 * 5) * (5 + 3 + 7 + 4 * (4 * 6)) * (7 * 7 + 8) * ((7 * 4 + 3 * 7 + 8 + 7) * (2 * 3 + 9) + (7 + 4 * 2)) + 2
6 * (2 + (9 * 2 + 2 + 9 + 2) + (9 * 5 + 4) * 3 * 5) + (8 + 6) + ((7 * 6 + 7 * 2 + 9) * 9)
6 * 7 + (2 * (4 + 5 * 4 * 7) * (7 * 3) + 2 * 5) + (5 + 9 * (3 + 9) * 5 + 6 * (3 * 6 * 7))
2 + (2 + 7 * (9 + 3) + 3 + 9 + 9) + 8 + ((4 * 3 * 4 + 6 + 6 + 9) * 3 * 6 + 8) * 7
6 * 9 * ((5 * 9 * 4) * 8 + 6 * 6 * (7 + 2 * 5 * 7) * 9) + (5 * 3 + (4 * 5 + 3 * 3 + 4 + 5) + 3) * (6 + 8) * 5
9 * (2 * (5 * 6) + 3) * 8 * 4 * 4
4 + 3 * 9 + 2 * (9 * 6 * 5 * 6 + 9) * 5
((7 * 7 + 3 * 2 * 4 * 5) + 6 * (6 + 4 + 9 * 2 * 9) * 7) + 8 + 2 * 8 * 7
(5 * 3 + 6 * 5 + 4) + (4 + (9 * 7 * 2 * 3 + 9) + 5 * 4 * 5 + 9) + 3 * 4 * 8
(7 * 6 + 6 * 5) + (4 * 6 + 6)
(7 * 8 * 3 + 5 * 6) + 9 * 9 * 3 + 5
(4 * 6) * 5
4 + 5 + 7 * 3 * (6 * (5 + 5 * 5) * 8 + 2 + 2 + 8) * 4
8 + (8 * 5 * (3 + 8)) + 3 * (8 * (2 * 4 * 4 + 4 + 3 * 9))
6 + 5 + 2 + 2 + 3 * (8 + 4 * 7)
3 + 2 + (7 + 8 + 7) + 4 + 9
(7 + (7 + 9 + 4 + 2 + 7 * 7)) + (6 + 9) + 3 * 9
5 * (4 + 6) + 4 * (4 + 3)
(4 + 9) * (6 * 6 * 3 + 5 + 8) + 3 * 7 * 3
9 + 7 * (3 + 6 * 3) * 5 * (4 * 6 * 4 * 4) + 4
6 * 8 + 8 * (9 * (2 * 5) * (9 + 2 + 4) + (7 * 7 + 4) + 8 * 5) + 8 + (7 + 4 * (3 * 5 + 8 + 5 * 2))
8 + 4 * 3 * ((4 * 6) * 8 * (6 * 2 * 4 + 5) * (6 + 9))
4 * 4 * ((5 * 2 * 5 + 9) + 3 * (7 * 6 * 7) + 7 * 2 + 6) + 7 + 5
2 * 9 * 5 + 3 * (5 * 6 * 8 * 4 + (8 + 3 * 6 * 5)) * 6
(3 * 6 + 2) + 2 * 5 * (8 * (7 * 8) + 5 + 3)
((6 + 8 * 9 + 2) * 4 + 7 + (8 * 5 * 2 * 2) * 3 + 4) + (7 + 7 * (2 * 4 * 4 * 8 + 7 + 2) * (3 * 7 + 5 + 9) + 5 * 3) * ((3 + 3 * 9 + 9) + 9 + 8) * (4 + (8 + 7 * 3)) + 3
(6 * 2 * (7 + 3 + 2 * 2 * 5) + 8 * 9) * 5 * 2 * 7 * 9 + 6
((2 + 3 * 2 + 5 * 8 + 3) + 5 * (7 + 8 * 5 * 2 * 4 * 8) + 6 + 9) * 9 + (5 * 2 + 4) + 2 + 3
(4 + 7 * 7 + 6 * 9 + 9) + 3
2 + (5 + (7 + 5 * 6 + 4 + 9 + 2) + 2)
4 * 9 + (8 + 2 + 5 * 8)
2 + 3 * 5 * 6 + 6 * (6 * 7 * 6 + 4 * 2 * (5 + 3 + 4 + 8 + 4))
6 + 2 * (4 * 2 + 5 * (4 + 5) * 2) * 9
(5 * 8 * 5 + 5) + ((3 + 4) * 7 + 5 + (3 * 6 * 2) * 9 + 6) + 7
7 * 2 * (7 + 2 + 4 + 4 + (5 * 6 * 9 + 4 * 8))
5 * ((6 + 8 * 2 + 7 + 4) * 2) * 7 * 5 + 7 * 9
(6 + (6 + 2 * 8) * 4) * ((5 * 3 * 9 + 8) + 6 + 7) * (3 * 8 + (6 + 3) + 3 * 3 + (9 + 4 * 5)) + 3
6 + (9 * 2 * 2 + 3) + (5 * 3)
(4 + 7 * 8 * (2 + 3 + 6 * 8) * 3) + ((3 + 9) + (2 + 3 + 3) + 8 * 9 + (6 + 7 * 5 * 5) * 2) + 5 + 8 + 3 * (7 + 6 + 3 * 3 + 5 * 5)
2 * (9 + 5 * 9 * 2 + 8 + 8) * 7
9 + (4 * 4 + (9 * 4 * 8 * 8 * 6)) + 3 * 5
6 + 4 * ((5 + 6) * (3 + 6 * 3 + 2) * (2 * 5) + 3 + 2) * 6 + 4 + 6
2 + (7 * 8 * (6 * 7 * 9 + 8)) * 8 * 3 * 7 * 7
9 + 9 + 2
(8 * 6 + 8 + 2) + ((9 * 4 + 9) * 9) + 5 * 2 * 3
(2 * (2 * 6 * 6 * 3 * 5) * 6 * (4 * 9 * 9 + 4 * 5)) * (4 + (2 + 8 * 9 + 7) * 3 * 6) + 7
(7 * 6 * 4 * (9 * 7 + 4 + 7) + 7) * 6 * (2 + 4 + 8) * (5 * 4 * (7 * 9) + 4)
9 * 4 + (2 * (5 + 9 + 7 * 4) + 6 + (7 * 3) * 6 + (6 * 9 + 4 * 6 + 8 + 7)) * 3
4 + 8 * 7 + 6 * (3 * 8 * 8) + 3
7 * (7 + 4 + 8 + 3 * 7 + 7) * (9 * (3 + 3) + 5 * (8 * 2)) * 5 * (2 + (4 * 6 + 4 * 7 + 6 * 9) + 2 * (9 + 7) * 4 * 5)
3 + 9 + (6 + 8) + 4 * 7
3 * (5 * 8 + (7 + 8)) + 6 * 6 + 4 * 8
7 * (5 * (3 * 6 * 2 * 9 + 4 + 2)) + 9 * 6 * (4 * 7 * 2 * 8) * 3
(5 + 3) + 9 * (3 + 8) + 8 + (5 * 9)
4 * 5 + 2 * (6 * (9 * 2 + 4))
(9 * 9 * (5 + 5 + 5 * 7 + 6 * 8) * 4) * (9 * 5) + 5 + 7 + 7 * 8
5 + ((9 + 3 + 8 + 8 + 8) + 6 + 6) * 2 * 6
6 + (7 * 9) + (6 + 6 * 9 * 3) * 3
8 + 4 + 5 + ((7 + 5) + 7 * 7 * 2 + 2)
(3 + 4 + (6 + 5 + 5 + 6 + 9) * 4) + 8 * 8 * 7 + 6 + 7
5 + ((8 * 9 + 6) * (4 + 8 + 5 + 5 + 6 + 8)) * 4 * 4
9 + 8 * (2 * (6 + 7 * 6 + 4 * 2)) * 2 + (4 * 2 + 3 + 8)
4 * (2 + (3 * 8) * 4) + 8 * 8
9 + (3 * 9 * 6 + 5 + 5 * 2) + 3 * (3 + (8 + 6) * 3 + 6) + 4 * 3
6 + (6 * 3 * 9 * (5 * 7 + 8 * 9) + 3 + 8)
4 + (2 + 2) + (5 + 4 + 3 * 2 * 5 + 5) + (2 + 9) * 2
4 + 3
4 * ((3 + 8 + 4 + 6) + 6 + 7 + 8 + 9 * 9)
(7 * 9 + 5 + (4 + 5 + 7 + 9 * 4 * 2) * 2) * 5
2 + 8 * 2 + 5 * 2
4 + ((7 * 8 + 4) + 5 * 8 * (5 + 2) + 9) + 2 + 8 + 6
7 + 7 * ((7 * 6 * 6 + 3 + 8 * 5) + 7 * 8 * (6 + 2)) + 6 * 5 * 8
8 * 4 * 7 + 4
2 * 2 * 7 + 4
9 + (6 + 7 + (4 * 2 + 4)) + 9 + 5
6 + (7 * 6 * 8 + 9 + 6 * 7) + (6 * 7 * (3 + 4 * 6 + 9) * 8 * 6 * (5 + 6 + 7 * 6 * 3)) + 4
7 * (8 * (8 + 6) * 8 * 2 + (9 + 8 * 6 + 3) * (6 * 4 + 7 + 7)) + 9
5 * 9 + (7 * 5 + (4 + 2 * 5 * 6 + 9 + 9) * 8 * 6)
4 + (8 + 8 * 2 * (3 * 7 * 4 * 5) * 8 + 4) + 9 * 9 * 3
7 * (3 + 9 * 2)
9 * ((8 + 8) + 5 + (4 * 3 * 9) * (5 * 3 * 2) + 2 + 8) * 2 + 5 * ((5 * 7) * (5 + 7 + 7 * 6 + 5) + 5 * 4 + 6 + 5)
9 + 6 + ((5 + 9 + 9) * 8) * 2 * 8
7 + (2 * (7 * 3 + 8) * 8 * 3 + 2 * 5) + 4 + 9 + ((3 + 6 * 9 * 3 + 6) * 8 * 9)
7 + 7 + 2 * 3 + 5 * (3 * 5)
5 + 6 * 6 * 8 + (3 * 9 * 7 + (4 * 4 + 3 + 4 + 7 + 6) * (7 + 6) + 2)
(9 * (3 * 3 * 8 * 7 * 3 * 8)) + (2 + 3 * 8 * 6) + 6
(6 * 6 + (6 * 7 + 3) * 5 * (4 + 9) + 7) * 3 * 6
2 + 9 * 2 + 5 * (3 * 4 + (4 + 6 + 5 * 8 * 2) * 9 * 3) + (8 + 7 * 9 + 6 + 3 + 3)
(3 + (2 * 7 * 9 * 8 * 4)) * (6 * (6 * 5 * 2) * 9 * 7 * 9 + 3) + 6 + 4 * (6 + 9 + 4 + 2) * 3
2 * 7 * ((4 * 8 * 4 * 9) + (8 + 2 + 2 + 7 * 7 + 6) * 9)
2 * 3 + 4 + 9
(5 + (8 + 8 * 7 + 7 * 3 * 2) + 4 + (3 + 9 * 6) * 4) + ((3 + 2 + 6 * 4) + 6 * 7) + 2 * (5 + 8 + (3 * 7 * 7 * 9) + (2 * 7) * 7 + 5) + 6
8 + (9 * 5 + (6 * 4 * 6 + 5 + 2 + 7) * (7 + 8) + 7 + 5) + ((7 * 3 * 7 + 8 * 4 * 6) + 9 * 7 + 6 + 3 + (4 * 7 + 2)) * 9 * 3
(3 + 9 + 5 + 5 * 8) * (7 * 6)
(2 + 4) * (5 * 9 * 8 + 7 * 5 + 5) * 9 + (7 * 3 + 9 + 3)
6 * 5 * 2 * 6 + 6 + 8
7 * (5 * 8 + (3 + 6) + 6 + 7 * 2) * 9 + 3
2 * 7 * 9 * (7 * (9 + 9) + (9 + 2 * 5)) + 5 * 5
6 + 9
8 + 9 + 8 + 8 + 9 + 9
2 + (9 * (2 * 3 * 9) + 7) + 5
(7 * 4) + (9 * 5 * 2)
(4 + 2 + 6 + 8 * 4 * 8) * 7 * 8 + 7 + 2
(6 + 9 * 9 + 7 * (5 * 7 * 6 + 9 * 5 + 2) + 3) * (2 + 4 * (8 * 3 + 2 * 4 * 2 * 8) + 9) * (6 + 6 * 2 * 6) + 5
2 * 2
6 * ((5 + 9 + 3 + 3 * 7 * 4) * (7 * 7 * 9 * 3) * 2 * 9 + 5) + 5 + 3
(9 + 8) + (5 * 6 + 7) + 2 * (8 + 8 * 4 + (3 + 9) + (5 + 4 * 8 + 6 + 2)) * 5
9 * 5 * 2 + ((9 * 5) + 2) + (8 + 5 * 5 + (9 + 6) * 7)
3 + 5 + ((5 * 9) * (3 * 9 * 7 + 7)) * 4
(7 * 4 * 9 * 5 + 9) + 5 + 4
2 * (6 * 4 * 6) * (4 + (6 * 6 * 7) * 4 * 4 * (6 + 8 * 2 + 5 + 7 + 9) + 2) * 3 * 5 * (8 * 9 * 4)
(7 + (8 * 2 + 2 + 5 + 7 + 2) + 7) + 2
(4 * (4 * 6 * 9) * 6 * (5 * 3 * 9) + 5 + 7) * 7 * (2 + 6 + 4 * 3 + 9 * 5) + 2
7 * 5 + 9 + (7 + 8 + 4 + 6) + (4 + 9 + 3 * (3 * 6))
(8 + 5 + 9 + 8 * 4) + (2 * 7 + 4)
(5 + 9 * (9 * 9 + 2) * 5 + 4 + 4) + 6 + (7 * 4 + 8 + 5 * 4) * 4 * 8
4 * (8 * (4 * 3 * 7 * 8 * 2)) + 4 + 3 * 2
8 * 8 + (5 + (5 + 5 + 9 + 3 + 6 * 2) * 7 + 5) + 6 + 8
(7 * (2 + 5 + 7) * 9 + 5 * 4) + 8 * 4
(2 * 6 + 3 * 8) * (6 + 5) * 9
7 + ((2 * 5) + (3 + 9 * 4 * 2 + 9 + 9) * 7 + 5 + (5 + 7 * 9 * 3 * 7) + 4) + 4 + 8 * 2
(4 + 4 * 9 * 4) + 4
4 + (4 + 5 * 4 + 9 * (3 * 3)) * 7 * 9 + (7 + (8 + 9 + 5)) + 4
8 * 8 * 6 * 2
((8 + 6 + 8 * 8 + 9) + 8 * 8 * 7 + 7 + 2) * 8 + 5 + 4 * 5 * 9
3 + 3 * 6 * 5 * 5 + (3 + 7 * (5 + 2 + 5) + (2 * 2 + 6 * 2 * 4 + 3) * 9 + 4)
(7 * 5 * 8 + (8 + 4 + 8)) * 8 + (2 + 5 + 9 * 2) + 9
(7 + 3 + 8 * 6 + 8) * 5 * 6 * 2 + 2 + (6 * 7)
((9 + 6 * 7 * 3 + 2) + 6 * 4) * 6
5 * 7 * ((9 * 7 + 3 + 2) * (5 + 6 + 8)) + (4 + 8 + 6 * 6)
3 + 2 + (3 + 7) * 7 * ((6 * 8 * 4 * 2 * 9) + 9)
6 + 5 * 9 * 8
2 * (8 + 9 + 5 * (4 * 5) + 7 + (8 * 6 * 4 + 9 * 3)) * 7 * 8
7 * 3 + 7 + 3 + 5
(4 * 6 * 6 * (3 * 2 * 2 * 6 * 2 * 5) * 3) * 3 + 6
(5 * 7 + 9 * 5 * (2 + 5 * 4 * 4 + 3) + 6) + 9 + 6 + 5 * 3 + 7
8 + (7 * 5 + 7 + 9 * 8) + 8 + 7
((9 * 8 * 7 + 2 * 6) + 3 + 9) + 5 + 3
(9 + (5 * 9 * 3 + 7) + 6 * 9 * 8) + (4 + 6 + (7 * 8 + 7 * 2 * 6 * 4))
5 * (5 + (2 + 2 + 7) + 7 + 4)
8 + (2 + 8 + (7 + 4))
6 * 7 + 2 + (3 * 3 * 9) * (5 + 4 * 9)
7 + (2 * 3 * 3 * 6 + (6 + 2 * 7 + 4 * 2 * 5)) + 2 + 5 * 3
((4 * 9 * 4) + 3 * 6 * 5) * ((4 * 8 + 2) + (7 + 5 * 5) + 4) * 4 * 2 + 2 + 3
3 * (8 * 6 * 4 + 4) + 3 + ((7 * 8 * 9 * 5 * 2 + 7) * 6 + (5 * 5 * 3 + 5 + 7 * 9)) * 5 * 7
3 * 6 + (9 * 4 * 9)
6 * (3 + 5 * 8 * 7 + 2)
4 * 7 * 6 + 3 + 2 * 4
(9 + 9 * 7) + 2 * 6 * ((5 * 9 * 4 * 3 + 8 * 2) * 5 + (6 + 2 * 2) * 2)
4 * (6 * 5 * 4 * (8 + 9 + 2)) * (7 + 7 + 6 + (8 * 6 + 5) * 6) * 5
9 * (6 + 8 * 7 + 5) + 8 + (8 * 4 * 4 * 9) * 2 * 9
(6 * 2 * 3 + (9 + 2 + 8)) + 9 * 9 + 8 * 4 + 7
(2 + 5 + 6 + 7 + 3) * 8 + 9 * 3
5 + (3 + 5)
9 * 4 + 4 * 8 + 7 * ((7 * 6 * 2 + 4 * 3) + 6 * 9 + 6)
7 + (8 + 3 + 2 * 8 * (7 * 9 + 4 + 3 + 2)) * (4 + 9 * 7 * 2 + 5 * 2)
7 * 6 * ((2 * 7 + 4) + 8 * 6 + 4 + 3) + 2 * 2 * ((8 * 9 + 8 * 3 * 6) * (2 * 2 * 9 + 7 + 7) + 3)
7 + (7 + (8 + 7 + 2 * 7) * 3 * (7 + 3) + 3 + 4) + 4 * 9 + 7
7 + 6 + (9 * (5 + 6) * (7 * 3 * 9 * 8) * 7 * 6 * 7) + (9 * (9 * 9 + 7 * 8 + 9) + 6 * 5)
(9 * 8 * 9) * 9 + 8 + 8 + 9 + 6
2 * 2 * 5 + (8 * 9 * 7 + 8 * 6 + 5)
3 * 7 * 4 + 5 + (4 * 4 + 5 + 8)
(4 + (7 + 8) * (2 * 6 + 6 + 5)) + 2
(7 + 9 * 2) + 7 * 9 + 6 + (4 + 9 + (4 * 4 + 5 + 4))
2 + (2 + 3 * 7) * 3
8 * (9 + (5 + 9 + 3) + 8) * 8 + 9
8 * (7 * 8) + 7 + 9 + ((9 + 4 + 7 * 3 + 8 * 6) + 3 + 3 + (4 * 6 + 7 + 8) + 6) + 4
4 * 7 * 8
((4 * 6 * 3 * 6 + 6) * 3) * 4
4 + (6 + 5 * 2 * (4 * 8)) * 9 + 4 * 2
6 * 5
(6 * (3 * 2 + 6 + 5 * 4 + 9) + 3 * 7 + 3) + 6 + 5 + 8 + 2
6 * 2 + 7 + 4 + 4 + (9 + 2 + 4 + 9)
8 * 2 * (6 + (5 + 9 * 9) + 9 + 2)
(7 * 7 * (3 + 8 * 2 * 8) + 3 + 2) + 5
((6 + 4 + 3 * 3 * 9 + 8) * (5 + 4 + 6 + 3) + (3 + 4 + 5 + 3) + 7) + 7
3 + 5 + (2 * (7 + 9 * 3) * (4 + 3 * 9 * 4 * 5))
3 + (6 * 9 + 7) * (2 * (4 + 3 * 5 + 5) + 7 + 5 + 2 * 2) + 8 * 5
(3 + 3) + 3 * 2 + 6 * (2 * 5 + 7) * 8
3 * 8 + (3 * 9 * 2 * (9 + 6 * 6 * 6 + 6) * 8) * (2 + 4 + 9) + 4
6 + 2 * 7 * ((7 + 8 * 9 * 3 * 3 * 9) + (3 * 8 + 5 + 2) * 9 + 8 + 4)
3 + ((6 * 2 * 5 * 3 * 9 + 9) * 3 + 7 * 8 + 6) + 9 + (2 + 7 + 9)
((8 * 7 * 7 * 2 + 7 + 9) * 9 * 7 + 7 + 5) * 7
3 * 3 + 9 + 3 * 2 * 4
(5 * 6 + 4 + 2 * 2 + 5) * 4 * 3 * 5 + (5 + 2 * 7 + 8 * 5)
9 * 5 + 5 * (4 * 8 * 8 + 7)
3 + ((2 * 9) * 3 * (3 * 2 + 3 * 7 * 9) * 6) * 3 * (6 + 9 * 4 * 2) + 5
((8 * 9 * 6 * 5) * 2) * 4 + 4 * 5 * 2 * (5 + 4 + 2)
7 + ((6 * 9 + 6 + 4 + 7 + 5) * (7 + 6 + 8) * 8)
6 + 5 * (9 * 7 + (3 + 8)) + 2 + (8 * 6 * 9) * (6 * 4 + 5 + 6)
((7 + 6 + 2 + 8) * 2 * 4 + 2 + 3) + 7 * 5
6 * 2 * 8 + (9 * 5 * 5 + 6 * (6 * 4) * (5 + 7 * 7 * 3)) * ((2 * 4 + 4) * 2 + 8 * 8 * 6 * 7) * 8
7 * (9 + 7 * 7 + 8 + 7) + 8 * 6 + 4 + 2
(9 + 5 * 8 + 3 + 4) * 2 + ((7 * 5 + 6 * 3) + 3 + (2 * 5 * 7 * 6 + 5) * 7 + (4 * 5 + 8 + 3)) * 2 * 9 + 7
6 * 8 + (2 + (3 + 7 + 2 + 6 * 5 * 2) * 4 + 3 * (9 * 3 + 6 + 6 * 6)) + 3 * (8 * 3 * 2) * (7 * 5 + 6)
(3 + 6 * (5 * 3 + 3 + 3 * 6 + 4) * (5 + 3 * 5 * 9 + 6 * 5)) + 2 + 3
8 * (5 * 9 * 6 + 2 * 2 + 4) * 3 * 5 + 4
8 * (4 + 9 + (7 * 6)) + 8 + 5 + (7 + 6 + (8 * 7 + 9 + 4 * 5 + 9) + 7 * 4) + 9
(2 + 5) * (3 * 8 * (4 * 3) * (4 + 3 * 5 + 9 * 6 * 3) * 9)
(7 + 5 + (4 + 7 * 5)) * 4 + 9 + 6 + 8 + 3
(2 * 3 + 2 * 3 * 7) * 4 * 6 * (5 * 5 + 8 + 9 * (6 + 8 + 8 + 4 * 6 + 6)) * 2 * 5
7 + (7 + 8) * 6 + 5 * 6
(7 * (8 + 9 * 3 + 5) * 4 * 3 * 2 + (8 * 7 * 2 * 8)) + 8 * (9 + 6 * 4 * 3 * 4) * 9
8 * 5 * (7 * 5 + 3 * 4) + 5 + 8
4 + 9 + (8 * (5 + 4 * 6 + 9) * (4 * 5 + 4) * (3 + 6 + 7 * 4 * 5 + 8) + 8)
(3 * (9 + 2 * 7) * 4 + 5 * 8) * 8
5 + 9 * 2 * (5 + 6 + 4 * 9 + 5) + 8
2 * (2 * 9 * 4 * 7)
(5 * 8 + 3 * (2 * 8 + 5 * 2 + 6) + 8) * ((2 + 6) + 7 * 2 * (5 + 3 * 3 * 7 * 5) + 3 + 4) * 5 * 9 * 8 + 9
(9 * 5 + (5 + 3) + 8) + 8
7 * 4 + 7
4 * ((9 + 6 * 7) + 9 + 7 + (3 * 9 * 3 * 7 * 7) * 6 * 5) * (7 * 6 + 5 * 5 + 9) * 6 + (4 + 3)
(6 * 4 + 7 * (9 + 2 + 8) + 5) * 8 + 7 + 5 * ((5 + 4 + 9) + 9 * 3 * 3) + 5
6 * (5 * 8 * 9 + (3 + 3 + 4) + 8) * 5 * 3 * (6 + 3 * 3 * 9) + (3 + 3 * 7)
(8 * 6) * 6 * (6 + 5 * (2 * 2) * 5 * 9) * (3 * 5 + 3 + 4 + 9)
7 + ((3 + 6 * 4 * 4 * 8) + 4 + 8 + 4 + 6) + 7 * (9 + 2 + 7) * 4 + 7
(7 + (8 + 6 + 9 + 9 + 4 * 8) + 9 + 9 * 6) * (2 + (5 * 6) + 8 * 8) + ((9 * 7) + (7 + 7 + 5)) * 5
4 * (7 * 2 * 9) + 9 + 5
(6 + (4 + 7 * 5) * 4 * 9 + 3 * 7) + 8
9 + ((5 + 6 * 2 * 2 + 8) * 9 + 8) * 9 + (7 + 5 + 5) * (9 * 5)
7 + 9 * (3 + (6 * 3 + 8 + 3) + (5 * 2 * 5 * 9) * 4 * (9 + 4 + 3 + 8 * 5 + 2) + 4) + 7
(2 * 3 + 6) + (5 + (6 * 8 * 2 + 5 + 6 + 5) + 6 + 7 + (9 * 9 * 8 * 9 * 3)) * ((7 + 3 * 3 * 4 * 8) + 4 + 3) + 2 + (6 * 3 + 4 + 9 + 9) + 3
8 + (5 + (3 + 2 * 6 + 6 + 6) * 4) * 7 + 4 * 3
2 * 7 * 7 * (4 + 8) + 5
8 * 9 + 9 * ((6 + 4 * 4 * 6 + 5) + (4 + 3 + 7 * 8 + 3) + 6 + 4 * 5) * 9 + 6
5 + 6 + 9 + 7 + (6 * 8 * 5 * 7 + 3 + 7) + 6
8 * 8 + 6 + (3 * 6 + 4 + 9 * 7) * (5 * 3 * (4 * 5 * 9 + 2 + 9 + 2) + (6 * 2 * 6 + 7 + 6 + 6) * (8 + 6) + 9) + 7
9 * (7 * 8) * 9
5 + (5 + 3 + 7 * 9) * (5 * (9 * 8 + 9 + 2 + 4 * 8) + 6 + 5 + 3)
2 + 3 * 7 + (3 * (4 + 2) + 9 + 7 + 2) * 6 * 2
5 + 3 + (2 + 2 * (8 + 6 * 5 + 9 * 6)) * 7 + 4
8 + (7 * 7 + (7 + 5 + 9 + 6 + 5)) + 8 + 2 + 3 * 6
7 * 8 + 8 * (8 + 2 * 4) + 8
2 * 5 + 4 * 5 * 9 * (8 * 2 * (6 * 7 * 6 + 2 * 5))
8 * 9 * (8 * (6 * 7 * 8 * 9 + 2) * 5 * 9 + 7 + 7) + (8 + 6 * (9 * 9) + (8 + 9 + 9) + 3) + 8
(5 + 8 * (3 + 4 * 8) * (7 * 2 + 8) * 6) + 7 + 3 + (6 * (9 + 2) + 8 + (7 * 2 + 9 * 7 * 8 + 8) + 4) + (7 * (7 * 5 * 5) + 5) * 3
6 * (2 + 5 * (7 + 3 * 9 + 8 + 8 + 5) + 5) + 6 * 6
6 * 9 + 2 * 4 * (9 + 3 + 4 + 4) * 3
2 * (6 * 6) + 2 * 7
(7 * 5 + 7) + 7 * (5 * (9 + 2 + 2) + 4 * 6 * 4 * (7 * 8 * 6 + 7 * 7)) * 7 + 2 * 3
3 * (9 + 3 + (3 + 2 * 3 * 3 * 6 + 4) * 2 * 9 + (7 * 3))
((8 * 8 * 8 * 4) * 7 + (7 * 3) + (3 + 6 * 8 + 2) + 5 * 6) * 4
2 + 7 + 5 + 8 * (9 + 9 + 6 * (5 + 8 + 7 + 3 + 7))
8 + 3 + (9 * 2 + 2 + 4) + (5 + 8 * 2)
(8 * 7) * ((5 * 5 + 7 + 2 * 2) * 2 * (8 * 5 + 4) * 7 * 2) * (5 + 2 + 6 * 8) + 6 * 4 + ((9 + 9 + 5) * 7 * 8 * 8 * 8)
(6 + 7 * 4) * 7 + 4 * (4 * (6 * 2 + 8) * (3 * 5 + 7) + 6 + 6)
(3 * 6 + 9) + (6 * 8 + 6) * 8 + 5 + 4 * 7
4 + 2 * (6 + 2 + 4 + 3) + 6
8 + (6 * (8 * 8 + 6) + 2 + 9) * 4
3 + 7 + 9 + 2 * 9 + (5 * (2 + 7 * 2 + 5 + 4 + 3))
8 * ((6 * 4 + 2) + 2 + 2) * 2 * (3 * 3) + 6
(6 + 5) * 8 * 7 + 4
9 * ((3 + 9) + 8 * 5 * 8 * 5) + 9 * 2
2 * 3 * (5 * 6)
((2 + 4 * 7 + 4) * 4 + 8 * (4 * 2)) + 8 * 5
6 * (9 + 6 + (8 + 3 + 8 * 7 + 4) * 4) + 7
2 * 5 * ((3 + 7 * 6 + 6 * 2) * 4) * 3
8 + ((7 + 3 + 7 * 7) * (6 * 4 * 6 * 3 + 3 + 9)) * (8 * (3 * 5 * 5 * 6 + 6 * 7) + 5 + 4)
6 * 7 + 6 + (3 * 2 * 2 * 7 * 4 + (4 + 9)) * 4
4 + 4 * 2 * 5 * (7 + 7 * (7 + 5) * 4)
3 * (9 + 9 * 2 + 4 * 5) + 5 + 2 + 2
5 * 3
4 * (3 * (8 + 9) * 4 * 8 + (5 * 5 * 4 * 2 + 8) * 2) * 6 * 7
2 + ((3 + 9 * 9 * 9 * 4) * 6 * 3 + 6 + (4 * 8 * 6 * 8)) * 8 + 5
2 + 4 + (8 * 3 + 8 * (7 * 2 + 5) * 9 * 8) * (2 * 6 + 7 + 7) * (8 * 3 + 6 + 7 + 7) * 7
3 * (2 * 9 * (2 + 2 * 9) * 4) * 9 + ((6 * 6 + 2 + 5 * 6 + 5) * 9)
(3 * 4 + 2) * 9 * 9 + 5 * 4
4 * (9 * 9 + (6 * 5 + 3) * 2 * 3 + 4) + 9 * (7 * 9 + 3 + 3) + 2
7 * 2 + 3 * (9 + 3)
(8 * 3 + 7 * 4 * 5 + 8) + (4 * (8 + 2 * 7) * 2 * 8 * 2 + 9) + 3
7 + 9 + 8 + 6 * ((2 * 6 * 8) * (4 + 9 * 5 * 5 + 3 + 6) * 6 + 8) * 8
(4 * 6 + 4 + (7 * 9 + 6 + 6)) + 2 + 5 * 7 * 4
(2 + 9) * 3 + 5
6 * 7 + 3
8 + 2 + 3 * (5 * 2 * 9 * 5) * 5
3 + 8 + (8 + (5 + 8 + 4) + 3 * (9 * 7 * 2 * 7 * 8) * 7) + 5 * 8 + (2 + (7 + 9 * 6 + 6 * 6))
7 * 6 * 8 * (8 + 5 + 6 * 7 * 4 + 3) * 8 + 8
9 + 9 * 4 * 6 * ((3 * 9 * 9 * 4) + 2 + 2 + 9) + ((9 * 4 * 3 + 8 + 3) + 8 * (6 * 4 + 2 + 5 + 4) * 2 + 5 + 9)
(7 + 9 + (4 + 3 + 7 * 8) + 2 + (6 * 4 + 7 * 8 * 3)) + 6
(3 + (6 + 6 + 7 + 9 + 6) * 8 + 4 + 6) * 9 * 2 + (7 * 2 * 6 * 5 * 6 + 9) * ((7 + 4 * 7 + 4 * 9 + 9) + 6 * 4 * 8 * 9) + 4
9 * (2 * 7 + 4) * 6 + 7 + 2
(4 * 5 * 9 + 2 * 9 + 2) + 5 * 4 * (3 + (2 + 3) + (6 * 5 + 5 + 5 + 2 + 3) + 5)
8 * 6 * (4 * 8) + (3 + 8 + 9 + 6 * 3) + (8 * 8)
(6 * 5 * 7) + 3 + 7 * 4

450
2020/inputs/day19.txt Normal file
View file

@ -0,0 +1,450 @@
104: 23 105 | 105 23
40: 23 39 | 105 35
127: 23 3 | 105 49
96: 85 23 | 73 105
114: 70 23 | 106 105
124: 80 105 | 71 23
23: "a"
97: 105 12 | 23 104
18: 23 118 | 105 29
89: 121 105 | 39 23
13: 23 18 | 105 87
122: 50 105 | 24 23
6: 58 105 | 59 23
101: 105 44 | 23 43
31: 105 65 | 23 13
36: 64 105 | 68 23
74: 105 123 | 23 7
38: 19 23 | 48 105
118: 105 127 | 23 75
130: 23 30 | 105 44
59: 105 121 | 23 71
112: 92 23 | 97 105
91: 25 23 | 66 105
46: 30 23 | 39 105
111: 105 35 | 23 104
28: 105 129 | 23 112
25: 105 62 | 23 89
125: 23 61 | 105 100
120: 105 131 | 23 44
102: 43 105 | 48 23
105: "b"
27: 5 23 | 10 105
84: 21 23 | 130 105
56: 105 39
35: 23 23 | 105 23
44: 23 105
69: 80 105 | 104 23
100: 72 105 | 110 23
72: 39 105 | 19 23
95: 105 69 | 23 109
88: 120 105 | 78 23
53: 67 105 | 14 23
26: 21 23 | 56 105
80: 105 105 | 105 23
70: 19 23 | 12 105
92: 44 23 | 12 105
37: 48 105 | 55 23
132: 23 16 | 105 122
7: 105 48 | 23 12
113: 39 23 | 12 105
10: 102 105 | 126 23
94: 105 | 23
42: 105 128 | 23 132
103: 105 89 | 23 57
107: 105 79 | 23 76
11: 42 31
99: 47 105 | 1 23
55: 105 94 | 23 23
8: 42
4: 23 41 | 105 15
81: 51 105 | 116 23
76: 37 105 | 78 23
110: 12 23 | 35 105
45: 105 33 | 23 84
78: 23 131 | 105 35
63: 72 105 | 133 23
51: 19 105 | 131 23
83: 105 45 | 23 27
21: 23 71 | 105 104
19: 23 105 | 105 94
54: 23 48 | 105 55
41: 23 121 | 105 55
20: 115 105 | 86 23
15: 105 71
66: 105 113 | 23 49
121: 94 94
14: 99 105 | 81 23
22: 30 105
129: 105 109 | 23 111
5: 15 105 | 9 23
30: 105 105
131: 105 23
87: 23 77 | 105 91
98: 23 38 | 105 82
77: 23 88 | 105 74
43: 23 23 | 94 105
86: 23 98 | 105 93
58: 55 23 | 131 105
1: 23 35 | 105 30
9: 105 131 | 23 55
49: 104 105 | 55 23
68: 23 131 | 105 48
0: 8 11
71: 23 23
48: 105 23 | 23 94
29: 105 119 | 23 117
93: 52 23 | 22 105
16: 105 125 | 23 28
126: 35 23 | 43 105
65: 83 23 | 53 105
62: 19 105 | 104 23
12: 23 23 | 23 105
52: 105 19 | 23 104
67: 23 103 | 105 63
24: 4 105 | 26 23
50: 105 95 | 23 96
47: 105 30 | 23 30
32: 105 114 | 23 6
82: 105 19 | 23 12
75: 34 105 | 59 23
34: 23 39 | 105 80
17: 23 104 | 105 131
109: 44 23 | 39 105
79: 17 23 | 78 105
85: 12 23 | 39 105
57: 23 30 | 105 121
2: 23 30
3: 71 23 | 19 105
115: 108 105 | 36 23
64: 23 121 | 105 12
90: 105 32 | 23 107
116: 12 105 | 131 23
123: 71 105 | 35 23
61: 85 23 | 70 105
133: 80 94
119: 105 40 | 23 46
128: 23 90 | 105 20
60: 104 105 | 80 23
33: 23 89 | 105 101
73: 105 121 | 23 19
39: 105 105 | 23 23
108: 105 2 | 23 54
106: 71 105 | 44 23
117: 124 105 | 60 23
aababbbaaabbaaaabbabaaaabbbaababbbbbaaabbaabbbbb
aababbabaababbbabbbabaaabbbbbbababaaabaa
bababbbabaaabbaababbabaaabbbaaab
baabababaaababbaabbbbabb
baaaaaabaaaaababbbabbabbbaaaabba
abbabbaaabbbabbaabbbababaabbabbaaababaabbabbabbbaabaabababbaaabbaababababbbbbbab
bbbaabbaababaabaabbaaaabbaabaaabababbaababbbaaabaaaaaaabaabbbaabaabababa
baaabaaaababbabbbabbababbbbabaaaabaaaabb
bababaababbbababababaababbabbabbaabbaabbaaabaabb
aabbbbabbabbababbbbaabbb
bbbbbaaabbabbabbbaaabbbb
bbaaabbabababbaaaabbbabb
aaaababbaaaaaabbaaaababbababbbaa
baaaabbbabaabbbaabbabbab
aabbaabbbbbaaaaaabbaaaab
baaaabbbaabbababbbbbbaaababaabba
abaaababbbaabbababbbaaaabaabaabbbbbbbaba
baaababaaabaabaaaaabbbababbaaaaa
bbaabbabaabbbbabaabbbbaa
bbabaaaabbbbaaabbbababbb
abaaaaabbaaabbabbbabbaab
baaaabbbabaabbbaaaabaaaa
bbabbbbbbababaaabbbbabaabaaaaaaa
abababbbabbbbbbbbbababaa
ababaabbbbbabbaaaabaaaaabbbaabbaabbbbaaabbbabaababbbbbbaaaababbaabbaaaba
babbbbaabaaaabbbababbaaa
bababbbaaaaabaabbbabbaaa
babababaaaabbbbbbbababaa
aaaaaaaabbbaabbbabbaaabbabaabbbbabaabbaabababbaaaaababbababbabbaaaaabbbbbaabbbbabbaaabba
babbaabaabababbbaababbbb
baabbaabbaaaabbbbbbbabaabbbababb
bbbaaaaaabbbaaabbbabbaaa
aababbbabbaaababbaababaabbbaabba
bababbbaaabaaabbabbaabba
baaaabaabaaabbabbbbaaaaa
bbbabbabaabaaabbaaabaaabbaaabbba
bbaaaabbbaaabaaabbbaaaabbbaaaabbbabbabbbbabaaaba
bbabbbbabbabaaaaaabaabbbaababbbb
abaaababaababbabbbbaabba
bbbaabaababaaaabbbbababa
aaababaaabbaaabbaaaababa
bbaababaaaaaabaaaaabaaaa
aabbaabaaaaaabababaabaabbbaabaabbbbaabbaabbaaaab
babababababababbbbbbabbb
aabbaaaabbbaaaabbabababbbbbbbbbbaaaaaaaa
babbabaaaaaaababbabaaabb
bbbbabaaabaaabbaaaababbb
bbabaaaabbaabaaabbbaabaaabbaabba
babbbaaaabaaabbaabbaaaab
baaababbababbabbbabababaababbabbaaabbbaaababbaab
baaaabaabaaabbabbbbababa
babababbabbbaaaaaaaaaaaa
bbaababbabbaaabbabbbbabbabbbabababbbabba
aabbbaabbbabbbbbabaaabbabbabbbbbaabaababbabbbabbaabababa
aababbabaabaababbbabbabbabbabaabababbaab
abbbbbaabaaabbababbbbbaabaaabbbb
abababababaaaabbbaaaabbababaaabbabaabbbbbababaab
abaaabbaabababaaababbbbaaabaaabbabbabababababababaaabaabaaaabaaababaaababbaaaaaaabaabbbb
baaabbabaababaabbabababbbaaabaaaabbbabbaabaaaabb
abaababbababaababaabbbaababbaaaa
aaaaaababbbaababbbbaabbb
babababbbababbaabbabbbaaabaababa
aaabaababbbbabbbbbbbbbaababbabbabbbaabababbbbabbbabaaababaabababaaaaabba
abaabaababbbaaaabbaabaab
bbbabaaaabbbaababbaaaaaa
aabaaabbbbababababaaaabaabbbaaaaaaabaababaabaabb
ababbaabbaaaaaabbbbaaabaabbaaaabaababbbbbbaaabbaaababaabbbbababa
babbababbbbbbaaaababbaab
baaabbabbababaabaaaabbbb
baaababbbaabababababbaaa
bbaaabbbaaaaabbabbbaaaba
babbababbaaaabbbabbabaaabaabbbba
babbbaaabbabbbaababaabba
bbaabaaaaaabbabaaaabbabaaaaabbabbaaababa
aaaaaabaabbabaaaabaabbbaaaabbaaabaaabbbb
bababaababaaaaabbaabbaaa
aababaabaabaaababbaaaabbaababaaa
bbbabaabaaaabaababbbbbab
baabaabaaaaababbbbbbabba
abaabaabbbbaabaaababaabababbabbbbbbbaaaa
bababbaaaaaaabbaaaaaaabbabababba
bbabaabaabbabbbbbaaaabaaaabbbabb
bbabababababaababbbaaaabbbbbbaba
aabaabbbbabababaaabaaaaabbabbbabbbbbaabbbbbabbbbabbbbaba
abbaaaaabaababbabaaaabab
aabbbaabbbabbbbbbaaaabbbabbaaaaabababbbb
abaabbbbbbaaabbabaabbaabaaaaabbbbaabbabb
aabaabaababaaaaaabbabaab
abbbbbaababbaabbbbaaabaaaaabbbaa
aabbaabbaaaaababaabbabaabbbbbbbb
abbaaabbbbbabbbbaabbabba
bbabababaaabbaabbaaabbabbbbbbaaaababaabaaaaabbaabaabaaaa
bbaabaaababababbaaaabaaa
babbbbaabaaaaabbabbbaabb
babbaabaaaaabaabaabaaabaaabababa
aabaabbbaabbbabaabbbaabaababaaab
abbbbabbbbaaaabbbbababaa
bbbbbaaabbabaaaabbbbabbb
abaabababbabaaabaababbaa
bbabaaabbaaabbaaabbaaaba
bbabbbbaaaabbbbbbaabbbbababbbaabaabbbaaaabbaabababaabaaabaabbbbbabbaabaabbaaabbaaababbaa
aabaabbbabbaabaaaaaaaaaa
babbbaaababbaabbbbababba
bababbababaaaaaabbbbabba
baabababaabaabaaaaaababa
ababaabaabbabaaabbaabbbbabaaaaabbbbbbaaabbaabaababbbabaaababbaaa
bbaabbaaaabbbaabbaaabbbb
baaaaaabaabaabaaabbaaaaa
aaababaabbabbbbaabbbbbaabbbaaabababaaaba
abbbaababaabaabaabbabbaa
abbbbbaaaabbabaaabababaa
abbbaabababbaabbaababbaabbaaaabbabbbbbbaabbabbbaaaaabbba
babaaaababaaabbabbbabaaabaababbbbabbaaab
babaaaaababbbbbbbaabaaaa
bbbbbaabbabaaaaaabbbbabbaaabbbbbbbabbaabbbabbbbabbbabbbb
babababaaaaababbaaababbaabbbbaaa
aaababaaaabaabaaababaaaa
bbaaaabaabbbbabababbbaab
bbbaaaabaababbbaabaaabbababbbbab
abbbbaabbaaaaabbbabbaabaabbbaaaabbabbaab
abbbababababbabababaaaab
aabaabbbabaababbbabaabab
bbaaaababaabaabaaabbbabb
bbbabbabbabbababaaabaababbbaaabb
babababbbbaaababbbbabaab
baabbbabbbbbbaaabaabbbabaabaaabaabbaabbb
aaaaabbabaaababbbbbababb
bbbaabaabababbbababbabbabbbaabbbbbbabbaa
bbaaabababaaaaababaaaababbababbbbbbbbbbb
aaaaababbaabbbababbaaaab
bbbaaaabbaababaabbbbbbbababbbbbb
bbbbaaababbbaababababbbaabaababaababbbbbbaababbb
bbabbbaabaaabaaabbbababb
aabbababaabaaaaabbbabbabbbaaaaaa
aaababbaabbaabaaabaaaabbaabbabbababbbabbabbaabbb
ababaabaaabaabbbabbaaaaa
ababaabbaaababbaabaaaababbabbbabbbbbbbaaaaaabbaa
baaabaabbbabbabababaabba
aaabaaabaaabaababbbabaabbabbbbbb
aabaaabbaabbaabbabbbababbabbaabaabbabbab
baaaabaaaabaaabbbbbaaaababaaabbabbbababbabababaa
bbaabababbabaaabbbaabaaabaaaabba
abaabaabbbbaaaabbabaabaa
bbbaababaaaabaabababbbbbaabbbabbbaaaaaaa
bbaababbababaababbaaaaaa
bbbbbbbabbbbbbaaabaabbaa
ababbbbbbabbaabbbbaaaaab
bbabbabbaabbabaaaabbbbba
ababbaaababbabbabbaabbbabaabbabbababaabbabbbbaabbbbaaabaaaaabbbaaaaabbabbabbabbb
aaaaaaabaabbbbaababbbabbababbabbbbabaaaababaabbbbbabbabb
baaaabaabababaaaaaabbbaa
ababbbbaaabbaabaaabbababbabababaaaaababbbabaabbaabaabbaabbbbbabb
aabaaabbaaabaababbbaabaabbbbabba
bbabaaabbaabbbaaabbbbbab
bbaabaaabbbbaaababbabbba
aabbabaaabbbbbbbaabbabbb
baabababaabbabababababaa
abbbbabbaaabaababbaabbabbbbaabababaaabbabbbbabbbababababababbaaa
baabbaababababaaabbaabaaaaaabaaaabbabaaabbababaaaaaabbaaabaaabbb
bbbabbbbaaaabaabbbbaaaabbabbbaba
abaaababbabbaabbbbbaabba
ababbabbbaaaabaaabaaabaaabababbbbbbbbbbbbbbabbba
aabbbabaaaaaabaabaaabbbb
aaaaaabaababbbbaabaabbab
ababaaaaabaaabbbbbbbababbabaaababaaaabaaabbabbbb
babbabaaabaaaaabbaaabbaabaaaabaaaababaaa
bbbbbbbaaabbbbabbbbbabbb
abbbbabbbbabbabbbaabababbabaabab
babbbbaabbabaabbabaaabbabaaabbba
bbbabbbbbababababaaabbabbbbbaabb
bbabbabbbaaabbaaaabbaabbabbbbbbbabbbbbbbbabaabbbbabbabbbabaabaaaabbaaaaa
bbabaababaaabbabbbabaabbaabaabbababbbbba
bbabaaabbbaaabaaabbbabbb
aabaaabbaaaabaabababbaaa
abbbaababbabbbaaabbaaaab
abaabbbabbabaaaaaabaaabbaaaaaabbbaabbbba
bbabaabbabbbbbbbaabababb
bababbbaaaaabaabababbbaa
abbbaaaabbbaabababbbbbbaabaaaaabbabbbbbabaabbbbbababbbbabaaababbbbbabbaabbbababa
aaabaababababbaabaabbbabababbaaabaaabbaabaaabbbabbaaaaabaabaaaabaaaaaaaa
abbaaabbababbbbbbaabbaba
aabaababbbabbbabbbabaababbaaaabaabbbbbba
bbaabbaaabbbbaabababbbaa
aababaabababbbbababbbaba
bbbbbbbaaabaababaabbaabbbaaaaabababaabbb
abbbaaaabbbabbbbaababbbb
aaababbaaabbbababaabaaab
bbaaabbababbbbaabaababba
bbbbbaaaabaabbbbabbbaabb
baaabbaabababbabbbbbaaaa
abbbbababbbbbbabbaabaaabbbbbbaab
baabbbabbbbbbbbabbaaaabaababaaaa
aaaaabbaaabbaaaaaabaaabaaaabbbaa
bababbaaaabbaaaaaabbbbaa
abaaabbbaaabaabbabbbaaabaaabaaaaaababbbb
aaabbbbbbbabaaabbbaaabbaababbbbbaabaaaab
aaabbaabaabbaaaabbaaaaab
bbaabaaaaabaaaaaabbabaab
babababaababaabbabbabaab
aabaabbbbbbbbbaabbabaaaaaababbbaaaababaaaaabbbbaabaabbabaaaabbaabbaabaab
bbaaabaaaabbbbabaabbbbabbbbbabba
aaaabaabbaaababbbbbbbbaaabbabaabbbbbbbbb
abbaababbbbabaabbaabbbba
aaaabaabaababbbababbbabb
bbaabbaaaababbabaaabbabaaaaabbaa
aaabaaabaabbabaababaaaaaabaaabaa
aaabbababbaaabbababaabaa
abaaabbaababbbabaabaabbbaabaaaaabbababbb
bbaaabbbaaabaabaabbaabba
bbaababbbbabbbbbbaaababa
baaabbaababbaabaabbbbbbbbabaaaabbbbaabba
baaaabbbbaabaaaabbaaaaaabbbbbabababaaaba
bbaababaaabbbababababaaaabababab
baaaabaabbabbabbbaababbb
bbaaaabaabaaabbababbaababbbbbbbbabbabbab
babbaaaabbababbaaaababbbbabbabaabbababbbbbbabbba
bbabaaabababaabaabbbabba
bbbaababababbbababbabbab
aabbbbabaaabbbbbaabbbbaa
aabaabbbabaaaaababbabbba
bbababababbbbabbabbaabbb
baaaaabbaabbababbbaaaabbbababbbabbbbbaabaaaabbba
bbbaabaaabbabaaabaabaabb
bbbbabaaabbbababbbaabaaabbaabbaa
babbabbbbaabaaaababaaabababbbaaaaaaaabaaaabbababaabababbabbabbbabbabbbaa
aaaaabaaaaaaaabbabbabbaa
aaababbabbbabbbbababbababbbbbbbb
baaabbaabbbbabaaabbbbabbbbababbb
bbabbbbabbbaabaabaabbbabaabaaabbbabaabbababbaaaaaaaabbbb
bbabbbabaabaabaabaaabbba
ababaabbbbaaabaabbaababaaaaabbaabbaabbba
abbbaaaababababbbbbbbbbababbbabb
aabaababbbaabaaaabbabbab
abaabbbabaabaababaaabbbb
baabbbaaabbbbbaabbbabbabaaaaaabaaabaabbbbbaabbaaabbaaaab
bbabaaabaabbababaaabaabb
ababbabaabbbabababbbbaba
abaababaaaaaaabbabbbababaabababaabaabaaa
babababbabbaaaaabbbbabbbaababbbbbaabaabaaabbbbabbabababa
abbaabbaaababbaabaabbababaabaabb
abaabaabbabbabaaabaaabaa
aaaaaaaaaabaabaaabbbababbababbbbaababbaaaaaabbabababbabbbabaabab
bbaaaabaabbbbbaaaaabaaabbaaaabbabaabaaab
ababaabbbaaabaaaaaabbbab
bbabbabaabbaaabbbabbbaab
aaaabbbbaaaabababaabaabb
bbabaaabaaaaabbaaaaabbba
abbbababaabaababababaaab
bbbaaaababaaabbbbabababaabbaabbb
aabbababbaabaababaababaaababaabbbaabbbaa
ababababbaaabbaaababbabaababaaaa
bbaaabbbbbabaabbaabaabaaabaaabaaabbaaaab
bbaababaaabbaaaaaaaaabaaaaaaaababababbababaaaabaaaaaabbb
aaaaabaababbbbaabbabbabaaaaabaabaaaaabbabababbbbabbbbaaa
abbabaaababaaaabaaaaabbbbbbbaaaa
aabbaaaaaabbbaabaabbbbaa
abaabaabbabaaaaabbbbbabbbbababaa
abbaabaabbbabaaaaabbaababbaaaaababbbaaab
bbaabbabaabaabaabaaaabaabbabbaaababaaabb
aaababaabababbbabbbaaaabababbbaa
abaaabbababbbababbbaabababbababb
aababaabaabbbabaabbaaaab
abbabaaabaabbababaabbbbaabbaabbabbbaaaaa
aaabbabaaaabbbbbaabbbaabaaababaaaabaaabbbaabbaaa
babbaabbababaabbaabbabbb
aaabbbbbbbabbbaabaabbaba
abaaabbaabaababaabbaababbaababbaaaabbabb
bbabbbbbaababaabbaabbbbbabbbaabb
baabaabaabbabaaabbaaababaabbaaab
bbbaabababbbbbaaaabbaaaaaabbbaaa
aabaabbbaaabbbabbbbaaabaababababbbabbaabbbbbaababaabbbba
abbbbbaaaaabaabababaaabb
bbbabbbbbbaaaabbabbaaaba
abbabaaaababaabbbaaabbbb
ababbabababbbaaaababbbaa
bbbabaaabbaaabaabbabbaaa
babbaabaabbaabaaaabbabbb
babaaaaaabaaababbababbabbbbbaabababbbbbb
baabbbabaaabaababaaaabba
abbabbbbaabaabababbbabba
baaababbbbaababaaabbabaabbbaababaabbabbababbbbab
abbbbaababaaabbabbababba
bbaabababbaaabbbabbaaaab
baabbaabbbbababaababaaaa
bbabaaaabaabbaababbbaaab
baaaaabbaababaababbaaabbbbaaaaaa
bbabbbbaaabaaabaabbbbabbababbaabbaabbbbb
babbaabbaabbabaaaabbabbb
abaaababbabbbaaabbbbbbbb
abaabbbababbabaaababaabbbbaaabbaaaaabbaa
aabaabbbbbaaaabbaaabaaaa
ababbbbaabaabbbabbbbbabb
aabbbbabaabbbabaaaabbbab
bbabbbbaaaabaababaabaaab
aabbbbbbbbaaabbbbaabbaabaababaabbbababba
abaababbabbabaaaababbbba
aaabbbbbbbabbbbabbbbbbbabbbbbbbaabbaabbabbaabaabbabaabaa
baaabaaaaaababbabababbbb
bbaaaabbaaaaaabbaababbaa
aaaaababbabbbaaabbabaaaaabbbabbbbabbbbab
baaabaabbabbabbabbaaaaaa
bababbbabaaaaaabbaaaabababbbaabbbbbaaaaa
abaaaaabbaaaabaabbbbbbaabaaabbaababaabbb
bbaaabbababbbaaabbbbaaba
babbaabbabbbbbaababbbbab
abaabbbbbbaaababbabababbbabbabababbbabbbbaaabbbb
babbabababbbbaabaaababaaaabaabba
abbabbaaabaabaaaabbaabbabbbaaaaa
bbaaaababbabaaabaabbabba
bbabaaabaaaabaabbbbaaaabaabbbbaa
bbabbbbbbbbbbbaaaabbbbbaabaabaaa
bbbbaaabaaabbabaaaababab
babbbbaabaaaaabbbbaaaababbabbbbbaababbbabbababbbbaaaabba
aabbbbabbbbbbaaaabbaaaaa
bbaabababbabaaabbabbbbab

1000
2020/inputs/day2.txt Normal file

File diff suppressed because it is too large Load diff

1728
2020/inputs/day20.txt Normal file

File diff suppressed because it is too large Load diff

33
2020/inputs/day21.txt Normal file
View file

@ -0,0 +1,33 @@
lfqhssm pcxzx jrs rxhv mhtc dvc jvd ttvtr srvzpc thzbt jfkhrp zxstb tkpqpb lcplblp jflxtnp jnqgtrq zdfl kdxht dfxfqs qdths cnzz drcj stjr jtrrnz rlh ljfsmv ptrj rdnsghf kllgt dgtxv zpxvch rfnzl xszpg qmbn nfff cxzrtx fvmzmrd szsdbv mcmrzs hfdxb slgnk szsmh zngdbgf hgndp pxxjmds pdbcdp zczv hvkvz mhzbkt qjhmth gmstmh tvmpdqp ztbgdkd xdfjsm hbfnkq fxzgqn ljclf mpzq mxsbp cjdcn jgjx gnbxs sqrk tlqtz mdghb npvv nkrpv thvbm dfdr srgh xkvgj fmj smxk khqvlxn nkvdvs tnd fqgl dhlmfn rzvj ljvx (contains dairy, sesame, nuts)
tfshb zxstb thzbt dfxfqs prkc qxst nzdmcf mxsbp cjdcn hfdxb hbfnkq dfdr fdknsl nvrndt hhrdrl mcmrzs nkrpv szsdbv jgkvfl slfpcp dvc nfff bmttzd snlhkm nkvdvs sdts qftpx thd qxc zpxvch rdnsghf zpp jrnqx cqvqlp tvmpdqp lbzg kcvzks grzdp zhdtt mdghb zdfl qmbn kllgt mhtc gnbxs mk fmj jmc smxk sqrk fbkpkv mhzbkt nltxdhr hjnx thtsvz fstx ffmq dvffd jfkhrp mdlr rgpvhb (contains nuts, eggs, dairy)
txvg zjlxft fstx mk rkrqrk flrn cqvqlp ptrj pxxjmds tlst jxj fmkmrk xxgd lfrt mhtc drcj njpx fqgl kllgt hfdxb nltxdhr ztbgdkd cnzz qxc hjnx pcxzx ljclf gqsnd svbvqlq ljvx jfkhrp ndqgjs jrs cgrjf thd jrnqx slfpcp tcxz bfrj bdclf jtnfbh zxstb rlh lbzg jvd thvbm nvrndt jtrrnz cxzrtx khqvlxn vnrnn slsdck mhzbkt jlfmg zdfl gnbxs bmxlldv sstvx (contains dairy, soy)
pxxjmds qdths mjpqlvj szsdbv rknm tnd sdts fstx sstvx zxstb lgfmt pdbcdp thtsvz vxmvk mdghb jrs rfnzl smxk rrlszk jgkvfl ljclf gmstmh lfrt fxzgqn hbfnkq tlqtz crrgj rtpgqd jmc rxkt zpp qnvml lgcrd zpxvch ltnqh fdrgkrx gqsnd grzdp ljvx zczv mhtc jnqgtrq srgh qlcvd cgrjf jrnqx hfdxb mxsbp srvzpc kpn lbzg qjhmth njpx crbbk jlfmg bmxlldv hkchvb dxbmdj zpvkl dvffd kllgt srj sqrk jvjtrxt ndqgjs rxhv jflxtnp jvd ffmq bghtk bhrv cxzrtx fnfm zvmnd xbjqr kkdzxr bdsxbd mxprt cqvqlp pbqn cmfjr (contains wheat, nuts, sesame)
hgndp qnvml mhtc krgmpn zpp fdknsl gqsnd xhxrg tlqtz hvkvz ltnqh tkpqpb bmxlldv srvzpc slgstf fvmzmrd ttvtr jtrrnz dgtxv jrnqx zhdtt lgfmt kclh xxgd jnqgtrq hbfnkq kllgt slfpcp xszpg hfdxb ljclf rxhv bfrj zxstb ztbgdkd jtnfbh hqqzdc dfdr mtlcq lgcrd xkvgj ndqgjs rxkt lfqhssm dctgv ljvx zczv szsdbv tfshb bghtk zjlxft (contains fish, soy)
mhtc zpp qdths slsdck rxhv fmj hbfnkq cqvqlp kpn jlfmg nnxxsjh rlh flrn slfpcp ljclf gmstmh srgh jtrrnz tlst lvtrmn hhrdrl sstvx nkvdvs dgtxv zczv vmfhv jrnqx fnfm bdclf slgstf tlqtz cgrjf stjr krgmpn tkpqpb rrlszk bmpt ljvx dvffd tnd gqsnd dfdr ztbgdkd npvv svbvqlq rgpvhb qpktd sdts fqgl qmbn gvtvmn kdxht hfdxb rxkt kcvzks kllgt rzvj slgnk qxst khqvlxn qxc rtpgqd szsmh qnhvn tzxmtx fdrgkrx vxmvk kkmvg gnbxs (contains wheat, dairy)
lfqhssm hhrdrl tcxz srvzpc hbfnkq jrnqx kcvzks sxtfvrhl zhdtt dvc jvd rkhs rkrqrk fbkpkv vmfhv rltxnqf rgpvhb bhrv slsdck dhhf sqrk mxsbp dvffd slsqp tlqtz nltxdhr tvmpdqp cxzrtx crbbk jfkhrp zxstb mk stjr fqll mhtc dctgv xhxrg rdnsghf hfdxb xqnrcg xbjqr slgstf qmbn qxst ztr kllgt hvkvz fdknsl xszpg npvv nzdmcf szsdbv zgcncf qpktd bdsxbd zpvkl xdfjsm ncgn ttvtr jrs gqsnd pdbcdp hgndp bmxlldv zmdl ljvx rfnzl txvg qjhmth (contains dairy, wheat, nuts)
hbfnkq kpn mk hfdxb szsmh kkdzxr rfnzl jflxtnp lgfmt sstvx qxst dhhf npvv zngdbgf nnxxsjh mjpqlvj jfkhrp ljvx krgmpn ztbgdkd smxk jtrrnz bdclf vhchv zpvkl gnbxs nvrndt zbkjjkz qjhmth jmc pdbcdp fmj rkrqrk mpzq kllgt gfgmz crrgj dfdr jrnqx dnjt lcplblp nfff jgkvfl fnfm dctgv mcmrzs slsdck mxprt szsdbv dfxfqs mhtc hvkvz (contains wheat)
bghtk hkchvb nkrpv rlh jrnqx zvmnd hfdxb hbfnkq qxst mdghb jfkhrp jlfmg lbzg tnd ljvx krgmpn ptrj xdfjsm tlqtz slsdck dgtxv fdrgkrx xkvgj qdths szsdbv kkmvg mhtc nvrndt fvmzmrd mhzbkt jnqgtrq pbqn nnxxsjh zxstb ljfsmv nzdmcf cnzz fmkmrk dfdr jtnfbh kllgt ttvtr (contains nuts, fish, soy)
lgcrd ljvx mhzbkt zpp bdsxbd hjnx jnqgtrq fvmzmrd jtrrnz rxhv zvmnd xszpg mhtc zbkjjkz hbfnkq lvtrmn qdths gnbxs flrn dctgv txvg hfdxb qjhmth sdts zgcncf nltxdhr tcxz jlfmg jrnqx lcplblp fmj cgrjf mpzq gvtvmn jflxtnp jgjx qlcvd mjpqlvj kllgt cnzz jmc zjlxft jgkvfl slgstf ttvtr fqll pdbcdp srgh vxmvk sxtfvrhl rknm rdnsghf bmpt kcvzks szsmh srvzpc zmdl rltxnqf dhlmfn (contains dairy, peanuts, soy)
zpvkl fdknsl xkvgj fvmzmrd lfqhssm txvg bdclf hbfnkq jgkvfl bmxlldv qxc dhhf xxgd gvtvmn hvkvz srgh dhlmfn zjlxft svbvqlq jtrrnz rgpvhb jtnfbh mhtc nvrndt sdts bghtk gnbxs kkmvg gfgmz dgtxv mxprt fdrgkrx jmc jvjtrxt fstx sqrk hgndp mhzbkt jflxtnp szsmh zvmnd gqsnd crrgj tnd vnrnn srj vmfhv rfnzl hqqzdc slgnk szsdbv thzbt slgstf ljvx kllgt nltxdhr zgcncf jrs kpn fxzgqn dnjt jnqgtrq jrnqx zpxvch slfpcp ltnqh zxstb dctgv sxtfvrhl qdths (contains wheat, nuts, peanuts)
tfshb cxzrtx tvmpdqp sqrk qlcvd rltxnqf gnbxs bdsxbd lbzg fmkmrk ffmq dhlmfn jrnqx crrgj ljclf lfrt stjr jvd hbfnkq hhrdrl dvc srvzpc flrn bfrj kllgt fdrgkrx zpvkl sdts ljvx qnvml npvv nltxdhr pbqn vhchv zmdl nfff pxxjmds xdfjsm jrs hkchvb svbvqlq hfdxb rlh jxj vmfhv zxstb kkmvg bghtk mxprt (contains fish, nuts, peanuts)
zdfl fqll ljfsmv dfdr ljvx slfpcp jgjx mxsbp mpzq smxk stjr hjnx jmc kcvzks slgstf bfrj bdclf hqqzdc zczv mk rdnsghf jnqgtrq ltnqh cmfjr xqnrcg szsdbv hhrdrl dgtxv gnbxs pcxzx ptrj zjlxft dvc tzxmtx mjpqlvj fvmzmrd bmpt ztbgdkd tlqtz tlst kllgt zmdl gfgmz sxtfvrhl hfdxb bmxlldv vnrnn ncgn kkmvg nltxdhr ztr hbfnkq drcj dhlmfn cqvqlp rknm vmfhv nfff npvv mdlr jrnqx cjdcn sqrk krgmpn mxprt gmstmh xxgd mhtc nvrndt fmkmrk zhdtt rkrqrk (contains eggs, sesame)
cmfjr qlcvd bhrv zjlxft cnzz crbbk qnvml dfdr zxstb ljvx nkvdvs szsmh tkpqpb kllgt kcvzks fqgl tlst hvkvz srj fvmzmrd lcplblp qnhvn jlfmg qftpx slgstf tfshb drcj xxgd kkdzxr rxhv dvc vtbxs slsdck nkrpv gmstmh bmpt zmdl vnrnn dgtxv bghtk mdghb vhchv lfrt ptrj dnjt gfgmz vxmvk smxk bdsxbd thvbm qxst tlqtz zdfl dhhf mk dhlmfn rrlszk njpx sxtfvrhl hfdxb ztbgdkd zczv zhdtt xkvgj txvg slgnk lgfmt hqqzdc tvmpdqp rlh ffmq jrnqx gnbxs pxxjmds mhtc lvtrmn (contains sesame, eggs)
zvmnd kkmvg jgkvfl pbqn grzdp svbvqlq gnbxs mdlr rkrqrk szsdbv kllgt bmttzd rzvj qpktd vhchv srvzpc ncgn crbbk hfdxb qftpx srgh mpzq njpx dhlmfn hjnx mhtc srj tkpqpb ndqgjs jvjtrxt jtrrnz jrnqx sxtfvrhl snlhkm bfrj khqvlxn mhzbkt dgtxv jrs slsqp cxzrtx bghtk rtpgqd zczv nfff zjlxft zxstb xbjqr cnzz dfdr dxbmdj lcplblp qnhvn lfqhssm bdclf ffmq hbfnkq mjpqlvj gmstmh fxzgqn jnqgtrq lgfmt jflxtnp (contains peanuts, sesame)
crbbk hjnx thd ljclf ttvtr xkvgj slgnk srvzpc rfnzl tvmpdqp txvg fqll cjdcn mpzq crrgj vmfhv zhdtt sstvx ztr zxstb ljvx dctgv kcvzks jmc zngdbgf cgrjf kkdzxr rknm jnqgtrq xhxrg zjlxft cnzz xxgd lbzg dfxfqs jgjx jrnqx gmstmh dfdr lfrt snlhkm khqvlxn gnbxs gvtvmn zgcncf svbvqlq mhtc hfdxb dhhf hbfnkq bmttzd jvd (contains sesame)
jfkhrp dhhf slsqp jtrrnz mjpqlvj mdlr zmdl sdts mpzq tzxmtx bhrv nvrndt nzdmcf flrn tkpqpb krgmpn bmttzd zngdbgf nfff zxstb jrs khqvlxn jflxtnp tfshb slgnk ltnqh rdnsghf hjnx fstx hkchvb xbjqr fdknsl ljvx rlh kkdzxr smxk hbfnkq jgkvfl thzbt mhtc xdfjsm lfqhssm hhrdrl zvmnd gnbxs srgh rtpgqd sqrk jrnqx gmstmh rfnzl xhxrg njpx qmbn rknm fqgl rgpvhb lcplblp qxst qjhmth bmxlldv fvmzmrd ndqgjs zjlxft qftpx qpktd jmc mcmrzs slgstf rkhs dgtxv hfdxb nkvdvs (contains peanuts, nuts, eggs)
vhchv jtrrnz kkmvg bdsxbd zxstb kcvzks rxkt gmstmh sqrk mtlcq gnbxs lcplblp qftpx qnhvn drcj zmdl tvmpdqp nfff ljvx mhtc cmfjr dvc kllgt txvg qnvml slfpcp stjr pdbcdp fqll zpcqb slgnk zczv ljfsmv jrnqx fmkmrk rrlszk rlh xqnrcg dctgv srvzpc flrn zgcncf vtbxs lvtrmn hbfnkq xxgd hqqzdc jlfmg snlhkm mcmrzs xhxrg fmj cqvqlp bfrj srj sxtfvrhl (contains nuts)
nnxxsjh slgstf srj mhtc prkc njpx thd tzxmtx hkchvb fqgl zxstb mdlr qxc fmkmrk krgmpn bmttzd kllgt zgcncf cmfjr nzdmcf rdnsghf ptrj mxprt gfgnx lgcrd txvg snlhkm ljfsmv mxsbp vxmvk ffmq bdsxbd stjr pcxzx qnvml kkdzxr jxj jrnqx sdts dctgv dvffd fdknsl cnzz flrn qdths crrgj fstx fbkpkv zpvkl slsdck hqqzdc jflxtnp rxkt kclh bhrv gfgmz dfdr jvjtrxt lgfmt pbqn ljvx bghtk jvd xdfjsm kkmvg gnbxs ttvtr bfrj tlst jgkvfl cxzrtx hbfnkq (contains dairy, nuts)
jgkvfl bhrv ztbgdkd mcmrzs mk thvbm gnbxs xbjqr kllgt thd sstvx zxstb cjdcn jnqgtrq hbfnkq slfpcp jrnqx szsdbv hfdxb rlh xdfjsm lvtrmn kcvzks rknm mhzbkt hhrdrl tvmpdqp ptrj slsdck lgcrd zhdtt bmttzd slsqp lcplblp rrlszk slgstf rzvj crrgj hqqzdc gqsnd jtrrnz ljclf zpp crbbk ndqgjs mhtc tnd qlcvd npvv srj smxk rkrqrk hgndp (contains sesame, dairy)
rlh fdrgkrx mxprt jvd thd jflxtnp mtlcq rgpvhb rdnsghf svbvqlq flrn zhdtt zjlxft jtrrnz mjpqlvj hqqzdc mdghb mhzbkt bmpt lgfmt crrgj tkpqpb slgnk smxk lgcrd rltxnqf bhrv qdths vnrnn slsdck zngdbgf fstx jrnqx hbfnkq cgrjf gnbxs bmxlldv xdfjsm ljvx ztbgdkd dfdr nvrndt sxtfvrhl qmbn snlhkm nkrpv bdclf fqll qjhmth zvmnd tlst tcxz ttvtr xqnrcg grzdp mhtc jnqgtrq tvmpdqp dhlmfn rxkt xxgd kdxht nzdmcf xbjqr ndqgjs ptrj dctgv thvbm pcxzx zgcncf zdfl zmdl dxbmdj cxzrtx hgndp nfff fmj hkchvb bghtk kllgt cqvqlp fqgl zxstb txvg (contains eggs, dairy)
zpcqb crrgj rkhs jtrrnz lvtrmn mhtc vtbxs thtsvz vhchv rxkt lfqhssm ljvx xqnrcg dvc hkchvb thd sdts nkvdvs jvjtrxt drcj rxhv bhrv slsdck tlqtz gvtvmn cnzz ndqgjs qxst hbfnkq pcxzx kllgt hqqzdc fnfm smxk mxsbp bmpt jgjx tzxmtx jtnfbh jflxtnp khqvlxn zngdbgf slfpcp szsmh ptrj zjlxft fdrgkrx kclh dfdr rknm fbkpkv zpp jrnqx nkrpv vmfhv mdghb zgcncf qlcvd srgh xxgd mk kpn gnbxs kcvzks dnjt rlh hjnx kkmvg rrlszk lbzg tfshb npvv bmxlldv zxstb zhdtt rkrqrk zpvkl zbkjjkz zvmnd xdfjsm (contains eggs, fish, dairy)
mhtc hbfnkq jxj bhrv ljclf hfdxb jflxtnp njpx tzxmtx khqvlxn prkc cnzz bdclf kllgt cgrjf vxmvk xbjqr qnvml rltxnqf ljvx rkrqrk nltxdhr rlh dfxfqs gfgmz ndqgjs jrnqx qftpx fvmzmrd vhchv snlhkm srj ljfsmv dgtxv xxgd kclh dvffd szsdbv lgfmt zpp rxkt hjnx mxsbp thd krgmpn sqrk fbkpkv zxstb kpn hhrdrl dvc mpzq lbzg qdths ltnqh lfqhssm gvtvmn mhzbkt zngdbgf jlfmg (contains wheat)
jtnfbh mdlr cqvqlp kllgt hfdxb cmfjr vmfhv mjpqlvj rrlszk zpp jmc nfff srgh jrnqx xszpg qnvml slgstf hbfnkq drcj kpn rlh lbzg dvc mhtc hvkvz zdfl fbkpkv cnzz fqll zxstb dfxfqs vxmvk dhlmfn pcxzx ztr ffmq jvjtrxt cjdcn sstvx xkvgj jlfmg gnbxs bdsxbd cxzrtx kkdzxr snlhkm pdbcdp (contains sesame)
jrnqx qnhvn khqvlxn jlfmg kdxht rgpvhb cqvqlp qdths xszpg lgfmt ndqgjs grzdp hfdxb rkrqrk nltxdhr npvv krgmpn pbqn mhtc tzxmtx kclh dxbmdj fvmzmrd srgh mpzq kkmvg pcxzx fstx gnbxs slgnk jrs ttvtr ljclf nkrpv dvc bfrj kllgt rkhs thzbt qnvml fdknsl cmfjr hhrdrl hgndp xqnrcg jnqgtrq hbfnkq drcj tkpqpb gqsnd fmkmrk thd slgstf rknm nfff qxc vhchv kpn ljvx ptrj jflxtnp flrn qjhmth lvtrmn nzdmcf tlst fqll (contains sesame, dairy)
flrn rltxnqf cqvqlp gqsnd bghtk krgmpn jlfmg hfdxb xbjqr zjlxft fstx ljvx kllgt qxc npvv jxj jgjx srgh cmfjr mhtc dhlmfn sqrk svbvqlq tfshb zxstb vmfhv hbfnkq jmc jvjtrxt xkvgj kkmvg cxzrtx sstvx stjr ffmq thtsvz jrnqx zbkjjkz tkpqpb (contains nuts)
xhxrg hbfnkq kllgt hjnx mk nkvdvs dvc jnqgtrq lgfmt mhtc dxbmdj bdclf grzdp qnvml ljfsmv cqvqlp kclh rrlszk xxgd xbjqr thvbm smxk zbkjjkz fbkpkv rkhs mtlcq qxc gnbxs njpx bhrv snlhkm ljvx jrnqx zpcqb zxstb tcxz thd vxmvk slsqp ljclf txvg krgmpn jflxtnp rgpvhb (contains sesame, fish)
ljvx thvbm grzdp dfdr tfshb dgtxv ztr dhhf gvtvmn ndqgjs mdlr rlh zdfl zngdbgf zxstb mhtc rknm zpxvch jfkhrp hfdxb mjpqlvj nnxxsjh njpx lfrt nzdmcf jnqgtrq gqsnd gmstmh hbfnkq lcplblp jtnfbh khqvlxn sxtfvrhl slsdck crrgj jrnqx rrlszk thd slfpcp zvmnd mpzq pbqn hgndp stjr txvg gfgnx cjdcn xszpg kllgt mhzbkt kpn rfnzl (contains soy, eggs, dairy)
dvc tkpqpb vtbxs zbkjjkz bmxlldv pbqn rknm bhrv jflxtnp jmc kclh zvmnd dctgv hfdxb sstvx gnbxs zdfl hhrdrl tfshb mxsbp rgpvhb qftpx npvv slsqp dgtxv hjnx mhtc hqqzdc mxprt szsdbv xdfjsm gfgnx xhxrg pdbcdp qmbn zxstb jtrrnz thvbm ndqgjs svbvqlq gvtvmn drcj fvmzmrd zhdtt bfrj cjdcn zpcqb zjlxft slgstf rdnsghf lbzg cgrjf lgcrd hbfnkq ljclf rxkt thd rrlszk fdrgkrx smxk kpn qnhvn ttvtr bghtk jfkhrp thzbt jgjx ztr snlhkm jrnqx flrn pxxjmds njpx grzdp sdts zgcncf jrs mjpqlvj ljvx fmj dxbmdj jgkvfl (contains fish, eggs)
jrs xhxrg ljvx hbfnkq dfxfqs zpp mhzbkt mhtc lgfmt bhrv zpxvch dxbmdj kllgt ttvtr dctgv dfdr prkc gnbxs kdxht ffmq qpktd fvmzmrd gfgmz stjr vhchv thtsvz vnrnn kpn zxstb sstvx hjnx xxgd krgmpn qftpx rtpgqd thvbm fstx jrnqx tzxmtx ncgn svbvqlq slgstf rdnsghf qmbn tvmpdqp hgndp dhlmfn xkvgj jxj (contains wheat, nuts, dairy)
cgrjf hfdxb vtbxs qpktd zngdbgf bhrv kclh jvd zdfl nnxxsjh nzdmcf fmj cqvqlp zmdl kkdzxr xqnrcg rzvj ljvx thzbt nkrpv lcplblp kllgt rlh tkpqpb dxbmdj mhtc sxtfvrhl tzxmtx thvbm slgstf zpvkl zxstb txvg jflxtnp hbfnkq ljfsmv zpcqb jmc jrnqx dvffd jgkvfl xszpg dgtxv cxzrtx khqvlxn fbkpkv zpxvch tfshb slfpcp lgfmt smxk dnjt jfkhrp bdsxbd bfrj pxxjmds gfgnx drcj (contains dairy, soy, fish)
slgnk qftpx hfdxb qjhmth nfff fmkmrk qlcvd tlst fxzgqn ndqgjs lbzg rxhv lfqhssm gvtvmn jtnfbh ltnqh tnd gfgmz ttvtr rdnsghf rkhs kllgt mhtc hbfnkq tfshb nnxxsjh mjpqlvj rrlszk hqqzdc fstx jvd mk lfrt thvbm kpn grzdp rkrqrk dhhf zngdbgf txvg njpx zxstb vnrnn krgmpn srvzpc nzdmcf mpzq bmttzd dgtxv hvkvz rtpgqd srj vmfhv jrnqx dnjt cnzz nkvdvs vhchv xszpg ptrj zpxvch qmbn svbvqlq kdxht kkdzxr npvv stjr fbkpkv xqnrcg slfpcp snlhkm jlfmg zhdtt bfrj thzbt mtlcq fnfm fmj xdfjsm zgcncf jmc pxxjmds gnbxs qxst dfxfqs (contains eggs, soy)
tfshb rxkt tlqtz fmkmrk mtlcq dxbmdj zxstb rdnsghf fnfm qjhmth zpvkl jrnqx njpx cmfjr svbvqlq mhtc hhrdrl ptrj cjdcn vmfhv gfgmz hfdxb ffmq nnxxsjh mxprt gnbxs zpcqb rkrqrk szsmh hbfnkq bmttzd cnzz fvmzmrd kkmvg zdfl kllgt zjlxft thd dfdr prkc kclh (contains wheat, dairy, peanuts)

53
2020/inputs/day22.txt Normal file
View file

@ -0,0 +1,53 @@
Player 1:
3
42
4
25
14
36
32
18
33
10
35
50
16
31
34
46
9
6
41
7
15
45
30
27
49
Player 2:
8
11
47
21
17
39
29
43
23
28
13
22
5
20
44
38
26
37
2
24
48
12
19
1
40

1
2020/inputs/day23.txt Normal file
View file

@ -0,0 +1 @@
326519478

561
2020/inputs/day24.txt Normal file
View file

@ -0,0 +1,561 @@
wwwnewnwwnwewswnwsenwwwnwnwwwnww
wewswseswnwwwwenwnewnwswenwsenee
sesesesesesenewsesesesesesesesesesesese
swnenewneneeeseeswnenweswsenenwnenene
eneeeenenesweneseneeeenew
neseneseewenewswnwsesenwwnenenwene
nwwsewwwnwnwnenwwwenwwwnwwnwswse
nwnenwnewnwsenwnwnwnwnwsenwwnwnwnwnwnwnwnw
seseseseseeseseseseswseseseseswswsenwse
eeweseseeeeenwneewweeseeee
seseeseseseseseweseseneseseseseseesee
seseseseeseseeweseseseneeseseesese
swwnwwwnwnwwnwnwenwnwnwnwwwnwwnwnw
eewsenwseneseseswseenwsesenwseesewsw
wswwwswswswwswswwwwswswweswww
nwnwnwnwwnwnwewnwnwnwseswewnwwnwnwnw
wwswswswswwneswswswwseswwnewwswswsw
swsenwswswswswswwsesweeswsese
eseesenwesesewweeeneeneenewenew
eenwswnwnwnwnwswnwnwnwenwwnwnenewsw
wweweswnwwweswswnwwwwwswwww
swneswwswswswswswseswswswnwswsweseswswsw
wswseseswsesenesesesesewseswseseswnesese
nenwnwwwnwswewnwwwnwwwswnwnwnwnwnw
seseseswswswsenwswswne
swswwnewneswswswswneseswsesese
seswseswseswswsenwseswsewswseswswseesw
wsewwwwwwwswwnewwwwwwwww
sesesesesesenesesesewseseseseseseseswse
enwseswswseswswswswswswswseswseswsesesw
nenenenwneenwneenenenwnwnenenenwswnwsw
enwseeeeeneswseewswnwnenewwe
eewnenwwswswneneeewweeseenesene
eswswnwnwnenwenwneswnwnwnwnenwnwnwnwne
wwseeesenwnwneeewwseweewneesw
seesenwneeseesweseeeeeseseseseese
wwwswswswwswswweswswwswswwswsww
nwnweseswswswswswswswseswseswswswswswsw
eneseneneneeenenenenwnenenwneeneese
senwsenenewnwseewnesesenwsesesesesew
neeeeneneneeneeneeeeweeneesene
swenwsweswsweseswweenwnww
nwnwwwnwwnwwwwwwwnwwnewswwnw
eesenweseeeeswsesese
swseseeseesenwseseseswseswseswsesesew
nenwnewwenenwwswseswesewnenwenwene
wwswwwnwwnwnwnwwwwnwwneww
seneeeeeneenwnwsweseeneeneeweee
nenwswnwswswnwnwnwwnwwnwnenenwnwnwesenwse
neneeswneneeeeneeeneeneneeneeswne
wswsenenwneseswswwnwwweseneswswsene
seseseseseseseswseseneseseswsenewsesesesw
wswseswsesenwneswnwsewwneeswse
swnwswwswswswwswseeswesweeneswswnw
swswneswswswswenwswwswswseswswseswswsw
esesewseeweswsesenwswswswneseswseswse
nwwneswswswswswnweeenwnenwnwnenesewe
seeseewseeseewseseeeseeeseese
newsenwseseseswseesenenewseseseseesesww
wneswswwswswswwswswwswswswswsewswsww
wesesesewewseseewwseseseseeseese
enenwnwnwnwnwnenewnwnwneswenwwnwnwne
seeeseseeseseeeseeeesesesew
swnwnenwnwswnenwnwenwnenwnenwnwnenenwnwnw
nenenenenewneenwneeswswnene
enwnwwnwnwnwswesenwnwswseeewewse
swwnwenenewwnwseeneswenwsewenene
seeseeweesenesenweeeeesesesee
nwnwnwnwnwnwneswwnwnwwnenwnwwsenwnwenw
wswswseseseswswswseneseseswsenenwswseswse
wwwsewwwwswwwwwnwwnewwww
wnwnwwwswewswwswwweww
nwswswswseseeseseseseseseseseseswnesese
eeeeweneneeneeewe
swswswsewswswswsesenwswnwseswswseeew
nwnwnwnwwnwswenwenwneswwnwnwnwnwnwswnwnw
nwnwnwnwnwsenwwnwnwwnenwnwnwnwnwnwnwnwnw
nwneswneswnwswenwneneeneseenewnwnenwse
neewswswswseneseneseswsesewsewswsesww
enwneneneneneneeeeneneseneneneneene
eneeseseeeeseeeeeeeeeswee
seeseeeseneseeeeesesesweseseswnwsee
newnesewswneewnwneeneeneseneenenew
ewsenwnwsweenwnesewnwseseseswsewsenw
ewseseseseseseseseeeeeeseeseewse
wwswswwewwnwwwwwwwwswwwnewsw
eeswneeswnwenwenweseeneesesesenwe
eswswswswnewwnwseswwseseneswnenenwswsw
sesesesenwsenwneseseseneswnenwsewwsenww
neeeeeneeeneseeneeeenweneee
nenwwswwwwwnwwwwwwnww
nwnenwnenwnenwnenenwnwnwnwnenwnwsenewnene
nwwwneswwswswswsweswsewswwswswswswswsw
nenwnwnwnwnwsenwnwsenwnwnwnw
seeeeeeeeeeeeeweesee
nwnwnwnwnwnwnenwnwnwsenenwnwnwnwnenwewnw
eenesesweeeseeneenweswseeeeee
neswsenewnenesenenenesenwneneneneneswwne
sesesewsenwseseseseseseseseseseesesese
seseseseesesesesesesesesesesenwseswsesese
enwswseesewsesesewnesesesewnwseseesw
seseswseneseseseseseseseseseseswsesesese
nwsenwnwnwswwnwnwnwnenwsewnwnewnwnwwe
wesenweswswneneewnenwswswswnwesew
seseseseeseseswseseseseswswsesesenwsesw
wnwswneeneswwnwwswenwnwswnwnenwnesenw
swnenenwnwnwnenwnwnwswnenenesene
neneewnesenenewnewsenwnenenwnwnenenenene
swewwnwwnwwnwwwnewwwswwnw
senwsewswesesenwnesesesesesesesweseswse
seseeeenwseeseseneesewseeew
wnweswnesenewwseswsewwnwwwnese
eeeeseeweseseneeseseeseseneesesw
senewesenewnwswwwnesenwewwnesw
nwnwnwnwnwnwwnwnwnwnwnenwnwnenwe
eeneewneesenenenenenenenenenenenene
sweeneneneswneeneneswneneswnenenwswene
wswwswswweswwswswwnesweswswwsw
eeeeneeenwneneeeeewnesenenenee
sweswswswswswswswswswswwnwswswswswswsw
sesewseseeseenweseeseeeseseesese
swnwswswseswseswswswseseseswswsesenw
sesewsesesenwseseseseseseewneseesese
swwswswswswswswswwswwwswswneswswswsw
eenwseeeeenwneeenwsewswseeswee
swswseseseseseseswseneswswswswseswswsesenw
wwswswnwewwwswswesw
neneneneenwswnenenwwnenwnenw
seswseswswsweswswswwnwswseswseswswswsese
seseseeweseenweseeseesweeneeese
swswwwwwwswwwswwwswwnenwewww
swwwewnewwwwwenewswwwww
eeenenesenwseeneeeew
wwwwnwswswswwwewwwwwwswwswe
seenwseseseseseeneseseeseswseseswsesese
sesewnwesenwnewseswwneneseswseswew
swswswswsweseswswseswswswseseseswswsew
eneenwneenwseeseneeeenwswweswsww
seewneseseseesesesenesenwsesewseeee
sweeesewneweweeeese
nwnwnwnenwnwnwnwnwnenwnwnwnwsenwnwnwnew
wwswswneneswswswswseswswswswswswewswnwsw
wwnwwwwswwnewnewwwsewwwwwnw
sewsesesenweseswsesewswseseneeswsese
seswswswswswswswswswswneswswswswswwsesesw
eeseenesenwsewseneeesenweswnweesw
swseesenwewneseseeseswswnewewnesw
nenesweeeenenewnwneeeneneswnewsene
swwseswsweswseswsesesenwseeswswseswsw
nwnwneswweswesenwnwnwwnwnwnwnenenwwwse
wwwwswwwwnwswwwwwwwewww
eseseneeseswwneweeswswnenwnwneswese
senwwnwnwenenenwsenew
swswswswseswswswneswswswswswswswswseswnw
seswsesenwswseseswseswswswseseswswswswsw
enweenenweesewneeeeeseeswseenenw
neneneneeseweeneneneeeneneneeene
esesenesenwseswseseswseseneseseseseww
eswswsenewseswseswenweswwnwseseswsenw
seseneseseseseseseseseseseewseesesese
nenenenenenenesenenewnenene
swswswswwswswswneswenewswswwswseswwsesw
nwnwwenenwsenwnenwwnenwsenenw
seeneseseesewsewnweneesesewesese
neseeseenweneeeneneweesweeenww
swsesenwseseseseseswsesesesesesesesesese
swwseneseswsewseseseneswseswswseswseeswse
nwnwneewnenwnwnwwwnwnwwnwswwswsese
wwewwwsweswwwnww
swnwnwnwnwnwwnwewnwnwneenwnwnwwswnw
swwwwswwwseneswswwswwwswwswwww
neeseseseseewsesewseenesesesesenenwwse
nwnwwnwnwnwnwnwnwnwnwnwnwsenwwnwnwnwnw
eeweneeeeeeeeeneseeeeee
enwwesweeeneeneneeeseneenenenew
swswsenwswwswweswwswwswswwwwswne
wewnwwnewnwwnwnwnwwnwnwwnwswwswnw
nenwneneneseneeneneeneeneeenenenene
nwwswnewsewnwwwwwnewwww
eneneneesenwneneeneeeswswnesweenwne
wwwwwwwwwwwnwwwwsenwwenww
swswnwesewwswswwwwswswwwwnewswwsw
wwnwwwwwwnwnwnwwwenwwnwww
seesenwseseseseseswswseswseswwnwseswsw
nwnwnwnwnwneneneneswswnenwnenwenwnwnenenw
sewwwsewnewnwnwsenwwnenwnwswnwnwnew
neneseeneeeneneneneeneenwneneneee
sweswewswwswnwnwswswswswsesweswnwwsw
wwnenwenwsenwnwwnwnwwnwnwnwnwwwnw
eneeneweeesewneneeeeneneeeee
swswnewswswswseseseswswswswneswseswswsw
wwnewwswnwewsw
neenwneeeswenweneseneeeneenenese
seswswnwsesesenwswseswseswseeswswswseswse
neneswswswswseswswwswneswswwswsweseneswne
sesewnwwnwnenwnwnwenwnwnewneenwnenw
wswsenwewnewewwswswwswswwswswwwne
senwnwsesesweswswnesewseseseeesee
eeswneneneeneenenenenenenenenenenene
swwseswswswswswswswneswswseseswnewswswswne
eswseswswswswswwswseswswseswneswswnesw
swsesenwwnwswsenwseseeswsesenenenwwse
seesewseseseeeseseseseeeeseeese
swseseswswneswseswswswseseseseswswswsesw
wwwnwwwewnwnwwwwwwwwwswww
nwnenwnenenenenenenenwneneswnenenenwswene
neseneneneseenwnenenenewnewnwnwnenwnww
wwnwweenwwwwwwnwnwwwswwwwnw
wnwwsenwsenewnewnwwnwnwwnwwnwww
wnwwwwnwnwwwwwnwnwwswwnwweww
wswswwwswswwswwwneswwseweswwe
seeneseeeseseweeee
senwnwnwenwnwnwswwnwnwenwnw
eneneeneenwneeswnenenenenewnenenee
swwweeseseeseeeneneseseseseeeene
seseeseseeseeseseseseneseseseseswese
neswsenwswsesesesesenwseseseseeseesesw
senwswnenwnenenenwewnwnwnenwnwnwne
nweenwswseswnwneseneseseswnewseswnwwne
swwwsewwwewwswwwwnwswwwwswnwsw
wnwnwnwenenenenwnwsenwneenwneseswnwswnwnw
neswnenenwneneenenenenwneseweswnenwsene
wwswneneswnwsenewneeneeeenenewsw
eseneeeseeeseseseswseseneewseewe
nwnenwnenwnwnwnwwnwsenenenwsenwnwneswne
wwwsewwwenewwsw
nwnwnenwnesenwwwwwnwnwwnwsewewnw
nwnwenwnwnwnwnwnwnwnwsewnwnwswnwnwnwnww
swnenwnewwnweswswenwnwnwsenwwnwenw
nwnwnwnwnwwenwnwwewwnw
swswnwnewnenenwseswnenenenenenenenwswesene
swswsweeswsewseswsesesesesesewswswsenw
wnwwswswwwswsewswneewswswswwneww
eweeeeweneenee
seeswseneneseneswsewneswsewswswwsese
nenesenwneneneneewneeneeee
wswswwsenewswswewnwwwswsw
wneenenwnwnenwnesenwnwnenwnwnwnwnwwnw
enwseewenwswswnwnwseswswnweswsesenwnw
nwswswsesenenwnwwnenesenwnew
neswwsewwneewswswnewswwnwnwwsesw
nwnenenenwneneeswnenenwnenwneswnwnwnene
neesewnwnwwwwnw
seeseseseweseneeeseesenewseseese
sweneneneneswsweeeesenwnenww
neneneneneneneseneneneneneewenene
seseseenweseseseeseseseseseenwse
seswswswswwwswwwswswswneswswswwnwswsw
swswwswswswnwswsweswswewswswswswweswsw
senenenewnwnenwsene
swnenwnwneswnwnwnenweenwnw
sewwwseseesenesesenwwswseesesenesese
nwnwsenenwnwnwnwwnenwnwnenwnesenwsenenenw
eeeseseeeseseeseeeenweseseee
neseseseswnwsenwsenwsesesenenwsewsesese
eeeeeneeseseseseesewesweeneesese
nwwwwswnewwwwwewenenesesewsenw
wnenenwnwnenesenwnwnenwswnwnenwneeswnwnw
seeswswnwseenesenwsesesenwwenwswwswse
seseseneseseseswseseseneseneseseseswwse
nwnwnwnwnweswenwnwnwnwswnwnwseswewnwse
eeswneeeneeeweeneeenweenenew
swneswswwwnwswwwswnewswseswwewswne
sesenwseseseseseseesesenwsesesesesese
enwseneswwswewwswwewwwwswnenwnww
wwnewwwwwwnwwwwnwsewwwnwwnw
nwswwwswwswwseswswswwwswwwswww
eewnwsweeeeeenweeeenesweseee
seeeseeeeeeseseeseseseseeesenw
neseswsenewseseeswswsewne
nwseseseseseseseswneesewseswswseswsese
swnwnwnwwnesesenww
senwnwwnwneweswnwwsenesewwnewwne
eenwsweeeseeeseseeeeseeseesee
eeseswneseeseeeswesenwseseeseese
eeeseseneesesweeseenweseeesewew
wwwswnweswwswswswswnwswnewseswswsw
nwwswnewseswswswnewwswewwwswseww
swnwswswwsesweswswswswswswswswswswswswse
nwswwswneswnwwweswwwseswwwwswwwsw
ewwnwswwnwnewseww
wwwwwsesewwwwnenwewwnwwseww
seseseesenweseseeseseenwsesenwseswnwswnw
swswsewswswwswnew
neneneneneneneneneswnenenenenenenenenene
wnwswwewwnwsewweneswwwwswweww
seseseseesewswseseseseenenesesesesese
ewswswwswwswwewswwwwnwwsweww
nwnwnwnwwsewnwnwnwnwnenwnwnwnwnwsenewnwnw
seseswswswswnweswsenesesesesenwsesese
nenenwnwwnesenesenwswnenwnwnweewnese
wwwswswswwwewwswwwwwwwswsw
nesewweenwswnesewsewnewnwenwsewse
swnwwwnwwewwewseswwswwswwsww
eseeeeseseeswneseeeesenwse
swswswsesweswswswswswswswswswnwswswnwswswsw
newwneswwwwsewwwswsewwwseneesw
senwswseneeswseseesenwwnesesesweseesese
nwenewneenesenenwneswnwnwsenwnwnenwwnw
eeeeneesweeeenwneweeeneeee
wewwwwwwsewwwwswwswwwneww
nenenwneswewswneneswsenesenew
nwneswnwnwnwneenenenwsenwnwne
nwseweenwnweweeeeswsesenwwee
enwseswwwswwwwnewwwswswswwswswsew
nenewneeneneenenesenenenesenenewnene
seswsweeseswswsewseswswsewnwswsw
nwnwnwnwnwnwneenwnenwnwnwnwnwnwwnwnwnw
eeeneeeeeeswneenwneeeeeswe
senwnenwnwnwnwnwnwnwwnwnenwneenwwnenwse
swwwnwnwwwswwnenwwnwneenweseseew
sesenesewsewneswsesesesenwwesenwsese
newwnwneewsewwswwnwnwwwnwwswnw
nenwwswwnwwwwnw
nenenenwneswneeeenwenenesweneswnenene
nwwswwswwwnesewwwwswwswse
sesenwseswswswseswswswswsw
eesweeeeneee
swewswswsesesweswswswseseseswswswsenw
swswswseseswsenwseseseswsweswswseseswsesw
wwnwenwnwwwsewwewwnwwnwwww
swswswwswswswwswswneswswswwseswswswsw
wewseseenesenwsenwnenwnwnwnwsenwnwnwnw
neneswnenwnenenenenenwneswnenwne
seswweswswseseseswseswswsweseswswswswswnw
swswswwswswwwswwwneswswseswswswswsw
eneneeweeseeeneneewe
nwnwnewseneneeneneseswswnenenenenwnwnenw
wneeeneneneneseneneeswnewneeweese
nwsenwnewnenwnwnwnenwsenenwnesenwnewnwnwnw
eesweeseeeeenweeeeeweeee
nwnwnwwwnwwwnwnewwse
wseseenwnwsenwnwnwnwnenenwnwnwnwswnwnwnw
wnwsenwwnwsewnwnewnwnwwwwwneww
nwsenwnenesenenenwnenenenwnwwnwwnenenenwse
neeseseenesewsewnwnesweeewwneeee
swseseseseseseseeeseseseseesesesesene
eweeeseeneeseeseeseweseesesw
wwnwsenwneswnenenwnenweseneneswnwswne
neewwnesenesenewenenenenenenenenenene
nwnenwnwnwenwnwwnwwswnwnenwnwswswsew
esenenenenenenenenenenenewneneneneseewne
senwseswseswswseeseswseseseseseswsesesese
wnwewwnwwnewsewnwww
seewwseseseseswswseseeseswswseseseswnw
seneseeswnwsesesesesenweesesenwwsee
wwwswwwwweswswww
sesesesewnwsenwsweseweseseeseseenesese
swwwseseseswnwwnenwnwswsw
swseseseesenwswnewsenwseswseseseswnesesw
swswswwwswewswwnwswwwwwswswswsw
neneswseswswnwneswnwswswswswsewswsesw
eeeewenenweeeeesenwseeeew
swseswseswswnwswswseswsweswswswwswswsw
nenenewnwnenenwnenwnenwnenenesenenenenenw
wwwwnewnwwsewwnwwwwwsewnewwnw
nwswswseswswswsenwseswswseswswswswnwsene
nenenwsweneneneeneneewneneewseswnenwne
seseswswseswseswswneswsweswnwenwseswswsw
nwneswnewnwnwseewewneeneswnwnwenesw
senwnwnwnwnwnwnwwswenwnwnewnenwwnwsee
nenenenenenenenwnenenenenenenesenesenewnw
eenenwenweeneneswneneesw
newwwwswnewwnwwwsewwwsewwse
enwnwnesenenwenweswsewseweswnewswse
nwnwnwnwnwnenwnenenwnwnenwnwnwswnwswnenwenw
nenenweeneneneeeneeeneneseenene
eswwsweswsweswswswwswswwsw
eeneneenenenenwneeneneneneeneeneesw
wwwswnwwewwnwnwnwnwnwnwenwnwwnw
swswnwswswswwwswswneswseeswswswswswww
eeneneseneneneneneswnwneeseneenenwne
nwwwseenwnwnwwsww
nwesesenwnwsesweeseseseeseeseesee
weweeeweeneeseeeswseeenwew
wswwwwwwwwsewwewwswwnenew
wewneeeeeesweeeeewswenene
nwwneewsesewswwwnwewwsewnwnwnw
seeseswenwneseeeeeseneseewnwwwnw
neneneswnenenenwnenenenenenenenenenenene
sewnwnwnwwwswnwewnwneswwnesenww
neswsesewswwsenwswnwnweswne
eneeneswneeneeweeeene
swnwsenwnwnwnwnwnwnwnwnwnwnwewnwnwnwnw
eseseseseseseeeesenwseseeseseewse
nwnwnwnwsenwwwnwwwnwnwnenwswnwnesenw
neswneswneseneneneswenenenenenenenewnenw
seenwenweeseswesweeeeeeeese
wnenweswwnwneneneenenenwnwesewnenw
neneneeswenenenenenenenenenwnenenenenene
weneeswnweeweeeseseeeese
wwwwwnewwwswnwwwwwwwwww
nwsenwsesesenwwwnwnwwewnwnwsenwnwnenw
nwnenwwsenenwesenwnwwsewnwnwnenewsw
nwnwnwnenwnwnenwswnwneneneenwsenenwnwnew
neneneneneneneneneneneneneseewnenenenwne
nenewnenwneneeseeewseenenwnenesesw
enewswswswswswswweswswwseswwswswenww
wswswswswswswswswswsweswswneneswswswne
wnwnwnwnwenwswnwwnwwwwnwnwwenwnwnw
seseseewesesenwseseeeseese
nwnesenwnenwnwnenwnwenenwnenwneswnwnenwsw
wesenwneswwswwswnewwswwwewww
sewewnwwewsewnenenwseswwwswweswsw
eswswswseswswwewwwwnenwwnewsww
wnwswwswnwneseswseswswsesesweeesesenene
seseswneneseswseseswnewseseseseswsesew
wwwnwwwwwwwneewnwwwsew
esenewsewseswnese
wnwnwswnwwnewnwwnwnwwnwnwnwwnwww
sewseseswseswneeswseseesesesewsese
wwwswewnwwwwenwnwwnwew
neneseeneeneneneeeneswwnwnwneneeenene
eeeeeneeeeeeeeesweeeene
wwwwswwwwwnwwwsewwnewwwwne
swsenwswsewneswswswswswswseneswswsw
nenewweneeseenesenwnenwwneeeseswsene
swswwwswswswwneswswswweswswwswwsw
sweneewwswwswswswneswswwnwwswwswse
wseneneswneswnenenenenenwenwnwswswsenenee
wswwswwwneswwswseswswswwwswswene
enweeeeeeeeeeeeeeeswee
enwseseeeeneeewenweeeesewe
nenwnwnenenwnwneenenwnwnwnenenwswnwnene
nenenewneswneeesenwneneneneewenenene
nenwneneneneneneneneseswnewneseenenenenew
nwnwnwnenwnwnwnwnwswnwnenwnwnwnwnwenwnenw
seeswnwseseseswseswseseswswswswswswsesw
nwewewnwnwnwewnwwsewnwwswweww
nwnwnwnwenwnwnwnwnwswnwnwnwnwnwnwnwnwnw
seseseneswwsweesesewseseseswseswwne
wseneseseeswswswsewseswswseswswwese
wwnwswwwnwnwsewwwenwnwnwww
wseswseseseeseseseseseseseseswsesesese
swsesenwswwswsweswneswswnwswswswswsesw
weeeenenenwseewnesweneeeneswnene
eenwnenenenenenenwneesenenesenenwnwsesw
swesweswnwnewenwnwnwwnwwenwwwnwnw
seewsenwswswswseseseseseseseswseswswsese
neeenewsewneneneseweeneneenenwne
nenwnwnwnwneeenwnenwnenenwswnenenwwne
swswwswswewswswwswswswswswswswswswsw
eseseseseseseesewenwseswseeesesese
nwnwnwsenwnenwnwwnwnwnwnwnwnenwnenene
esweenwneeeeseenw
sesenwseseesesesesesesesesesesesesesenw
wwwwnwwnewwwwwwwnwwse
swnwewnwneeswweneeeseeenenenenene
newenewnenesewswnenwsenenwsenwenenw
seneseseseseseeswseseseswseswnwswseseswse
nwwwwwwwwwwswwwnewwwnwwnw
eenwsweewswnwewnwseswswswwwsesw
eeneneneeneenenesweneneeeeenwne
nenewnenewneneneneneneseenenwnenwnenene
weeenweneeneeeneneeneeeeesee
nenwneneeesenwswsewnewwnesweenesene
wswnewneseswsenwsesewnwswsenenesewsw
swswswnwnwwswsewnenewnesesww
nwwenwnwwnwnwwnwseneenwwnwsew
seeseseseseswseseseseseseseswsesenwswnwnw
sewwwwswwewwwwswwwswwneswsewne
seneseneneenenesenwnenesenwnenewwenene
nenenenenenenwnesenenenenw
swwswswswswweweswwswswswwwwwenw
wwwsenwswswswwewwwswwwswwneww
wwwwwsewsewwswnwwnwwnwsewwww
eeneswswnwewweeneesweee
eneswswwswswswswswswwnwswwswwwswse
swseseseseswnwseseseseneswswswswsesesesw
swseseseseswsewswseseswsesenesesesesese
neeeweeneeenesweeneeewesenene
nwswswswseswswswseswsenwseseswseseswswsw
swneeseneneneenwenweeeeewnenene
wwsesweswnwwwwwwenwwsewnwnwne
swswseseswswsewswseeswsese
wwwwswswswwwswswnwewwswswwwsw
swwsweswwswewewwwswnwewwww
esenwsewsenesweseesenweesee
eneeeeseeseeeneswweneseenewwe
swnwswswswswswswswswswswswswswswswswswesw
eneeseeesesesenwwenwsese
neeneneeesweeneeneneeeneeenenenw
wsenwwwswwwwnwnewwnwnwwwnwwww
neseeneneneeneneneneneenweneeeee
nwneswwswwswnwenwwneneseeseseswwswnw
nwnwnwnenwnwnwewnwwsenwnwnwnwnwnwnwnwne
ewwnewseenwwnwew
nwnenenenenewnenwnenwneneenenwnenenwnw
nenwnwnewnwnwnwwsewsew
eseeseeeeeeseeeeew
seseeseeseseswnwsenwsesenwsesesesenwsenwse
wnwenwnwenwnwsewnwnewnwneswwewswsw
neneneneneneswnenenewnenwnenenenwnesene
sesesesesesesenweswseseseseseesesesesese
enweeeeeeseseeeeenweeeeese
sesesesenewseseneseseneseseseswsesesewse
seswswseweswnwswnweseswneswwswswswse
wsenwwnwwwwww
nwsewwnwwswwnewnewwwwwswww
newwwsewwnwnewwwswswwwswwwsw
sesenwneneswseswesewseseeneseeswnwnw
nwseseseeseswseseeeseseswsenwesenese
nwnwswswswewswewsewswwsw
sesenwseseseseneseseeswseneseswseswwsese
ewwwsewwwwewwnwwwnwwwww
eeswneenweeenwseeeesweenweee
wswseesweswswnwswwwswewswneswswsw
swseseseswsweswwseeseseswswnwsenweswse
seseswwseseswseswswseseseswnesesesesesesw
swneswswnewenwnesewnesewnenenwseeene
nwenwnwnwnwwnwnwnwswnwnwsenwnwnwnwsenw
wnwenwneswseesee
eeeenweseseeesweeeeeeenwnw
swswswswswswsesweswswswswnwswswswswswswsw
nwwewwwwwwewwwwwew
nenenwnwswnwnwnwnwnwnenenenwnwnwenwnenwnw
neewnenewnwnenenwsenwe
sesewsenwseseenwnwswene
nenwnwenenesenenewneswnenenenesenw
eeeseeesenweeenwenweeeneese
wnewswnwwwwwswwswseswswnewwwnew
sesesesesewseseesenesesesw
nenenesenenenenenenwneenene
swsesesesenesewseseseseswsesesesesesene
neeneeeneeneneenenweeeesee
senwnwnwnwenenenwnwnwswnw
swswneswswneswswwwswwswswswswswwsww
wwwwwwsewwwwwwwwwnewnwsew
eeseesesewneeeseseseseeeeesesese
neswnenwswswwswsenesweswwswswsweswswsw
swseswwwwnwswsenwwwwewwwnesww
neeseeswnwnwsweswe
wenwnwnewnwnwsenwnenenwnwsenwnwswnwnwne
eweswneeesesesenwneeseeesesesewsee
nwneswneenwnwnenwnwnwnenwnwnwnwnwnwnenw
swseseseswswneswnwwseseseseswsesesesesese
nenwnewenenwneswsenenenenwnenewsenenenw
nwnwnenwnwnwnwwnwnwnwnenwnwse
esesewsenweseseseeneseee
swsesenweeeeeenwneeeeesweeswe
nwnwnwwswewsewwwwnwsewwwnwwe
nwnwenwnwwnwnwnwnwnwwnwnwnwnwwwwwe
nwwesweewsesenwsenewnwswnwsenwswsesw
nesenenwnenenenenenwswnenenwnwnenwnew
seneewnwnesweseneenwnenewnenenene
nenenenwneswnwnenenwnwwenwenenenwnwnenw
nwnwenwnwnwnwnwnwnwnwnwnwnwnwnwswnwww
nenenenenenenenenewneswneneneenenene
swnwenwnwnwswnenwnenewwweseeseewswne
eeenweeneesweeeeeeeneeee
eeneeneweneee
wseswenewseeneenwneneseenwwesesw
nwnwnwnwnwenwwnwnwnwwwnwwnwnwnwwnw
nesewswswsesewesweswswseseswswnwnene
nwswswnwwnewwwsesesenwesewswnese
wwwsewnenwsewwswswswwnwwsewewsw
eswsesewseseneswwseesenenwnwnweswseswse
swswwswswseswswswswswswswswswswswswneswsw
nwneseseswwnesewsenwswnenewsene
wswswswnwswswswswswswswswsweswswseswnesw
senesenesewseeewseseswsesesesenesesese

2
2020/inputs/day25.txt Normal file
View file

@ -0,0 +1,2 @@
14012298
74241

323
2020/inputs/day3.txt Normal file
View file

@ -0,0 +1,323 @@
....#.#..#.#.#.#......#....##.#
..##..#.#..#.##.....#.....#....
....#..#...#..#..####.##.#.##..
...............#.....##..##..#.
##...####..##.#..#...####...#.#
..#.#....##....##.........#...#
.#..#.##..............#.....###
##..##..#.....#..#...#....#....
.#.........#..#...#.#.#.....#..
......#...#..#.##..#.....#.#...
.#...#.#.#.##.##.....###...#...
..........#.......#...#....#..#
.....##..#.#...#...##.##.......
...#.###.#.#..##...#.#.........
###.###....#...###.#.##...#....
...........#....#.....##....###
#..#.......#.....#.....##....#.
.##.#....#...#....#......#..##.
..#....#..#..#......#..........
#..#.........#.#....#.##...#.#.
#....#.#.......#.#.#.#.......#.
.#....#....#..##.##.#....#.#...
............#....#.#.#........#
#..#..#.....#....#.##.##.#....#
....#......#..##..#....#...#...
.............#.##....####...##.
#.##..##..##.#.....#...........
#.#...#......####.##..#.#......
.......#.#..#...#.#.###.......#
#..#..........#...#....#.......
###...#.....#....#...#..#...#..
...##..#.#.....#..#..#...#.#.##
#.......#......##...##......#..
.....#..#.....#......#.....##..
..#.....###......#.#..###....#.
....##........#...##.#..#..#...
#...#.##...##..#####...##..##..
...#.#.#.#.....#.#.........##..
.............#......#..##...#..
.#..#...##....#......#......#..
#.....#...##......#............
.#.#....##.#.#..##..#####..##..
..#..#.....#..#.##..#.#......##
.......#...#...#..#..##.#..##..
...#.##....#....#..#..#..#.....
.....#......#.....#.....#..#.#.
..........#####.#..#....##...##
....#...#...#....#.......#.....
#.......#........#.##.####..###
.#........#...##...#.....#....#
...#.............#........#.#.#
..##........#..##..##.##...#.#.
......##......#####.........##.
...##.....#.#.##....#####......
.#.#........####.......#.#....#
.....#..#.#.#.......##...#...#.
.....####.#...#.#..#...#..#...#
#..#.....#...#..#..#.#....#..#.
.....#.......#..#.##..#.#.....#
.......#..##..###......#.......
.......##.#.##..##.#.###...##..
..#.....#.....#....##.##.#..#.#
###.#...#..##..#....#.#.#..#.#.
#...#.#.........##........#....
#...#.#..###.....###..##.......
.....##..#.#...#.....#....#...#
##...##..#.#.#..#.#.##..#....##
.#.......#.#.........#.##..#...
....##.#............###.#...##.
#.....##.###.#..#....##.....#..
....#.#......##.####....#....#.
.....#......##.#...#....##.#...
##...#.............#...#.......
..#..#......#.#..#..#.....###..
....#...#.#...#...#.....#..###.
.....#.......#....#...#...#...#
..####......#.#..###...........
..........#....###.#.#.....###.
#.............#...#..#.###.#..#
.......#...#.#.#.#...##...#..#.
...#.#..#..#...###.#.#.........
#.###.#..#...#..#....#..#.#....
...#.#.##..#...#.#......###.##.
.##..#..##..#.....##.##....#.##
..##.........####..............
.#.#..###...#.........#...##.#.
....##.........#.........##...#
...#.#.......#..#...###.#.##.#.
..#....###......#.##...........
.......#...#.....#.#..#.#...#..
.##..#...#..#...#..#...#.#..##.
.##...#..##..##.#.#...##.......
.#.##.#...#..#..#..........#.#.
#.#.#...#......##...##..##.....
.##..#............#.##....#.#..
.##.........##..#.....#...#...#
##.#.#.#.#...#.....##....##.#..
#..##......#..##.........#.#...
...#....#.#.#.##.....##........
...#...#...#.##.#.#.#..#..#....
.......#..#.......##...#....##.
#.....#.#......#.......#.##.#.#
.##..#.....#.....#.#####.#....#
......#.#....#..............##.
##..#...........#.#.#.......#..
..##...###...#.#.........#....#
..##..#.#....##.....#.#.......#
....###...#.###....###.......#.
..#.#.....#..#..#...........##.
.###..#.#........#..#.....##.#.
#.##........###.#..#.....#....#
.#.#.....#.#.#..#...##.#...#...
#.#.#...#.#........#..##..##...
..#.##....###.#.......#.#.#....
.....#...##...................#
#..####.....###.#..........#...
#.##.........###.#........#..#.
..##........#.......#..###..#.#
##..##..#.#..#..#.....#.#..#...
....#......#....#...#.#.#..##.#
.##....#.##.#.#..###..#......##
###....###.##....##......###..#
.##....#..###..##..#.###...##..
.#.......##..##.............##.
.###..#.....#.....#.#.#..#...##
......##.###.#........#..#.....
#####.....##.#.#...#...#.#.#...
##..##.####...##....#...#.#...#
.#.##...#...#..#...............
##.##.#..#........#...#........
..#.##.#....#...#.#.###..#....#
.......#.#..#.....##.#.#...#.#.
..#.##...#...#......#...#.#.#..
.##.......##......#.....#......
.#....................#.#...###
..#.....#..##.#......##..#....#
.....#.#...#...........#.#...##
...#..#....#.#..#.......#..#..#
.#..#.#...#.#.#.....###........
.#.#.....#..#.##..#.#..##......
..##..#..#.....###.##..#.....##
.#..#.#...#.....#..#......##.#.
.##.##.#.#.#.#.#...###..##...#.
......#.##.#..#.##.#...#.#..#.#
..#.....#.##....#......#..#....
.#.....#..###.............#...#
.#.....#...#...#.#.#.#..#.#....
.#.....#......##.....#...#.#..#
.#.#......##...#......#......#.
##....#...#..##.#...#..#.......
....#.#......#.##...#.........#
#.#.##.#..#......#....#.......#
.#..#.##..#..#........#.#...#..
..#..#.#.#...#....#...#..#..###
....#....#..#......#..........#
#.....#.......#..#....#.#.#..#.
....#.#..###.#.....#.####......
##.#.#....##.#.#........#..#..#
#.#...#...#.#...##..#.#..#.#...
##.#......###.##.......#..#....
#..#...#.......##....#.###.....
.####.##....#..#..####.#....#.#
#...#.#..#.....................
..###..#...##.....##...........
..#....#...###.#.........##.##.
......#.....#....#.#....##...##
#..#.....#...#..##.....#....#.#
..#.#..#....##...###.#..##....#
#....#..#..#..#.##.##.....#...#
......#.#..#..##.#.....#.#..###
.....##...##..#...##..#...#....
##....#...#..#...##..#...###..#
.##.####..#......#.#..#.##....#
..###........###..#....##.#....
...#.....##...##..##..##..#....
.#..#.#..##..#..#..##.....#...#
##.#..##...#..#...........##...
....#..#..###.....#....#..#..##
......##..#....##........#.#.##
.#.##....##.#......#..##..#..##
.....##.#..#.#.##.##.##..#...#.
.#..##.#.....#####...#.........
....#....#...#..##.#.#..##...#.
...#..#...#............#..#....
....#.#.#.##....##.###..#.#....
.........#...###.........#..#.#
...........#...##.#..#.#.#..#..
#..#.###..#.#..#..##.....#....#
.#.#....#.#....#...............
...#.#..#.#..##.#.#.#.......#..
.#......#...#.####......#..#...
..##..#.#...#..#.......###.....
.#.....#.#..##....##.####.##.#.
.............##.#.#.....#..#.#.
#.....##.#...#.#.#.######.##...
.##...........#..#..##.####....
#.#............#....#.........#
..#.##.##.#..#....##....#..#.##
#...#.##..##.##.#.....##.#....#
##.#..##.###..#.#.#..........#.
...##...#..#...#.#.#.###.###...
#.....##......#...#.#...#......
#.#.#.#.#.#...#..#....###...#..
...##.#...#.......#..#...##.#..
..#..#..##.....#......##...###.
.............#.##...#.#.###..#.
..#.#.....##..#.##..#...##..#..
..#...#.##..###..........#..#..
#.##.##...###...........#....#.
#.....##...#.#..............#..
##..##.....#...#..####.#...##..
...........#......##.###..####.
#...#..##.##.######.....#.....#
#.##.........##.#.#....##...#..
.##.#.......###.#.....#.....###
###.#.#.#.#.#.##......#..#..#.#
....#.###...#....#.##...##.##..
....#..#.....#.#.#..#..##.#....
....#..#..#.....#.#..##........
..........#..##..##......##..#.
#...##.......#...##.#...###..#.
..#.#.##.....##....#..#.##...#.
.#.#.....#.......##.....##...#.
#......#.........#.#.........#.
.......#...##......#.........#.
..##..........#....#..#.......#
.......#............#..#.#...#.
#..#....#.#..#....##..#........
....#..###.##..#.#..#.##..###..
....###............##.#....#.#.
..#..#.##...#....#..####...#...
..#....#...#...##...#.#.#..#...
..#.........#.#.......#........
.........##.##.#..#.#...#.#..##
#.....#.#....##.#####.......##.
.#..#....#......#.##..#....#...
........#....#...........#...#.
.......#......#..........#..##.
.###.#......#..#.##..#...#.#...
.....#..#..###...........#...#.
..#...##....###......#....#....
...#.#..#.#.#......#.##.###.#.#
.##....#...#..#.#..#........#..
......##.###...##.#.#.........#
.#...#..####..#.#..##........#.
#..#...#..#..#.#...#..##...#..#
..###...###....#.#.#.##....#..#
.#.#....#.#.#......##....#..#.#
##.#.#.####....#........#....#.
...#......#........#...........
#.#............##......#.##....
..##.#...#.....#.#..#.#..#.#.#.
#.......##.....##...#.#.#...###
............#..#..#....#......#
.#.##...###...#...###..#.......
...............#....#...#.#.#..
#..##..##.###...#..##...#.#.##.
..#..#.......#.##......#..#..#.
#.....#............#......#...#
.###.##......##.#...#.#.##..#..
.#..##..#..#..#.............#..
#...#...##..##........#........
...#........#..###...........#.
#.#..#.#...................#.##
#...#.#..#.......##...###..#.#.
..####......#....#.#....#..#..#
....#...........#...#..#.......
...#..#....#.#.##...#.#.#.#....
#...##.#.##..#.......#.....#...
.##....#...#.#....#....#.#...#.
##.#...#.#...##..#..##...##..#.
#..#.#.........#.......#.......
.....##.....#..#......##....#.#
.###...##.#.#.#....#....#....#.
#.#.#.............#.#..#.......
#.......#..............#...#.##
.#.#...#....#.........###...#.#
..##..###..#...#...#.#....##..#
.#..#.#...#..#.....#....#..##..
##.......##....#....###..#.#..#
#.#.#####..........#.#...##..##
......#..#..#...#...##...#....#
#..#......#...#...#..###.......
...####.....#.......#.#...##.#.
......#..#.....##..#...........
#........#..#...#.....#...#.#..
..#.....#..#......#.#.#.....#..
..#.........#..##...#...#...#..
##..##......#.........#........
..#..#....#.##.#....###.#..#.##
..##..#..#.......###....#..#...
...#.#...#.....####.#..........
........#..#..#.#.....#........
...##..........#.#.#.....#..#..
..#....#.......#...............
.#..#.#.#.##..#..#.....#.......
#.##.#.#..#..............#.....
.#.#..#.....##..##....##.....#.
.##.#..#........##.##...##.....
#....##..#............#....#...
...............##.#...#..#.....
..#..##.##...#.#.....#.........
.##..#.#.#.##.....#.#.#..#..##.
......#####.#...#..........##..
..........##.##...#.....#.#....
..##......#..#.###..#...#.##...
.#...........#.....#.#........#
.#...#................#......#.
#...#.#..##.#####..##....#.....
...##...##..#.#..........#.....
##............#......##..##...#
###.#.......#..#...#..#..#...#.
.#..##.....###.#.#............#
##.###.#.........#.......#.#..#
...#..##..#.....#.......#......
......#.#..#.....##..#..##.....
...#........##..###.#....#..#..
..#...##.##....#.##..###......#
..#...#.....#.####.....#...#.##
..........##....###..#...#####.
....#.#.#.#.#.##.............##
.#.#.#.##......#......#....#.#.
.##...##....#...#....#..###.#.#

1136
2020/inputs/day4.txt Normal file

File diff suppressed because it is too large Load diff

805
2020/inputs/day5.txt Normal file
View file

@ -0,0 +1,805 @@
FFBBFFFLLL
BFBFBFBLLR
BFFBBBBRRR
FBFBFFFLLL
FFFBFBBRRL
FBBFFBBLLR
FBBBFBFRRR
FBFBBFFLLL
FBFBFBFRRR
FFBFFFFLRL
FBFBFBBLRL
FBFFFBBLLR
FBBBBBFLLL
BBFBFFFLLL
FBBBBFBLRL
FBBBBFBRRR
FBFFBBBLLL
FBFFFFFLLR
BFBFFFFRRL
BFFFBBBLRL
FBBBBFBRLL
BFBFBBBRLR
BFBBFFFLRR
BBFFFFBRRR
FFBFBBFRRR
FFBFBFBLRR
BBFBBFBRRL
BBFBFBFLRR
FBBBBFFLRR
BFBFBBBLRL
BFBFFFFRLL
BBFFFBFRLR
BBFFFBBLRR
FBFBBBFRRL
BFBFBBFLRL
BBFFBBBRLL
BBFFBBBLRL
FBFFFFFRLR
FBFBFBFRRL
FBBFBFBLLR
BFBBFFBLLL
BFFFFBFRLR
FBBFFFFLRR
FFFBBFBRRR
FBFFBFFLRR
FFBBFBBLLR
FBFBBFBLLR
BFFBBFBRLR
FFBBBBBRRR
FBFFBBFRLL
BFFFBFFRLL
BBFFBFBLRR
BFFFBFBRLR
BFFBBBFRLR
BBFBFBFRLL
BFFFBFFRLR
FBFFFBFRLL
BBFBFFBRLR
BBFFBFBLRL
FBBBBBFLLR
FBBBFFBRLR
FFFBBBFRRL
BFBFBBBRRR
BBFBFBBLRL
FBFBBBFLRR
FBFBBFBLLL
FFBBFBFLLR
BFBFBBFRLR
FFBFBBBRRR
FFBFBFFRRR
BFBBFFFRRL
BFFBBBBRLR
BFFBFFFLRR
FBBFBFBLLL
FBFFBBBLRL
BFBBBBBLRR
BBFBFFFRRL
BFBFFFFLRL
BBFFBBFRLL
FBFBFFBLRR
BFBFBBFRLL
BBFFFBFLLR
BFBFBFFLRL
BFBFBFBLRR
BFFFFFFRRR
FFFBFBFRLR
BFFFFFBRLL
BFFFBFFLRL
BBFFBFFLRL
FFBBBFFLLL
FFFBFBBRLL
FBFFBBFLRR
BBFBFFFLRL
BBFBFFBRRR
FBFFFBFLRL
FFBFFBBRLR
FBBBFBBLRL
BFFFBBFRLR
BBFFBFBRLR
BFFFFBFRRL
FBFBBBBLLR
BFFBBFFLRL
FFBFFBFRLR
FBBFFFFLLL
FBFFBFFRLR
BFFBFBFLLL
BFFFBFFLLR
BFFBBFBLLR
FBBBBBBLRR
BFFFFBFRLL
BBFBBBFRLR
FFBBFFFRRL
FBBFFFBRRL
FBBFFBBRLR
BBFBFBBLLR
BBFFFBFRRL
BFFFBBFRRL
FBFBBBFLLL
BBFFFBFRRR
FBFBBFFRLR
BBFFFFFLRR
FFBFFFBRRR
BFBFBBFRRL
FBBFFBBLLL
FFFBBFBLRL
FBBFBBFLRR
FBBFBFBLRR
FBFFFBBRRR
BBFFBBFLRL
FBBFFBFLRR
BBFBBFFLRR
BFFFFFFLRL
FBFBFFFLLR
FBBFFFFRRR
BFBBFFBLRR
FFBFFFFLLR
FFBFBFFLRR
BBFFFBFLRR
FBBFBBBRLR
FBBFBFBRRR
FBFFBBFLLR
FFFBBFBRLR
BFFBBFFRRR
BFBFFBBLLR
BFFBBFFRLL
FBBFBFBLRL
BBFFBBFRLR
BFFBFBBLLL
FBBBBBBRRL
BBFFBFFLLL
FBFBFFFRRL
FBBBBFBRLR
FBBFFBBLRL
FBBFFFBRLR
FBFBFBFLRR
BFFFBBBRRL
FBFBBBFRLR
BFFBBFFRRL
FFFBFBBLRL
FBBFBBFRRL
FFBBBBFRRL
FFBBBFBLLL
FBFBBBFLRL
FBBFFBFLLL
FFBFFBFLLL
BBFBBFFRLL
FBBFBBBLRR
BFBBBFFRRR
BBFFBBFRRL
BFFBFFFLLR
BBFBBBBLRL
FFBBFBBLRR
BFFFFFFRLL
FBBFBFFLRL
BBFFFFBLRL
BFBFFFBRLL
FFBBBFBRRL
BBFBFBBRLR
FBBBFFBLRR
BFBBBFFLLR
BFBBBBFRLL
BFBBBFFLRL
FBFBFFBLLR
FFBFBBBLLR
BFBBFFFLLR
FBFFBBFRLR
FFBBFBFRRL
BFFBFFFRRL
BBFBFBBRRR
BFFBFFFRLR
BFFFBFFLLL
FBBBFBFLRR
FBFFFFFLLL
FBBBFFFLRL
BBFFBBBRLR
BBFFBFFRRL
FFBFFFBLLL
FFBBFFBRLR
FFBBBFFRRR
BFBBFBBLRR
BFBBBBFLLR
BFFFBFBRLL
FBBBBFFRRL
BFFBBBFLRL
BFFFFFFLLR
FFBBBBFLRL
BFBFBBBLLR
BBFFFFFRLR
FBBFBBFLLR
FFBBBBFLRR
BFFBFFBRRL
BFFFBBFLRL
FBBBFFFLRR
FBBFFBBRLL
FBFBFBBLRR
FFBBFFBLLL
FFBFBBFRRL
BFBBFFBRRL
BFBFFBBRRL
FFFBBFFLLL
FFFBFBBLRR
BFBBFBFLLL
BFFFBBBLRR
FBFBFFFRLL
FBBBFBFLRL
BFBFBFBRRL
FBFBBFFRLL
FBBBFBBRLR
FBFFBFBLLR
FFBFBFFLLR
BFFFBFBLLR
FFFBBBFLRL
BFFBFBFLRL
BFFBFBBRRL
FFBBBBBLRR
FBBBFBFRLR
BBFBBFFRLR
BFBFBFBLLL
BFBFFFBRRL
FFBBBBBRRL
BBFFFBBRLR
FBBBBFFLLL
FFBBFBFLRL
BFBFFBFLRR
BFBBBFBLRR
BFBBBBFLRR
FFFBFBBRRR
BBFBBFBRRR
FFFBBBFLRR
FBBFFFBLLR
BFFBFBBRRR
FFFBBBBLLL
FFFBBFBLLR
BFBBBFFRLL
FBBBFFFRRL
FFBFFFFRRR
BBFFFFBLLL
FBFFFFFLRR
BBFFBBFLRR
FFFBBBFRRR
BBFBBFBRLR
FBBFFBFLLR
FFBFBBFLLL
FFBBBFFLRR
FBBFFFBLRL
BFFFBFBRRL
FBBFFFFRRL
FFFBFBBLLR
FBBFFBFRLR
BFFBBBFLRR
FBFFBFFRRR
BFBFFBFRRR
BBFFBFFLLR
FFBBFBFLLL
BBFBBBFRRR
FBBBBFFRLL
BFBBBBFLRL
BBFBFFBLLL
FFBFBBFLLR
BBFFFFBLLR
BBFFFBBRRR
BFFFBFFRRL
FFBBFBBRLL
FBBBFBFLLR
BFBBFBFRRR
BBFBFFFRLR
FBFFFBBLRR
BBFFFFFRRL
FFBFFBBLLL
BFFBBFFLLR
FBFFFBFRLR
FBFFFBBLRL
BFBBBFBRLL
BFBFBFFRLL
BFBBFBFRLR
FBBFBBFRLL
FBBBBFBLRR
FBBBFBFRLL
BBFBFFFLLR
FBBFBBBRRL
FFBFBBFLRL
BFBBBBFRRL
BFFBBFFRLR
BFBBBFBRRL
FFBBFFBLRL
FFBBBFBLRL
FBBFBBBLLR
FFBFFFBRLL
BFFFFBBLRR
BFBBBBBRRL
BFFBBFBRRR
BFFBBBFLLR
BFBFBFFLLL
FBBBBBBRRR
BFBFBBFLLL
BFBBBFFRRL
BFBFBBFLLR
FBFBBBBRLL
FBFBFBBRLR
BBFBBFFLLR
BBFBBFBLRL
BBFFBBFLLR
BFBFFBBRLR
FFBFFFBRLR
FBBFBFFLLR
FBFBFBFLLR
FFBBBFBLLR
FFBBBFBRLR
BFFBFBFRLR
BBFFFBFRLL
FFFBFBBRLR
FFBFFFFRLL
BBFFFBBRRL
FBFFFFBRRR
BFBFBFFLRR
FBBFBFFRLR
BBFBBFBLLL
FBFFBBBRRL
FFBBBBBLLR
BBFBBBFLLR
FFBFBFFRRL
FBFFFBBRLR
FBFBBFBRLL
BBFFFFFLLL
FBBBBBFLRL
BBFBBBFLRR
FBBFBFFLLL
FFBFFFBLLR
BFFBBBFRRL
FFFBBBBLRL
FFBBFBFRLR
FBFFFBFRRL
FFBBFBBRLR
FBBFBFBRLR
FBBBFBBLRR
FBFFFFBRLR
BBFBBBFLLL
FBFFFFBLLR
FFFBBBFRLL
FFFBBFFRLR
BFBBBFBLLL
BBFBBFFLRL
BFBBFFBRLR
FFBFBBBRLL
BFFFFFFLLL
BFBBBFFLRR
BFBBFBFRRL
BFFFFFFLRR
BBFFBBFRRR
FFBBFBBLLL
BBFBBFBLRR
FBBBBBFRRL
FFFBBBBLLR
FFFBBBBRLR
BBFBFBBLLL
BBFBFBBRLL
FBFBBBFRLL
BFBFBFBRLR
BBFBFFFRRR
FFBBBBFLLR
BBFFBBBLRR
FBBFFBBRRL
FFFBBFFRLL
FBFBBFFLRL
BFFFFBBLLR
BFFBFFBRRR
BFBFFFBLLR
FFBBFFBRRL
FFFBBBFRLR
BFFFFFBLRR
BBFBBBFRRL
BFBFFFBLRL
FBBFBFBRLL
BFFBBBFRRR
FBBFFBBRRR
FBFBFBBLLL
FFBBBBFLLL
FFBFFBFLLR
BBFBBFFRRL
BFFBBBBLRR
FBFBFBFLRL
FBBFFFFRLR
BBFBFFBLRL
FFFBBFBLLL
FBBBFFFRLL
FBBBFBBRLL
FBBBFFBRRR
FBBBFFBLLL
BFBFFFFRRR
BFBBBBBLRL
FBFBBBBRLR
FBFBFFFLRR
BFBBBBBLLR
FFBFBFBLLR
BBFBBFFRRR
FFBBBBBRLL
BFFFFBBLRL
FFBBBFBRRR
FBFFFBFLLR
BBFFBFBLLL
FBBBBBBLLR
BBFBFBBRRL
BFFFFBFLLL
BFBFFFBRLR
FBBBBBFRLL
BFFFFFBRRR
BFBBFBFLRR
FBFBBBBLRR
FFBBFBFRLL
FBBFBBBLRL
BFBFBFFRLR
FBFBFFBLLL
BFBBFFFRLR
FBFBFBBRRL
FFBFFBFRRR
BFFBFBBLLR
BFBBFFBLRL
FBBFFFFLLR
BBFBFBFLRL
BFBBFBBRRL
BFBFBFFRRL
FBFBBFBLRL
BFBBFFBRLL
FFBFFBFRLL
FFBBFFFRLL
BBFFBBBRRR
FFBBBFFLLR
BBFFBFBLLR
FBFFBFFLLL
FBBFFFFRLL
BFBFFBFLLR
BBFFBFBRRL
BBFFFFBRRL
FFBFBFBLRL
FBFFFFBRRL
BBFFFFFLRL
BFFBFFBLLR
FFBFFFBLRL
BFBFBBFRRR
FBBBFFBRRL
FFBBFBBRRL
BFFBFFFLRL
BBFBFFFLRR
FFFBBFFRRR
BFFBFBFRRR
FBFFFBFLLL
FBFBBFFLRR
BFBFBFBRLL
FFBFFFFLRR
BFFFFFBLLR
FBFBBFFRRR
BFBBBBBLLL
FBFFFFBRLL
BFBBBFFLLL
FBBFFFBLRR
FFBFFFFRRL
BFFBBBBLLR
FBFFBBFRRL
FBBFBFBRRL
FBFBFFFRLR
BBFFFFFLLR
BFBBFFFLRL
FBBBFFBLLR
BFBBBFBRLR
FBBBBFBLLL
FBBBFBBRRR
BBFFBFFLRR
BFFFBBBLLR
FBBFFBFRLL
BBFBFFBLLR
BBFBFFFRLL
FFFBBBFLLL
FBFFFFBLLL
FBFBBFBLRR
FFBFBFBRRR
FBFFBBBRLR
BFFFFFBLRL
BBFFBFBRRR
BFFFFBFLRR
FFBBBBFRLR
FBFFBFBRRL
FBFFFFFLRL
FFBFFFBLRR
BFFBBFBLLL
FFBBFFBRRR
FFBBFBFLRR
BBFFBBFLLL
FBBBBBBRLL
FFBFFBFLRL
BBFFBFFRLR
BFFFBFBLRL
BFBBBBBRLL
BFBBFBFLLR
BBFFFFBRLL
FFFBBFFLLR
BFFBBBBRLL
FFBBFFFLLR
BBFBFBBLRR
FBFFFFFRLL
BBFBBBFLRL
BBFFBBBLLR
BFFFBFBRRR
FBFFFBBLLL
FBFBFBBRLL
FFBFBBFRLL
BFBBBBBRLR
BFBFFBBLRL
FFBBFBBLRL
BFBFFBFLRL
FBBFBFFLRR
BFBBFBFLRL
FBBFBBFLLL
FBFFFFBLRR
FBFBBFFRRL
FBFFBFFRLL
BBFBBBBLLR
BFBBFFBRRR
BBFFFBBLLR
FBFBFBBRRR
FBBFBBFLRL
BFFBBBBLRL
FBFFBBBRLL
FFBFFFFLLL
BBFBFBFRRL
BFBFBFBLRL
BBFFFBFLLL
FFFBBFFRRL
FFBFFBBLLR
BFBFFFFLRR
FFBFBBFRLR
FFBBFFBLLR
BFBFBFBRRR
FBBBFFFRLR
FBFBFFFRRR
FBFFBBBLRR
FBFFFBBRRL
BBFFFFFRRR
FFBFBFFLLL
FBBBBFFLRL
FBFBBBBRRL
FBFBBBBRRR
BFBBFBBRLR
FBFBFFBRLR
FBFFFFFRRL
FFBFBBBLLL
FBFFBBBRRR
FBBBFFBRLL
BFFBFBFRRL
FFFBBBFLLR
FBFFBFBRLR
FFBFBFBLLL
FBBFBFFRRL
FFBFFBBLRL
BFFBFBBLRR
BFFFFBFLLR
FBFFBFBLRL
BFBBFBBLLL
FFBFBFBRLL
BFFBBBFLLL
FBBBBBBRLR
FBBBBBBLLL
FFBFBBBRLR
BFFFBBFLRR
BFBBBFBLLR
FFFBFBFRRR
BFFFBBBRRR
FFBFFBBRLL
BFFBFBFLRR
FFBBBBFRLL
BFBBFFFRRR
FBBFBBFRRR
BFFBBBBLLL
FBFFBBFLRL
BBFBFFBRLL
BFFFBFFLRR
BFBBBBFRLR
BFFBFBFRLL
BFBFFBBLRR
BFFFBBBRLL
FBFBBBFLLR
BBFBFBFRLR
FFFBBFBRRL
BBFFBFFRRR
BFBFFFFLLL
FBBBFFFLLR
FBFBBBBLLL
BBFFFFFRLL
FBFFBFFLLR
BBFFBBBLLL
FFBBFBBRRR
BFBBBFBRRR
BFBBBBFRRR
FFFBFBBLLL
FBBFFBFLRL
BBFFBBBRRL
FBFBBBFRRR
BBFFFFBLRR
BFBBFBBRRR
BFFBFFBLRL
BFFFFFFRRL
BBFFFBBLLL
FBFFBFFLRL
FBFFFBFLRR
FBFBFBFLLL
BFFBBFBRRL
FBBFFFBLLL
BFBBBFBLRL
FBFBBFBRLR
FBBBFFFRRR
FFBFFBBRRR
FFBBFFBRLL
FFBFBBFLRR
BFFFBFBLLL
BFFFFBBRLL
FFBFBFFRLL
BFFBFBFLLR
FFBBBFFRRL
BFFBFFFRLL
BBFFBFBRLL
FFBBFBFRRR
BFBFBBFLRR
FBFBFFBLRL
FBBBBFBLLR
FFFBBFFLRR
FBFBFFBRRL
BFFFFBBRRR
FBBFBBFRLR
BFFBBBFRLL
BBFBBBBLLL
FFBBFFFRLR
BFBBBBBRRR
FBFFBFBRRR
FBFBBFBRRL
FBFFFFFRRR
BFFFFBFRRR
BFFBBFBLRR
FBBBFBFRRL
BBFFFBBLRL
BFBFFFBRRR
FFBBFFFLRL
FFBFBFBRLR
BFBFBBBRLL
FBBBFFBLRL
BFBFFBBLLL
FFBFFBFLRR
FFFBFBFRRL
FBBBBFFRRR
BBFFFFBRLR
FBFBFFBRLL
BFBBFBFRLL
BFFFFBBLLL
FBFFBFBLRR
BFFFFFFRLR
FBFBFBBLLR
FFBBBFFLRL
FFBFBBBRRL
FBBFBBBRLL
BFFBFFFLLL
FFBBFFBLRR
FBBBFBBLLL
FBBFBFFRLL
FBFBBFBRRR
BFFBBFBLRL
BFBFBFFRRR
FFBBBBBLLL
FFBFBFFLRL
FFBBBFBRLL
FBBBFBFLLL
FBBBBBFRRR
BFBFFBBRLL
FBBFFFBRLL
FFBBBFFRLL
FFBFFBBLRR
FBFFBFBRLL
BBFBFBFLLL
BFFFBFBLRR
FBBBBBFRLR
FFBBBBFRRR
BFFBFBBRLL
FFFBBFFLRL
BFBBFFBLLR
BFFFFBBRRL
FFBFFBBRRL
FBFFBFFRRL
FBBBBBBLRL
BFFFBBBLLL
BBFBFFBLRR
FBBFFFFLRL
FBBBBBFLRR
BBFBBFBLLR
BFFFFBFLRL
FBBBFBBLLR
BBFBFBFRRR
FFBBFFFRRR
BBFFFBFLRL
BFBFFFBLLL
FFBBBBBLRL
BBFBFBFLLR
BFBFBBBLRR
BFBBFFFLLL
BFFFFFBLLL
FBFFBBBLLR
BBFBBFFLLL
BFBBFFFRLL
BFBFFBFLLL
BFFBBFFLRR
FFBBBFFRLR
BFFFBBFLLR
BFFBFBBLRL
FFFBBBBRRL
BFFFBBFLLL
FBFBBFFLLR
FBFFBBFRRR
FBFBFBFRLL
BFBBFBBLRL
FFBBBBBRLR
FFBFBBBLRL
FFBFBBBLRR
BBFFBFFRLL
BFFFFBBRLR
FFBFFBFRRL
FBFFFBFRRR
FBBBBFBRRL
FBFFBFBLLL
BFBFFBFRRL
FFBFFFFRLR
BFBFBBBRRL
FFBBBFBLRR
BFFFFFBRLR
BFFBBFBRLL
BFFFBFFRRR
FBFFBBFLLL
BFFFBBBRLR
FBFBFFBRRR
FFFBBBBRLL
FBFBFBFRLR
BBFBBFBRLL
FBBBFFFLLL
BFFFFFBRRL
FBBFFBFRRR
FBFBBBBLRL
BFBFFFFLLR
BFFBFFBRLR
FFBFBFBRRL
BFBFBBBLLL
BFFFBBFRLL
BBFBFFBRRL
BFBFBFFLLR
FBFBFFFLRL
BFBBBBFLLL
FBBFFFBRRR
FBBBBFFRLR
BFFBFBBRLR
FFBBFFFLRR
FBBFBFFRRR
FBFFFFBLRL
FBBBFBBRRL
FBBFFBFRRL
FBBFFBBLRR
FFFBBFBLRR
FBFFFBBRLL
BFBFFBFRLR
FBBBBFFLLR
BFBBFBBLLR
FFBFFFBRRL
BFBFFBBRRR
BFBBBFFRLR
FBBFBBBLLL
BFFBFFBLRR
FFFBBBBRRR
FFFBBFBRLL
BFFBFFBLLL
BFFBFFBRLL
BFFBBFFLLL
FBBFBBBRRR
BFFBFFFRRR
BFFBBBBRRL
BBFBBBFRLL
BBFFFBBRLL
BFFFBBFRRR
FFBFBFFRLR
BFBFFFFRLR
BFBFFBFRLL
BFBBFBBRLL
FFFBBBBLRR

2239
2020/inputs/day6.txt Normal file

File diff suppressed because it is too large Load diff

594
2020/inputs/day7.txt Normal file
View file

@ -0,0 +1,594 @@
faded plum bags contain 5 wavy cyan bags.
dull aqua bags contain 4 dark fuchsia bags, 1 shiny purple bag.
dotted olive bags contain 1 striped gray bag.
vibrant brown bags contain 4 dark tan bags, 4 mirrored gray bags.
shiny black bags contain 3 mirrored black bags.
dull bronze bags contain 2 plaid aqua bags, 4 shiny magenta bags, 2 faded green bags, 3 dotted gold bags.
wavy plum bags contain 5 dim indigo bags.
drab brown bags contain 5 clear fuchsia bags.
vibrant maroon bags contain 3 shiny coral bags, 1 dim indigo bag, 4 muted crimson bags, 5 clear black bags.
posh magenta bags contain no other bags.
dull brown bags contain 3 dim violet bags, 3 striped silver bags, 1 shiny purple bag.
pale gray bags contain 3 plaid magenta bags, 3 clear teal bags, 3 pale white bags.
plaid turquoise bags contain 4 bright orange bags, 5 drab white bags, 4 dotted coral bags.
dotted silver bags contain 2 pale silver bags, 4 dark teal bags, 5 posh gold bags, 1 bright orange bag.
light red bags contain 1 dark violet bag, 1 mirrored coral bag, 3 drab tan bags, 4 muted olive bags.
shiny brown bags contain 5 vibrant lavender bags, 4 dark lavender bags.
plaid plum bags contain 1 faded green bag.
vibrant lavender bags contain 4 bright chartreuse bags, 3 dark teal bags, 4 muted aqua bags.
muted yellow bags contain 5 posh yellow bags, 3 dim olive bags, 1 light cyan bag, 1 plaid gray bag.
light beige bags contain 2 wavy orange bags, 5 vibrant salmon bags, 2 dim brown bags.
muted indigo bags contain 3 dim brown bags, 3 drab brown bags.
dim bronze bags contain 4 dim black bags, 5 wavy turquoise bags, 5 bright violet bags, 2 dark bronze bags.
shiny teal bags contain 5 plaid chartreuse bags.
pale aqua bags contain 2 striped lime bags, 4 dark turquoise bags, 3 dull tomato bags, 2 mirrored lavender bags.
plaid violet bags contain 2 light olive bags.
dotted maroon bags contain 5 striped maroon bags, 2 shiny turquoise bags, 2 dull gold bags, 4 pale olive bags.
dim chartreuse bags contain 5 striped plum bags.
plaid gold bags contain 1 striped green bag, 3 plaid coral bags, 4 dotted violet bags.
faded tomato bags contain 2 dark indigo bags.
posh plum bags contain 1 wavy chartreuse bag, 4 vibrant blue bags.
drab bronze bags contain 2 mirrored gray bags, 3 vibrant plum bags.
muted blue bags contain 1 bright brown bag, 2 pale coral bags, 5 plaid purple bags, 4 dim lavender bags.
striped indigo bags contain 5 dark salmon bags.
shiny tan bags contain 2 faded bronze bags, 3 mirrored lavender bags, 2 mirrored cyan bags.
dim red bags contain 5 dull salmon bags, 3 dim purple bags, 2 striped crimson bags.
plaid gray bags contain 5 bright violet bags, 4 vibrant aqua bags, 4 dull tomato bags.
dotted white bags contain 1 drab brown bag, 5 light brown bags.
plaid tan bags contain 3 striped teal bags, 2 dotted brown bags.
vibrant black bags contain 3 plaid tan bags, 4 muted white bags, 4 drab orange bags, 5 muted aqua bags.
drab purple bags contain 5 muted violet bags, 2 vibrant blue bags, 4 pale olive bags.
mirrored beige bags contain 1 plaid gray bag, 2 mirrored lime bags, 3 dark brown bags.
vibrant olive bags contain 5 shiny indigo bags.
drab green bags contain 1 muted violet bag.
faded turquoise bags contain 2 striped brown bags, 3 vibrant white bags, 1 dull lavender bag, 5 bright olive bags.
shiny maroon bags contain 1 dim bronze bag.
dull white bags contain 1 muted salmon bag, 4 dim olive bags, 5 drab white bags, 1 dotted teal bag.
dim white bags contain 3 mirrored lavender bags.
clear beige bags contain 5 shiny cyan bags, 3 clear chartreuse bags.
plaid tomato bags contain 5 muted beige bags.
bright teal bags contain 5 shiny gold bags, 4 clear beige bags, 5 vibrant chartreuse bags.
dotted salmon bags contain 1 clear fuchsia bag, 2 muted maroon bags, 4 posh yellow bags, 1 drab chartreuse bag.
light gold bags contain 4 light maroon bags.
faded cyan bags contain 2 posh magenta bags, 2 dark violet bags.
drab cyan bags contain 5 faded purple bags, 4 striped crimson bags, 1 shiny maroon bag, 4 drab tomato bags.
dotted black bags contain 3 striped turquoise bags, 4 dark tan bags, 4 vibrant lavender bags.
faded purple bags contain 4 dull purple bags.
dim violet bags contain 2 clear blue bags.
wavy gray bags contain 4 muted crimson bags, 2 mirrored silver bags, 5 vibrant chartreuse bags.
posh tan bags contain 4 drab tan bags, 3 muted crimson bags, 2 striped crimson bags, 2 plaid fuchsia bags.
mirrored magenta bags contain 5 pale bronze bags.
plaid brown bags contain 1 bright chartreuse bag.
drab orange bags contain 4 drab teal bags, 1 dark bronze bag, 2 clear purple bags.
dim green bags contain 5 dull maroon bags, 1 dull green bag.
faded teal bags contain 2 bright yellow bags, 2 posh red bags, 2 posh indigo bags.
dim gray bags contain 4 wavy blue bags, 2 shiny maroon bags, 1 pale cyan bag.
light crimson bags contain 1 wavy plum bag, 3 muted magenta bags, 3 plaid aqua bags, 2 striped chartreuse bags.
clear white bags contain 2 posh magenta bags, 5 bright white bags, 5 drab bronze bags, 3 vibrant beige bags.
drab magenta bags contain 4 pale olive bags.
plaid silver bags contain 4 bright violet bags, 3 dim brown bags, 1 dark teal bag.
bright bronze bags contain 4 posh white bags, 3 dull salmon bags.
drab maroon bags contain 3 clear black bags, 2 dotted orange bags.
dark fuchsia bags contain 3 faded chartreuse bags, 5 clear green bags, 4 bright brown bags.
vibrant salmon bags contain 1 bright red bag, 5 clear black bags, 2 clear green bags.
shiny crimson bags contain 4 muted fuchsia bags, 2 plaid red bags, 3 clear green bags.
plaid crimson bags contain 4 bright gold bags, 2 clear turquoise bags, 3 faded magenta bags.
dim turquoise bags contain 3 drab brown bags, 5 plaid cyan bags, 3 plaid teal bags, 5 shiny silver bags.
clear crimson bags contain 3 plaid blue bags, 2 drab tomato bags, 2 dull cyan bags, 3 mirrored fuchsia bags.
pale tomato bags contain 1 dull yellow bag, 3 muted aqua bags.
dim orange bags contain 1 posh magenta bag, 2 wavy gray bags, 5 faded indigo bags.
mirrored orange bags contain 1 posh bronze bag, 2 faded white bags, 1 light orange bag, 2 posh red bags.
striped turquoise bags contain 5 muted salmon bags, 5 dark white bags, 1 mirrored purple bag, 3 pale chartreuse bags.
dotted coral bags contain 3 bright brown bags, 2 posh yellow bags, 3 drab maroon bags.
wavy maroon bags contain 2 clear lime bags.
mirrored indigo bags contain 1 mirrored cyan bag, 1 posh plum bag, 2 plaid silver bags.
wavy indigo bags contain 5 dark violet bags, 5 drab black bags, 4 dark orange bags, 5 muted green bags.
striped tomato bags contain 4 dark indigo bags, 5 light lavender bags.
pale lime bags contain 2 bright orange bags.
muted maroon bags contain 2 bright violet bags, 1 shiny coral bag, 1 posh gray bag.
drab lavender bags contain 1 muted magenta bag.
bright fuchsia bags contain 1 striped lime bag.
wavy beige bags contain 2 bright brown bags, 1 pale black bag, 1 drab tomato bag, 4 vibrant blue bags.
shiny olive bags contain 2 dim teal bags, 1 mirrored cyan bag, 4 dim yellow bags, 4 muted aqua bags.
posh coral bags contain no other bags.
dark green bags contain 2 posh brown bags, 2 muted white bags, 4 bright fuchsia bags.
shiny green bags contain 1 faded crimson bag, 3 striped purple bags, 4 shiny salmon bags, 2 dark bronze bags.
clear coral bags contain no other bags.
dull salmon bags contain 1 muted white bag.
dark lavender bags contain 2 plaid gray bags, 4 muted olive bags.
bright silver bags contain 5 pale black bags.
posh green bags contain 5 muted olive bags, 4 dotted crimson bags, 4 dotted brown bags.
dotted fuchsia bags contain 5 shiny chartreuse bags, 1 dotted coral bag, 1 shiny cyan bag.
dim fuchsia bags contain 1 striped orange bag, 1 clear crimson bag.
dotted cyan bags contain 5 muted olive bags, 3 shiny white bags.
dark beige bags contain 4 light teal bags, 4 drab teal bags, 5 wavy beige bags.
striped magenta bags contain 5 plaid purple bags, 3 dotted crimson bags, 2 dull tomato bags.
striped blue bags contain 3 dim aqua bags.
light silver bags contain 3 shiny green bags, 2 vibrant black bags, 1 wavy turquoise bag, 3 faded bronze bags.
pale indigo bags contain 4 pale silver bags, 3 dotted tomato bags, 1 dark violet bag, 3 clear lime bags.
mirrored turquoise bags contain 1 pale salmon bag, 2 dotted crimson bags, 1 drab tomato bag, 2 muted green bags.
striped beige bags contain 3 dotted tomato bags, 4 vibrant purple bags, 2 plaid tomato bags, 4 dark salmon bags.
pale silver bags contain 5 dark lavender bags, 4 drab tan bags, 5 clear yellow bags.
dark lime bags contain 3 pale aqua bags, 5 posh green bags.
faded coral bags contain 3 dull tomato bags, 4 dark bronze bags, 3 drab tomato bags, 2 bright white bags.
mirrored lavender bags contain 3 mirrored cyan bags.
bright crimson bags contain 2 mirrored silver bags.
striped gray bags contain 3 dotted coral bags, 4 muted maroon bags, 4 dark teal bags, 5 pale bronze bags.
dotted magenta bags contain 2 dim teal bags, 2 wavy turquoise bags, 5 dull turquoise bags.
posh white bags contain 4 drab tomato bags, 2 muted aqua bags.
striped red bags contain 2 plaid blue bags, 1 light plum bag, 3 bright white bags.
pale white bags contain 1 light purple bag.
shiny coral bags contain no other bags.
dark magenta bags contain 4 pale tan bags, 1 posh chartreuse bag, 2 pale yellow bags, 2 pale indigo bags.
light gray bags contain 4 pale green bags, 5 dotted green bags, 4 shiny gray bags.
dim gold bags contain 3 clear violet bags, 5 plaid aqua bags, 2 bright tomato bags, 2 wavy teal bags.
dim crimson bags contain 4 muted blue bags, 2 light tan bags.
wavy tan bags contain 1 posh plum bag, 3 mirrored gray bags, 1 muted purple bag.
posh brown bags contain 4 mirrored black bags.
bright plum bags contain 3 vibrant plum bags, 3 mirrored crimson bags.
faded black bags contain 1 pale lime bag, 2 pale tomato bags.
mirrored yellow bags contain 1 pale aqua bag, 4 dull aqua bags, 4 shiny white bags, 3 clear lime bags.
muted tan bags contain 2 clear brown bags.
drab white bags contain 5 dull coral bags, 2 drab green bags, 4 wavy tomato bags, 5 mirrored cyan bags.
dull black bags contain 4 vibrant tan bags, 1 shiny chartreuse bag, 5 pale gold bags.
posh maroon bags contain 5 dark coral bags, 5 faded yellow bags, 2 light lavender bags, 2 wavy teal bags.
drab coral bags contain 4 posh chartreuse bags, 2 dim red bags.
posh indigo bags contain 2 plaid brown bags, 4 muted green bags.
drab aqua bags contain 2 pale magenta bags, 2 posh orange bags.
drab crimson bags contain 2 pale bronze bags, 4 dotted blue bags, 2 dim silver bags.
drab silver bags contain 5 clear blue bags, 4 pale bronze bags.
clear salmon bags contain 2 pale aqua bags, 1 plaid gray bag, 1 clear coral bag.
wavy chartreuse bags contain no other bags.
dull plum bags contain 3 plaid gray bags, 3 plaid aqua bags, 2 mirrored beige bags, 2 wavy magenta bags.
faded gray bags contain 2 dull cyan bags, 3 light lime bags, 3 bright lavender bags, 5 wavy plum bags.
striped teal bags contain 4 drab maroon bags.
clear lavender bags contain 3 clear coral bags, 5 bright crimson bags, 5 drab brown bags, 2 dim indigo bags.
mirrored maroon bags contain 1 clear gray bag, 3 shiny salmon bags, 3 mirrored violet bags.
muted turquoise bags contain 2 drab teal bags, 2 plaid plum bags, 4 plaid coral bags, 2 wavy chartreuse bags.
dark white bags contain 4 bright fuchsia bags, 1 dull white bag, 3 shiny indigo bags, 3 dim white bags.
drab red bags contain 3 dotted teal bags, 2 striped purple bags.
muted teal bags contain 3 dark violet bags, 4 plaid chartreuse bags, 2 pale crimson bags.
wavy red bags contain 2 clear crimson bags.
striped olive bags contain 2 mirrored lavender bags.
dull teal bags contain 4 pale teal bags, 5 pale violet bags, 2 drab white bags.
light black bags contain 1 dark red bag, 2 plaid tan bags.
clear orange bags contain 5 bright cyan bags.
pale yellow bags contain 2 bright lavender bags.
posh cyan bags contain 4 clear coral bags.
drab tomato bags contain 4 vibrant blue bags, 5 faded beige bags, 3 clear coral bags, 2 mirrored white bags.
pale orange bags contain 2 light aqua bags.
dull tomato bags contain 5 plaid aqua bags, 2 posh magenta bags, 3 vibrant aqua bags.
pale turquoise bags contain 1 pale coral bag, 3 dim teal bags.
plaid maroon bags contain 5 posh maroon bags.
vibrant beige bags contain 5 dull coral bags.
bright purple bags contain 2 vibrant salmon bags, 5 dotted purple bags, 5 clear silver bags.
dull coral bags contain 4 vibrant aqua bags, 3 dotted brown bags, 4 shiny coral bags.
drab gray bags contain 4 vibrant lavender bags.
dull lavender bags contain 3 vibrant lavender bags, 1 posh red bag, 4 drab tan bags, 3 light purple bags.
striped maroon bags contain 3 bright silver bags.
mirrored silver bags contain 5 clear blue bags, 3 posh magenta bags, 2 bright brown bags.
faded yellow bags contain 2 muted maroon bags.
striped purple bags contain 2 dotted yellow bags, 1 clear cyan bag, 2 dark teal bags.
clear gray bags contain 5 dim black bags, 1 faded green bag, 5 muted crimson bags.
plaid cyan bags contain 2 dark teal bags, 1 pale lime bag, 1 wavy beige bag.
bright orange bags contain 5 mirrored brown bags, 2 dotted gold bags.
dotted turquoise bags contain 3 plaid gray bags, 3 clear chartreuse bags.
vibrant turquoise bags contain 1 muted brown bag, 3 dim purple bags, 1 posh gray bag, 5 pale bronze bags.
striped lime bags contain 1 shiny gold bag.
light violet bags contain 4 mirrored purple bags, 5 clear blue bags.
striped orange bags contain 3 light gold bags, 3 light olive bags, 3 muted crimson bags, 2 pale cyan bags.
drab turquoise bags contain 3 dim magenta bags, 4 pale black bags.
pale salmon bags contain 2 mirrored cyan bags, 4 vibrant blue bags.
shiny yellow bags contain 5 vibrant tomato bags, 3 muted salmon bags, 5 wavy tomato bags.
plaid lime bags contain 2 pale yellow bags, 2 shiny red bags, 3 muted crimson bags, 4 dull green bags.
muted cyan bags contain 4 bright green bags, 5 striped bronze bags, 1 vibrant lavender bag, 4 posh violet bags.
dull cyan bags contain 5 dark lavender bags, 5 drab green bags, 1 bright crimson bag, 4 mirrored silver bags.
pale beige bags contain 3 posh coral bags.
shiny chartreuse bags contain 4 mirrored silver bags.
dark silver bags contain 2 dull turquoise bags, 1 muted maroon bag, 5 vibrant magenta bags.
mirrored violet bags contain 4 dark brown bags.
clear aqua bags contain 2 striped beige bags, 1 dotted indigo bag, 5 faded violet bags, 5 vibrant violet bags.
plaid teal bags contain 3 mirrored lavender bags, 4 posh gray bags.
wavy olive bags contain 3 dull blue bags, 5 bright salmon bags, 5 shiny purple bags.
pale lavender bags contain 4 light purple bags, 2 dotted gray bags, 2 pale plum bags, 3 shiny silver bags.
shiny blue bags contain 2 vibrant white bags, 3 light gold bags, 3 mirrored lavender bags, 1 drab plum bag.
light coral bags contain 4 light teal bags, 1 striped chartreuse bag, 5 dotted chartreuse bags.
pale brown bags contain 2 dim gold bags, 2 clear turquoise bags, 3 bright cyan bags, 4 clear maroon bags.
vibrant tomato bags contain 3 dark brown bags, 1 vibrant blue bag.
dull olive bags contain 5 mirrored yellow bags, 2 shiny cyan bags.
light chartreuse bags contain 2 dull aqua bags, 4 dull brown bags, 1 clear fuchsia bag, 4 bright yellow bags.
posh gray bags contain 4 posh green bags, 1 mirrored gray bag.
bright yellow bags contain 4 pale aqua bags.
bright gold bags contain 3 pale indigo bags, 3 dull crimson bags.
dotted red bags contain 4 pale turquoise bags, 4 muted blue bags, 1 bright bronze bag, 2 light blue bags.
clear brown bags contain 1 mirrored yellow bag.
light plum bags contain 2 bright violet bags.
dim purple bags contain 3 faded chartreuse bags, 5 light teal bags.
dull yellow bags contain 5 muted aqua bags, 3 dotted coral bags, 2 drab maroon bags.
shiny gold bags contain 4 pale black bags, 4 dim violet bags, 3 muted yellow bags.
mirrored crimson bags contain 1 striped teal bag, 5 mirrored cyan bags.
shiny lavender bags contain 4 bright brown bags, 3 bright tan bags, 5 dotted crimson bags, 4 pale black bags.
vibrant cyan bags contain 1 dim yellow bag, 5 bright tan bags.
wavy gold bags contain 2 dark brown bags, 1 dull yellow bag.
dark cyan bags contain 4 dim white bags, 2 mirrored indigo bags, 4 muted white bags, 2 bright white bags.
posh lime bags contain 4 shiny plum bags, 3 plaid fuchsia bags.
posh purple bags contain 3 muted salmon bags.
pale magenta bags contain 1 drab gold bag, 1 dark white bag, 3 posh silver bags.
dim plum bags contain 4 dark chartreuse bags, 4 mirrored lavender bags.
plaid indigo bags contain 2 clear lime bags, 5 dull tomato bags.
dark blue bags contain 1 bright olive bag, 1 dull bronze bag, 1 shiny gold bag.
dull red bags contain 2 wavy teal bags, 3 wavy crimson bags, 1 faded olive bag.
striped yellow bags contain 4 drab salmon bags.
vibrant magenta bags contain 4 light beige bags, 2 dark red bags, 1 plaid magenta bag, 5 dim magenta bags.
plaid red bags contain 2 striped red bags, 4 light plum bags, 3 mirrored silver bags.
wavy orange bags contain 5 vibrant white bags, 1 posh coral bag, 5 muted purple bags, 2 light coral bags.
pale green bags contain 5 pale aqua bags, 1 clear gray bag.
dotted chartreuse bags contain 4 muted violet bags, 5 striped teal bags.
light turquoise bags contain 5 dull turquoise bags, 2 dark aqua bags, 1 dull teal bag.
shiny violet bags contain 2 pale indigo bags.
light white bags contain 3 mirrored indigo bags, 1 faded blue bag, 1 plaid white bag, 1 posh plum bag.
muted beige bags contain 4 drab gold bags.
faded silver bags contain 2 drab white bags, 5 pale white bags, 3 clear lime bags.
faded red bags contain 1 bright turquoise bag, 5 faded coral bags, 2 drab purple bags, 5 bright olive bags.
shiny bronze bags contain 4 plaid purple bags, 5 bright red bags, 1 muted white bag, 2 dull fuchsia bags.
dull gold bags contain 1 dotted orange bag.
muted olive bags contain 1 clear coral bag, 1 posh magenta bag, 2 bright violet bags, 1 wavy chartreuse bag.
dotted bronze bags contain 1 plaid beige bag, 3 clear olive bags, 2 light lime bags, 5 dull beige bags.
shiny orange bags contain 5 pale brown bags, 5 clear tomato bags.
wavy salmon bags contain 2 shiny maroon bags.
wavy crimson bags contain 5 bright violet bags, 3 plaid violet bags.
bright coral bags contain 1 dull bronze bag, 5 dotted gold bags, 1 posh gray bag.
dotted crimson bags contain 2 posh magenta bags, 4 mirrored white bags.
bright violet bags contain no other bags.
drab blue bags contain 5 shiny gold bags, 1 shiny brown bag, 4 dark silver bags.
posh salmon bags contain 4 dim purple bags, 1 striped lime bag, 1 muted gray bag, 2 drab gold bags.
dim coral bags contain 3 dark red bags, 2 faded crimson bags.
dark aqua bags contain 3 dotted salmon bags, 4 pale olive bags, 1 vibrant aqua bag, 5 dull lavender bags.
dark orange bags contain 4 mirrored teal bags, 5 clear salmon bags.
vibrant red bags contain 3 vibrant blue bags.
muted lime bags contain 1 dull silver bag.
clear tan bags contain 2 striped beige bags, 1 posh coral bag, 1 wavy teal bag, 2 faded plum bags.
vibrant coral bags contain 2 faded blue bags, 4 bright turquoise bags.
dark olive bags contain 2 dark indigo bags.
dotted blue bags contain 5 faded cyan bags, 4 striped aqua bags, 4 dotted gold bags.
bright maroon bags contain 1 dark bronze bag, 3 vibrant aqua bags, 4 dim magenta bags, 3 clear crimson bags.
bright cyan bags contain 2 wavy tomato bags.
plaid olive bags contain 3 striped indigo bags, 5 dim purple bags, 3 striped bronze bags, 2 light teal bags.
plaid chartreuse bags contain 3 plaid yellow bags, 1 faded brown bag, 1 vibrant tan bag, 4 wavy fuchsia bags.
dull maroon bags contain 3 muted yellow bags.
light fuchsia bags contain 5 drab maroon bags, 5 muted silver bags.
dull orange bags contain 4 dim indigo bags, 4 posh beige bags, 1 bright red bag.
dull blue bags contain 5 wavy yellow bags, 4 posh gray bags.
plaid yellow bags contain 1 bright fuchsia bag, 1 faded beige bag, 1 wavy beige bag, 4 light green bags.
clear black bags contain 1 dull tomato bag.
muted coral bags contain 5 drab indigo bags.
plaid magenta bags contain 3 posh salmon bags.
clear tomato bags contain 5 dotted brown bags, 3 dim tomato bags, 3 drab brown bags.
clear yellow bags contain 3 clear black bags, 2 mirrored black bags.
dark gray bags contain 5 light bronze bags, 4 dotted coral bags, 4 dim chartreuse bags.
light magenta bags contain 4 wavy turquoise bags, 1 mirrored green bag, 2 plaid chartreuse bags.
shiny indigo bags contain 1 bright silver bag, 2 pale tomato bags, 4 light teal bags, 4 posh coral bags.
muted gray bags contain 3 faded beige bags, 1 dark teal bag, 3 muted violet bags, 3 muted white bags.
wavy lavender bags contain 1 clear chartreuse bag, 2 clear maroon bags, 5 dull plum bags.
faded olive bags contain 4 mirrored yellow bags, 4 vibrant tomato bags, 5 muted olive bags.
muted crimson bags contain 1 mirrored gray bag, 4 dim violet bags.
drab chartreuse bags contain 1 pale olive bag, 1 vibrant plum bag.
wavy cyan bags contain 2 mirrored coral bags.
mirrored plum bags contain 3 bright turquoise bags, 3 dark beige bags, 4 mirrored beige bags.
plaid lavender bags contain 1 drab white bag.
muted gold bags contain 1 clear black bag, 2 light orange bags, 4 dotted red bags, 4 dull silver bags.
faded bronze bags contain 4 posh plum bags.
clear turquoise bags contain 1 light gold bag, 1 clear beige bag, 2 striped chartreuse bags.
vibrant gray bags contain 1 plaid white bag.
bright tan bags contain 3 drab silver bags, 2 faded yellow bags, 2 bright green bags.
pale bronze bags contain 5 posh coral bags, 4 clear coral bags, 1 dotted orange bag, 4 wavy chartreuse bags.
clear plum bags contain 1 dim plum bag, 4 light gold bags.
posh turquoise bags contain 3 wavy bronze bags, 4 shiny purple bags.
posh teal bags contain 2 striped magenta bags, 3 dark magenta bags, 5 faded silver bags, 5 mirrored chartreuse bags.
dim yellow bags contain 4 pale bronze bags, 3 shiny tan bags.
faded lavender bags contain 3 dull white bags, 3 striped teal bags.
wavy magenta bags contain 2 pale aqua bags, 4 shiny indigo bags.
dim brown bags contain 2 bright brown bags, 3 striped chartreuse bags, 5 dull purple bags, 1 light cyan bag.
light lime bags contain 5 clear crimson bags, 4 plaid indigo bags, 1 pale silver bag.
striped silver bags contain 3 posh green bags, 3 muted violet bags, 1 drab green bag.
bright brown bags contain no other bags.
vibrant fuchsia bags contain 4 dull olive bags, 2 mirrored gold bags, 3 mirrored bronze bags, 1 posh crimson bag.
plaid purple bags contain 3 faded beige bags, 1 drab green bag, 2 striped chartreuse bags.
wavy violet bags contain 2 vibrant gray bags, 5 wavy fuchsia bags.
dark maroon bags contain 5 pale chartreuse bags, 5 striped brown bags.
pale coral bags contain 3 vibrant plum bags.
dark black bags contain 4 striped salmon bags, 4 dim bronze bags.
plaid bronze bags contain 2 mirrored black bags, 1 drab bronze bag, 4 plaid purple bags, 5 dull tomato bags.
faded orange bags contain 5 plaid indigo bags.
light lavender bags contain 2 shiny magenta bags, 5 dim lavender bags, 1 dotted crimson bag.
dull chartreuse bags contain 4 clear lime bags.
dark gold bags contain 4 light magenta bags.
dim black bags contain 4 shiny silver bags, 1 dull tomato bag.
plaid salmon bags contain 3 light magenta bags, 4 dull fuchsia bags, 2 striped salmon bags.
vibrant bronze bags contain 5 mirrored white bags, 1 dull coral bag.
wavy brown bags contain 1 light gold bag, 4 drab purple bags, 3 muted violet bags, 4 muted fuchsia bags.
dotted lavender bags contain 4 dotted indigo bags, 2 dull lavender bags.
dotted gold bags contain 1 posh magenta bag, 2 posh yellow bags.
faded brown bags contain 4 muted blue bags, 3 wavy teal bags.
light yellow bags contain 3 clear black bags, 1 dotted crimson bag.
striped salmon bags contain 1 dull yellow bag, 5 mirrored gray bags, 5 light lavender bags, 5 mirrored brown bags.
light blue bags contain 5 mirrored purple bags, 3 dim violet bags, 2 pale tomato bags.
faded gold bags contain 3 plaid gray bags.
shiny aqua bags contain 1 striped crimson bag, 5 pale black bags.
shiny lime bags contain 4 dark green bags.
vibrant tan bags contain 3 clear silver bags, 3 pale white bags.
vibrant aqua bags contain no other bags.
vibrant teal bags contain 3 wavy tan bags.
light maroon bags contain 3 vibrant silver bags.
faded crimson bags contain 3 plaid red bags.
light teal bags contain 2 dark teal bags, 1 faded beige bag, 4 dull cyan bags.
mirrored coral bags contain 2 vibrant plum bags.
muted black bags contain 2 drab magenta bags, 1 mirrored gray bag, 4 drab tan bags, 1 dim indigo bag.
striped gold bags contain 1 dark lavender bag, 4 drab brown bags, 2 bright silver bags, 2 striped teal bags.
light purple bags contain 3 posh gray bags.
dull silver bags contain 2 clear chartreuse bags, 3 plaid silver bags, 1 drab salmon bag, 2 wavy teal bags.
clear bronze bags contain 4 dull red bags.
wavy yellow bags contain 3 dull tomato bags, 2 posh green bags, 4 plaid aqua bags, 2 faded purple bags.
muted purple bags contain 5 pale black bags, 2 muted salmon bags, 2 muted yellow bags.
plaid aqua bags contain no other bags.
drab plum bags contain 3 drab turquoise bags.
muted orange bags contain 1 faded blue bag, 5 plaid brown bags, 4 mirrored chartreuse bags.
dim silver bags contain 4 dark fuchsia bags, 2 clear cyan bags, 2 dark green bags, 4 dotted silver bags.
pale tan bags contain 5 shiny silver bags, 5 drab indigo bags.
wavy tomato bags contain 4 clear black bags, 4 plaid gray bags.
posh bronze bags contain 4 drab green bags.
clear blue bags contain 3 bright brown bags, 5 dull tomato bags, 1 clear black bag, 5 bright violet bags.
striped plum bags contain 4 plaid yellow bags, 3 dark teal bags, 2 mirrored lavender bags, 1 dotted salmon bag.
muted salmon bags contain 1 dull cyan bag, 2 clear coral bags, 1 posh coral bag.
light aqua bags contain 4 clear maroon bags, 4 striped black bags.
bright blue bags contain 4 drab violet bags, 4 light indigo bags, 3 muted indigo bags.
light brown bags contain 5 striped lavender bags.
light salmon bags contain 1 drab beige bag, 5 faded orange bags, 4 plaid coral bags, 5 light chartreuse bags.
posh beige bags contain 1 shiny red bag.
dotted orange bags contain 2 dotted brown bags, 3 mirrored silver bags, 1 dull tomato bag.
wavy purple bags contain 1 mirrored green bag, 1 clear maroon bag.
dark coral bags contain 5 bright chartreuse bags, 4 clear lime bags.
dim lime bags contain 3 bright olive bags, 3 dull gold bags.
pale plum bags contain 1 light orange bag, 3 drab orange bags, 5 mirrored purple bags.
dim beige bags contain 5 pale fuchsia bags, 4 mirrored fuchsia bags, 4 plaid teal bags, 1 shiny orange bag.
drab tan bags contain 5 plaid silver bags, 3 muted crimson bags, 1 clear salmon bag.
posh blue bags contain 4 plaid aqua bags, 2 drab salmon bags, 4 pale teal bags, 2 drab gold bags.
drab violet bags contain 3 shiny white bags.
shiny plum bags contain 3 mirrored green bags, 2 dark yellow bags, 3 pale salmon bags.
pale fuchsia bags contain 5 faded violet bags.
clear fuchsia bags contain 2 dark lavender bags, 3 posh green bags.
mirrored lime bags contain 3 light bronze bags.
plaid white bags contain 1 dim lavender bag, 4 dim olive bags, 3 clear yellow bags.
striped violet bags contain 4 plaid plum bags, 3 plaid black bags, 4 pale teal bags, 5 wavy magenta bags.
dark purple bags contain 2 shiny gold bags, 3 faded blue bags.
mirrored blue bags contain 1 drab fuchsia bag, 4 posh white bags, 3 wavy red bags.
pale black bags contain 2 dim olive bags, 5 bright brown bags.
dark brown bags contain 5 dotted purple bags, 2 striped silver bags.
muted lavender bags contain 3 posh brown bags, 2 clear yellow bags, 3 posh coral bags, 1 shiny tan bag.
muted bronze bags contain 1 drab teal bag, 5 drab tomato bags, 1 drab magenta bag, 5 posh maroon bags.
posh violet bags contain 5 bright white bags, 5 vibrant tan bags.
clear green bags contain 3 mirrored silver bags, 2 dotted orange bags.
dotted plum bags contain 3 plaid yellow bags, 1 wavy yellow bag, 1 drab cyan bag.
drab olive bags contain 1 shiny indigo bag.
wavy turquoise bags contain 3 muted yellow bags.
dark violet bags contain 2 bright crimson bags, 4 bright fuchsia bags, 2 dull blue bags.
posh gold bags contain 3 drab teal bags.
dim cyan bags contain 5 clear olive bags, 4 bright turquoise bags, 1 pale gray bag.
posh red bags contain 1 bright salmon bag.
dull tan bags contain 4 plaid cyan bags.
faded indigo bags contain 3 light gold bags, 5 dotted brown bags, 3 dotted cyan bags, 2 drab teal bags.
clear violet bags contain 1 wavy turquoise bag, 1 vibrant chartreuse bag, 1 dark violet bag, 3 bright bronze bags.
clear indigo bags contain 1 mirrored tan bag, 4 faded indigo bags.
bright turquoise bags contain 1 drab teal bag, 4 dull salmon bags, 4 pale olive bags, 2 faded chartreuse bags.
muted tomato bags contain 1 dark purple bag, 3 striped tan bags.
posh silver bags contain 4 muted gray bags.
mirrored olive bags contain 5 bright lavender bags, 2 clear blue bags, 5 dotted crimson bags, 5 pale black bags.
shiny tomato bags contain 1 mirrored purple bag, 4 posh gold bags, 3 vibrant plum bags.
striped coral bags contain 5 clear orange bags, 3 muted coral bags, 4 bright green bags, 1 clear chartreuse bag.
mirrored chartreuse bags contain 4 clear blue bags.
pale maroon bags contain 1 muted indigo bag.
striped black bags contain 3 striped gray bags, 1 striped lime bag, 4 bright cyan bags, 4 light orange bags.
dim maroon bags contain 4 dull cyan bags.
bright beige bags contain 2 pale fuchsia bags, 5 vibrant beige bags, 1 light lavender bag.
shiny gray bags contain 2 striped lime bags, 1 pale black bag, 4 wavy tomato bags, 2 vibrant brown bags.
drab lime bags contain 5 muted bronze bags, 2 posh indigo bags.
dull gray bags contain 2 dull plum bags, 4 dim white bags, 2 shiny purple bags.
light olive bags contain 4 clear salmon bags, 1 dim indigo bag.
vibrant violet bags contain 5 striped tan bags, 1 pale lime bag, 4 posh plum bags, 4 mirrored black bags.
posh lavender bags contain 4 pale tomato bags.
plaid coral bags contain 3 mirrored olive bags, 2 muted black bags, 3 light plum bags.
vibrant blue bags contain 4 mirrored silver bags.
dim aqua bags contain 5 dim maroon bags.
wavy bronze bags contain 5 wavy plum bags, 1 bright cyan bag, 2 drab chartreuse bags.
muted plum bags contain 3 plaid silver bags, 5 faded black bags, 3 drab maroon bags.
dull turquoise bags contain 4 plaid silver bags.
plaid blue bags contain 3 plaid purple bags.
dotted tan bags contain 5 plaid chartreuse bags, 4 dotted coral bags, 4 posh green bags, 1 striped turquoise bag.
plaid black bags contain 2 drab salmon bags, 5 posh maroon bags.
light cyan bags contain 2 dotted orange bags, 5 drab green bags, 1 bright lavender bag.
dull fuchsia bags contain 2 posh red bags, 4 mirrored beige bags, 2 dull salmon bags, 4 striped purple bags.
dark turquoise bags contain 4 drab tomato bags, 3 dotted chartreuse bags, 5 muted salmon bags, 4 posh magenta bags.
vibrant silver bags contain 3 dark brown bags, 2 wavy beige bags, 5 dull turquoise bags, 2 drab tan bags.
dotted tomato bags contain 3 drab tan bags, 2 striped magenta bags, 5 dim violet bags, 4 wavy tomato bags.
vibrant white bags contain 5 bright crimson bags, 2 mirrored white bags, 5 mirrored indigo bags, 4 wavy teal bags.
shiny fuchsia bags contain 1 pale lime bag.
wavy fuchsia bags contain 4 clear cyan bags.
dotted gray bags contain 3 striped chartreuse bags, 1 dark fuchsia bag.
bright tomato bags contain 4 wavy orange bags, 2 dotted salmon bags, 1 striped gray bag, 3 pale tomato bags.
clear chartreuse bags contain 3 clear purple bags.
dim teal bags contain 3 faded silver bags, 5 vibrant silver bags, 2 wavy fuchsia bags.
dotted yellow bags contain 5 bright bronze bags, 4 drab teal bags.
dark indigo bags contain 5 plaid red bags, 5 dim purple bags.
wavy black bags contain 5 shiny tomato bags, 2 clear gray bags, 4 dim lavender bags, 3 clear blue bags.
striped green bags contain 3 light crimson bags, 5 mirrored cyan bags, 2 mirrored maroon bags, 2 faded yellow bags.
dull lime bags contain 3 pale yellow bags.
faded chartreuse bags contain 2 wavy teal bags, 3 dim olive bags, 2 dull purple bags, 5 vibrant plum bags.
dark yellow bags contain 2 muted brown bags.
plaid beige bags contain 3 pale green bags, 3 bright purple bags, 5 faded black bags, 1 drab brown bag.
faded maroon bags contain 5 drab tomato bags.
muted silver bags contain 3 striped lime bags, 3 dim orange bags, 3 muted aqua bags, 1 plaid black bag.
pale violet bags contain 1 mirrored gray bag, 1 dull gold bag, 1 wavy crimson bag, 1 pale magenta bag.
dim olive bags contain no other bags.
mirrored bronze bags contain 2 drab white bags.
dull green bags contain 1 striped silver bag, 2 bright orange bags, 4 dull yellow bags, 4 dotted chartreuse bags.
bright gray bags contain 1 striped gray bag, 5 dull teal bags, 4 light beige bags, 2 vibrant orange bags.
light indigo bags contain 1 dim maroon bag, 4 dark indigo bags, 1 dark brown bag, 2 muted beige bags.
bright magenta bags contain 2 muted lime bags.
posh crimson bags contain 4 pale indigo bags, 2 faded green bags.
vibrant plum bags contain 1 posh gray bag, 3 mirrored silver bags, 4 bright brown bags, 2 posh magenta bags.
wavy lime bags contain 4 wavy black bags, 4 shiny cyan bags, 5 striped aqua bags, 4 plaid gray bags.
shiny silver bags contain 5 dotted crimson bags, 2 wavy turquoise bags, 1 shiny coral bag.
dark tan bags contain 5 clear silver bags.
mirrored brown bags contain 1 dotted brown bag, 2 plaid gray bags, 5 dull tomato bags, 5 clear black bags.
muted brown bags contain 3 drab magenta bags, 4 plaid aqua bags, 5 dim black bags.
posh black bags contain 2 bright turquoise bags, 3 mirrored maroon bags, 1 dull white bag.
wavy aqua bags contain 3 drab green bags, 3 clear magenta bags.
vibrant chartreuse bags contain 3 muted violet bags.
wavy silver bags contain 2 muted yellow bags, 4 plaid violet bags.
shiny salmon bags contain 1 clear yellow bag.
clear purple bags contain 2 posh green bags, 2 muted gray bags.
clear cyan bags contain 5 posh gray bags, 5 plaid aqua bags, 1 wavy tomato bag, 1 dim lavender bag.
wavy coral bags contain 5 dim yellow bags, 3 clear yellow bags.
wavy green bags contain 4 plaid bronze bags, 4 dull coral bags.
mirrored gold bags contain 5 bright lavender bags.
muted fuchsia bags contain 1 dotted purple bag.
clear maroon bags contain 3 muted gray bags, 2 bright chartreuse bags, 3 dotted gold bags.
faded salmon bags contain 5 clear green bags.
striped aqua bags contain 5 pale yellow bags, 1 dotted salmon bag, 1 wavy teal bag, 1 muted yellow bag.
plaid fuchsia bags contain 2 dim olive bags.
pale chartreuse bags contain 3 posh magenta bags, 3 mirrored yellow bags.
shiny beige bags contain 1 mirrored indigo bag.
posh aqua bags contain 3 pale silver bags, 3 shiny tan bags, 5 striped blue bags, 5 dull salmon bags.
dull magenta bags contain 5 dotted lime bags, 4 bright plum bags, 5 vibrant turquoise bags.
posh tomato bags contain 5 shiny tan bags, 1 wavy salmon bag.
clear red bags contain 5 clear black bags.
dotted aqua bags contain 1 clear black bag.
clear olive bags contain 1 plaid gray bag, 3 clear cyan bags.
dotted green bags contain 3 light red bags.
clear teal bags contain 5 faded coral bags, 3 wavy plum bags, 5 bright orange bags, 1 clear purple bag.
plaid orange bags contain 4 pale chartreuse bags, 1 dark silver bag, 2 drab tomato bags.
pale teal bags contain 1 drab black bag.
posh chartreuse bags contain 1 dotted gold bag, 4 bright salmon bags.
pale red bags contain 2 vibrant plum bags, 4 wavy cyan bags, 2 dotted white bags, 1 posh silver bag.
faded violet bags contain 1 mirrored white bag, 4 muted green bags, 5 mirrored olive bags, 1 dim brown bag.
faded fuchsia bags contain 2 dark brown bags.
dotted brown bags contain 4 clear blue bags.
dark teal bags contain 5 dull cyan bags.
bright salmon bags contain 2 pale black bags, 5 dotted chartreuse bags, 2 striped chartreuse bags.
pale blue bags contain 4 shiny gold bags, 2 clear white bags, 1 dotted coral bag.
dim tan bags contain 3 plaid yellow bags, 5 clear blue bags, 2 clear cyan bags.
dull beige bags contain 5 shiny maroon bags, 4 mirrored bronze bags, 4 dark plum bags.
clear magenta bags contain 5 dim bronze bags, 5 wavy olive bags.
bright black bags contain 2 bright bronze bags, 5 mirrored gold bags, 4 dark yellow bags.
muted aqua bags contain 2 dark teal bags.
faded blue bags contain 4 clear salmon bags, 1 light cyan bag, 5 wavy tomato bags.
dotted indigo bags contain 2 shiny maroon bags, 2 wavy tan bags, 4 dim tomato bags, 1 posh plum bag.
striped chartreuse bags contain 2 dotted orange bags, 3 bright lavender bags.
dim indigo bags contain 4 shiny coral bags, 4 mirrored olive bags.
dotted purple bags contain 4 mirrored white bags, 1 posh yellow bag, 5 drab maroon bags.
muted chartreuse bags contain 5 bright silver bags, 2 bright brown bags.
shiny purple bags contain 3 dim maroon bags, 2 mirrored lime bags, 2 light lavender bags, 3 dotted salmon bags.
faded white bags contain 3 vibrant white bags, 5 muted gray bags.
muted red bags contain 3 posh coral bags.
mirrored tan bags contain 1 dotted gold bag, 2 dark coral bags, 3 light purple bags.
dim blue bags contain 3 dull blue bags, 4 posh plum bags.
bright indigo bags contain 1 muted white bag, 1 wavy fuchsia bag.
striped crimson bags contain 3 dotted coral bags.
light orange bags contain 3 striped chartreuse bags, 4 bright silver bags, 5 clear cyan bags.
posh yellow bags contain 3 bright brown bags.
dotted beige bags contain 1 plaid red bag.
faded aqua bags contain 3 drab tan bags.
shiny red bags contain 3 striped lime bags, 5 wavy teal bags, 2 muted olive bags, 1 shiny chartreuse bag.
light tomato bags contain 4 muted green bags.
bright olive bags contain 4 shiny maroon bags, 1 striped tan bag, 2 drab teal bags, 3 mirrored chartreuse bags.
mirrored white bags contain 4 vibrant aqua bags, 4 clear blue bags, 4 bright violet bags, 1 muted olive bag.
posh olive bags contain 2 shiny maroon bags, 3 faded coral bags, 1 dark turquoise bag.
vibrant lime bags contain 1 light lime bag, 5 bright lime bags, 4 vibrant olive bags.
striped brown bags contain 3 clear chartreuse bags, 4 drab magenta bags.
striped lavender bags contain 1 wavy plum bag.
wavy white bags contain 4 dotted red bags.
dark bronze bags contain 2 posh green bags, 1 dotted crimson bag, 5 bright lavender bags, 1 shiny coral bag.
mirrored black bags contain 3 muted salmon bags.
shiny magenta bags contain 4 dotted orange bags, 4 bright silver bags, 3 posh coral bags.
light bronze bags contain 3 dotted coral bags.
mirrored gray bags contain 1 muted olive bag, 1 bright violet bag.
bright lavender bags contain 1 dull tomato bag, 2 clear blue bags.
drab yellow bags contain 3 dim tomato bags, 3 striped green bags.
dark chartreuse bags contain 5 vibrant violet bags, 4 shiny tan bags, 4 dark orange bags, 1 dull tan bag.
vibrant indigo bags contain 3 mirrored violet bags, 3 light teal bags, 2 dim red bags.
plaid green bags contain 3 wavy blue bags, 4 wavy yellow bags, 1 dull lavender bag.
mirrored purple bags contain 5 vibrant silver bags.
vibrant yellow bags contain 4 plaid brown bags, 3 drab bronze bags, 5 posh bronze bags, 3 mirrored lime bags.
pale gold bags contain 4 shiny indigo bags, 4 clear maroon bags.
shiny cyan bags contain 3 dim olive bags.
dim salmon bags contain 5 faded beige bags, 2 faded orange bags, 2 shiny purple bags.
dark crimson bags contain 3 dull aqua bags, 1 wavy olive bag, 3 posh plum bags, 3 bright brown bags.
vibrant gold bags contain 3 wavy gray bags, 4 clear white bags, 1 faded salmon bag, 3 drab aqua bags.
faded magenta bags contain 5 plaid aqua bags, 4 faded purple bags, 5 wavy bronze bags.
drab black bags contain 3 pale aqua bags, 2 clear coral bags, 2 mirrored silver bags, 5 dark cyan bags.
bright green bags contain 1 shiny aqua bag, 5 drab salmon bags, 5 wavy tomato bags, 4 faded beige bags.
bright aqua bags contain 2 vibrant magenta bags, 3 dim indigo bags, 5 dark fuchsia bags.
pale olive bags contain 1 dotted brown bag.
mirrored fuchsia bags contain 1 dull brown bag, 3 light cyan bags.
mirrored red bags contain 3 plaid lavender bags.
wavy blue bags contain 5 wavy turquoise bags, 3 light green bags, 4 dim indigo bags, 3 posh coral bags.
clear silver bags contain 4 plaid gray bags.
muted white bags contain 2 dotted salmon bags, 4 mirrored white bags, 3 clear cyan bags, 2 muted chartreuse bags.
dim tomato bags contain 3 drab white bags, 1 posh gray bag, 3 dark cyan bags, 5 posh green bags.
drab beige bags contain 1 light orange bag, 3 bright salmon bags, 3 pale silver bags.
clear gold bags contain 2 vibrant white bags, 2 plaid yellow bags.
vibrant orange bags contain 5 muted chartreuse bags.
striped tan bags contain 1 wavy gold bag, 3 mirrored black bags, 1 shiny aqua bag, 5 vibrant red bags.
bright lime bags contain 4 dim indigo bags, 3 dull tomato bags.
bright red bags contain 5 drab magenta bags, 1 clear salmon bag.
vibrant green bags contain 4 plaid tomato bags.
light tan bags contain 5 muted green bags.
striped white bags contain 1 faded silver bag, 2 vibrant red bags.
dull violet bags contain 5 dull turquoise bags.
drab salmon bags contain 3 posh magenta bags, 1 dark teal bag.
mirrored cyan bags contain 2 dim violet bags, 1 plaid aqua bag, 1 vibrant blue bag, 1 posh magenta bag.
wavy teal bags contain 1 bright crimson bag, 2 light cyan bags, 4 striped silver bags.
vibrant purple bags contain 5 shiny magenta bags, 1 dotted orange bag, 2 wavy teal bags.
faded beige bags contain 1 posh green bag, 5 clear coral bags.
faded lime bags contain 1 wavy gray bag, 1 light orange bag, 5 clear bronze bags.
mirrored green bags contain 5 drab bronze bags, 3 muted violet bags, 1 clear blue bag.
light green bags contain 5 mirrored lavender bags, 3 drab gold bags.
pale crimson bags contain 3 pale chartreuse bags.
mirrored aqua bags contain 4 drab plum bags.
dull crimson bags contain 2 bright white bags, 5 drab olive bags, 5 pale salmon bags.
dull purple bags contain 1 posh magenta bag, 3 mirrored brown bags.
bright white bags contain 4 vibrant blue bags, 3 dull brown bags, 4 drab green bags.
drab indigo bags contain 2 bright salmon bags, 2 muted maroon bags, 2 clear gray bags.
striped fuchsia bags contain 2 drab gold bags, 4 mirrored white bags, 3 muted black bags, 1 dark teal bag.
dark tomato bags contain 3 muted fuchsia bags, 1 dotted lavender bag, 4 drab turquoise bags.
mirrored tomato bags contain 5 dark olive bags, 4 light black bags, 4 dark magenta bags.
dark plum bags contain 4 wavy yellow bags, 4 shiny salmon bags.
dark salmon bags contain 1 dim bronze bag, 4 pale indigo bags, 5 dotted chartreuse bags.
dotted lime bags contain 1 shiny brown bag, 3 faded lavender bags.
dark red bags contain 3 posh green bags, 1 vibrant bronze bag, 2 dull maroon bags.
dim lavender bags contain 2 dark turquoise bags.
striped cyan bags contain 1 clear chartreuse bag.
dull indigo bags contain 5 shiny brown bags.
faded green bags contain 1 drab maroon bag.
drab fuchsia bags contain 2 clear olive bags, 1 bright cyan bag.
drab gold bags contain 2 dull turquoise bags, 5 dim lavender bags, 4 light teal bags.
dotted violet bags contain 3 drab tomato bags, 5 dark lavender bags, 4 bright fuchsia bags.
shiny turquoise bags contain 4 light black bags.
muted green bags contain 3 vibrant bronze bags, 4 dim olive bags, 2 posh yellow bags, 2 dull cyan bags.
pale purple bags contain 2 drab yellow bags, 3 bright crimson bags.
posh fuchsia bags contain 1 dull tan bag, 2 dim orange bags.
drab teal bags contain 1 dim violet bag, 2 drab green bags, 5 mirrored lavender bags, 2 faded purple bags.
mirrored teal bags contain 4 vibrant aqua bags, 2 dull turquoise bags, 4 vibrant bronze bags, 3 mirrored olive bags.
muted violet bags contain 3 wavy chartreuse bags.
mirrored salmon bags contain 3 clear cyan bags, 5 posh plum bags, 1 shiny coral bag.
vibrant crimson bags contain 4 dotted chartreuse bags, 2 wavy yellow bags, 3 drab green bags.
dotted teal bags contain 3 clear black bags, 1 faded blue bag, 1 clear beige bag, 4 striped brown bags.
posh orange bags contain 1 dim olive bag.
striped bronze bags contain 1 dull salmon bag, 4 wavy teal bags, 1 pale salmon bag, 2 dim aqua bags.
clear lime bags contain 1 dim lavender bag, 1 drab magenta bag.
muted magenta bags contain 1 shiny indigo bag, 4 mirrored cyan bags, 4 shiny cyan bags, 2 posh bronze bags.
bright chartreuse bags contain 5 drab white bags, 3 dotted purple bags.
dim magenta bags contain 2 dull turquoise bags, 1 dull coral bag, 3 dark violet bags, 4 muted crimson bags.
pale cyan bags contain 5 dotted coral bags, 4 drab chartreuse bags, 4 dull plum bags.
shiny white bags contain 2 drab salmon bags, 3 shiny silver bags.
faded tan bags contain 4 posh magenta bags, 1 pale teal bag.

653
2020/inputs/day8.txt Normal file
View file

@ -0,0 +1,653 @@
acc +9
acc -2
acc -12
acc +33
jmp +301
nop +508
jmp +216
acc +27
acc +35
acc +43
acc +31
jmp +309
acc +18
acc -19
acc +7
jmp +44
acc -13
acc -17
acc +31
jmp +311
nop +612
jmp +143
acc +22
nop +85
jmp +458
acc -3
jmp +13
acc -19
acc +27
acc +12
jmp +483
acc +40
acc +6
jmp +128
jmp +10
acc +0
acc -3
acc -2
jmp -11
acc +43
acc -12
jmp +158
acc +0
jmp +240
jmp +1
acc +5
acc +15
jmp +187
nop +563
jmp +51
acc -16
jmp +158
jmp +322
acc +47
nop -1
jmp +299
acc +26
acc +25
jmp +232
jmp -9
acc +15
jmp +54
jmp +558
acc +7
acc -7
jmp +399
nop +447
jmp +71
acc +26
acc +46
jmp +145
acc +38
acc +30
acc +21
jmp +263
acc +10
jmp +168
acc +22
nop +561
jmp -26
jmp +1
acc -7
jmp -5
acc +28
acc -6
jmp +370
jmp +94
acc +50
acc +42
acc -9
acc +30
jmp +70
acc +29
jmp +166
acc -5
acc -18
nop +84
acc +2
jmp +366
jmp -40
acc -4
acc -15
acc -1
jmp +169
jmp +1
acc -4
acc +0
jmp -45
nop -21
nop +241
acc -18
acc +19
jmp +26
nop -51
jmp +260
acc +17
jmp +428
acc +6
jmp +405
acc +22
acc +10
nop +471
jmp +352
acc -6
acc +48
acc +7
acc +3
jmp +57
acc -10
acc +16
acc +16
acc +43
jmp +432
acc -5
acc +0
nop +339
acc +49
jmp +17
acc +33
nop +166
acc -5
jmp +392
nop +246
acc -7
acc +21
acc +30
jmp +398
acc +36
acc +24
acc -15
acc -9
jmp +114
acc +19
jmp +11
acc +43
nop +182
jmp -129
nop -29
acc -6
acc +2
jmp +398
jmp +78
acc +36
jmp +393
acc +15
nop -11
acc -7
acc -9
jmp +76
acc +0
acc +27
jmp +25
acc +27
nop -54
jmp +458
acc +3
acc +29
acc -4
acc +43
jmp +413
acc +33
acc +13
jmp +382
jmp -83
acc +42
acc +24
jmp +64
acc +23
acc -13
nop +110
acc -5
jmp +114
jmp +113
nop +112
acc +26
jmp -133
jmp -12
jmp +1
jmp +330
acc +25
acc -1
acc +30
acc +42
jmp -187
jmp +1
acc +20
acc +35
acc +36
jmp -125
jmp +165
acc +28
acc -17
acc -12
jmp +1
jmp -120
nop +1
acc +2
acc +26
jmp +398
acc +20
acc -1
jmp -127
acc +36
acc +14
jmp +1
jmp +331
acc +50
acc +1
acc -10
nop +159
jmp -83
jmp +374
acc +17
jmp +372
acc +44
nop -39
jmp +228
acc +17
jmp +74
acc +16
acc +33
acc -2
jmp +152
jmp +29
acc +8
acc +27
nop +59
jmp -32
acc +28
jmp -227
nop -35
jmp -168
acc +13
nop +390
jmp -204
acc +16
acc +44
jmp -230
jmp +25
acc +30
jmp +383
acc -11
acc +38
acc +11
jmp +341
acc +35
acc +46
acc -1
jmp +94
acc -4
acc +12
jmp +111
jmp +133
nop +283
acc +13
acc +37
jmp +74
nop -218
jmp -178
acc +46
acc +25
acc -5
jmp -174
acc +28
acc +39
acc +36
acc +22
jmp -172
acc +19
jmp -250
nop +62
acc +44
nop +347
acc +40
jmp +345
acc -3
acc -13
acc -11
jmp +56
jmp -180
acc +17
acc -4
acc +46
nop -165
jmp +321
acc -4
jmp +1
acc +9
acc -12
jmp -155
acc +5
jmp -96
acc +0
acc -2
acc +38
jmp +67
acc -4
nop -283
acc +28
jmp +324
acc -9
acc +43
acc -1
acc +9
jmp -290
acc +3
acc +22
nop +84
acc -17
jmp -210
acc +7
jmp -260
nop -232
nop +87
acc +43
acc +36
jmp +96
jmp +238
acc +13
acc -14
acc +32
acc +11
jmp -146
acc +13
acc +37
acc -10
jmp +187
acc +49
acc +15
jmp -234
jmp -328
jmp -136
jmp +143
jmp +1
acc +27
acc +22
jmp +1
jmp -5
acc +30
nop -7
acc -6
jmp -71
acc -17
acc +15
jmp -52
jmp -126
acc -4
jmp +151
jmp +52
nop -86
acc +25
jmp +187
nop -22
jmp -219
acc +33
nop -120
acc +0
jmp +215
acc +46
acc +38
jmp +1
jmp -262
jmp +157
acc -15
acc +48
acc +39
acc +10
jmp -137
acc +47
acc +50
jmp -324
nop +214
acc +39
jmp -178
acc +49
acc -10
jmp -268
jmp +50
acc -14
nop -100
jmp +20
acc +45
acc -12
acc -4
jmp -208
acc -19
jmp -340
acc +36
nop -358
acc +5
jmp -348
acc +47
nop -18
acc -12
jmp -131
acc +19
acc +10
acc +19
acc +31
jmp -164
nop +162
nop -260
jmp +146
acc +32
acc -1
nop -14
jmp -192
acc +3
acc +31
nop -185
jmp -208
jmp -69
acc +43
acc +43
jmp -68
acc -16
acc +5
acc -9
jmp +126
acc +33
acc +2
acc +34
acc -9
jmp -16
acc +34
acc -19
jmp -266
nop +135
nop -389
acc +33
jmp -195
acc +48
jmp +1
acc -12
jmp +143
nop -317
acc -14
nop -127
acc +32
jmp -372
acc +24
nop -41
nop -42
jmp -344
acc +23
nop +117
nop +92
acc +42
jmp +143
acc +48
acc -6
nop -272
acc -13
jmp -379
acc -2
acc +44
acc +9
jmp -369
acc +6
acc +25
acc +34
jmp -301
nop -227
acc +43
jmp -141
acc +12
acc +41
acc +17
acc -11
jmp +29
jmp -121
acc +6
acc +7
acc +7
jmp +131
nop +144
nop -142
acc -13
acc -18
jmp +149
acc +14
acc +49
acc +25
acc -17
jmp -9
acc +26
acc -4
jmp -230
acc -18
acc +36
acc +27
nop -142
jmp +21
acc +34
nop +54
jmp -476
acc +10
jmp -174
nop -354
acc +1
jmp -324
acc +40
jmp +94
acc -12
jmp -136
nop -454
acc -14
jmp +116
acc +12
acc -1
nop -453
jmp -241
jmp -479
acc -19
jmp -87
acc +27
acc +48
acc +0
jmp -476
acc +16
acc +46
jmp -534
acc +0
jmp -344
acc +0
acc +28
jmp +10
jmp -248
nop -186
jmp +1
acc +26
jmp -153
acc +14
acc -8
nop -416
jmp -91
jmp -409
jmp -326
acc +2
acc +8
acc -18
acc +33
jmp -468
jmp -175
acc -7
acc +45
jmp -18
jmp -375
acc -8
jmp +28
acc -16
nop -38
acc +37
acc +48
jmp -343
acc +10
acc +26
acc -9
acc -16
jmp -348
acc +37
jmp -453
acc -2
acc +27
acc +17
acc +28
jmp -406
acc +25
acc +24
acc +44
acc +44
jmp -532
acc +10
jmp -531
acc +39
acc +40
jmp -284
acc +19
acc +3
nop -533
acc -3
jmp -162
nop -438
acc -5
jmp -114
acc +45
acc +1
acc +28
acc +9
jmp -550
jmp -222
jmp -106
acc -7
nop -263
nop -375
jmp -381
acc -4
nop -223
jmp -171
jmp -465
acc -2
nop -562
jmp -190
acc +40
jmp -4
acc +30
acc +21
jmp -435
acc +1
acc +10
jmp +1
jmp -157
acc -7
acc +18
acc -3
acc +24
jmp -113
acc +21
jmp -339
acc +34
jmp -563
acc +27
jmp -589
jmp -61
acc +35
acc +50
acc +8
jmp -553
acc +48
acc -15
acc +29
acc +24
jmp +1

1000
2020/inputs/day9.txt Normal file

File diff suppressed because it is too large Load diff

38
2020/src/day1.php Normal file
View file

@ -0,0 +1,38 @@
<?php
$input_file = '../inputs/day1.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$nums = array_map(fn ($str) => (int)$str, array_filter(explode("\n", $input), 'is_numeric'));
print 'Part 1 answer: ' . solve_part_one($nums) . "\n";
print 'Part 2 answer: ' . solve_part_two($nums) . "\n";
}
}
function solve_part_one(array $nums): int
{
for ($i = 0; $i < count($nums); $i++) {
for ($j = 0; $j < count($nums); $j++) {
if ($nums[$i] + $nums[$j] == 2020) {
return $nums[$i] * $nums[$j];
}
}
}
return 0;
}
function solve_part_two(array $nums): int
{
for ($i = 0; $i < count($nums); $i++) {
for ($j = 0; $j < count($nums); $j++) {
for ($k = 0; $k < count($nums); $k++) {
if ($nums[$i] + $nums[$j] + $nums[$k] == 2020) {
return $nums[$i] * $nums[$j] * $nums[$k];
}
}
}
}
return 0;
}

57
2020/src/day10.php Normal file
View file

@ -0,0 +1,57 @@
<?php
$input_file = '../inputs/day10.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$joltages = array_map('trim', explode("\n", $input));
print 'Part 1 answer: ' . solve_part_one($joltages) . "\n";
print 'Part 2 answer: ' . solve_part_two($joltages) . "\n";
}
}
function solve_part_one(array $joltages): int
{
$sorted_joltages = $joltages;
$sorted_joltages[] = "0";
sort($sorted_joltages);
$sorted_joltages[] = $sorted_joltages[count($sorted_joltages) - 1] + 3;
$differences = chain_adapters($sorted_joltages);
return $differences[0] * $differences[2];
}
function solve_part_two(array $joltages): int
{
$sorted_joltages = $joltages;
$sorted_joltages[] = "0";
sort($sorted_joltages);
$sorted_joltages[] = $sorted_joltages[count($sorted_joltages) - 1] + 3;
return get_max_chains($sorted_joltages);
}
function chain_adapters(array $joltages): array
{
$differences = [0, 0, 0];
for ($i = 1; $i < count($joltages); $i++) {
$diff = $joltages[$i] - $joltages[$i - 1];
$differences[$diff - 1] += 1;
}
return $differences;
}
function get_max_chains(array $joltages): int
{
$jolt_count = count($joltages);
$memo = [$jolt_count - 1 => 1];
for ($i = $jolt_count - 2; $i >= 0; $i--) {
$count = 0;
for ($j = $i + 1; $j < $jolt_count && $joltages[$j] - $joltages[$i] <= 3; $j++) {
$count += $memo[$j];
}
$memo[$i] = $count;
}
return $memo[0];
}

126
2020/src/day11.php Normal file
View file

@ -0,0 +1,126 @@
<?php
$input_file = '../inputs/day11.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$rows = array_map('trim', explode("\n", $input));
print 'Part 1 answer: ' . solve($rows, false) . "\n";
print 'Part 2 answer: ' . solve($rows, true) . "\n";
}
}
function solve(array $rows, bool $moreTolerant): int
{
$changed = true;
$occupied = 0;
$newState = $rows;
while ($changed) {
$simulation_result = simulate($newState, $moreTolerant);
$changed = $simulation_result->changed;
$occupied = $simulation_result->full;
$newState = $simulation_result->state;
}
return $occupied;
}
function simulate(array $rows, bool $moreTolerant): day11_state
{
$newState = $rows;
$changed = false;
$empty = 0;
$floor = 0;
$full = 0;
for ($i = 0; $i < count($rows); $i++) {
for ($j = 0; $j < strlen($rows[$i]); $j++) {
$adjacent_occupied = get_adjacent_occupied($moreTolerant, $rows, $i, $j);
if ($rows[$i][$j] === 'L' && $adjacent_occupied === 0) {
$changed = true;
$full += 1;
$newState[$i][$j] = '#';
} elseif ($rows[$i][$j] === '#' && $adjacent_occupied >= ($moreTolerant ? 5 : 4)) {
$changed = true;
$empty += 1;
$newState[$i][$j] = 'L';
} else {
if ($rows[$i][$j] === 'L')
$empty += 1;
elseif ($rows[$i][$j] === '#')
$full += 1;
else
$floor += 1;
}
}
}
return new day11_state($newState, $changed, $empty, $floor, $full);
}
function get_adjacent_occupied(bool $moreTolerant, array $state, int $y, int $x): int
{
$occupied = 0;
if ($moreTolerant === false) {
for ($i = $y - 1; $i < $y + 2; $i++) {
if ($i >= 0 && $i < count($state)) {
for ($j = $x - 1; $j < $x + 2; $j++) {
if ($j >= 0 && $j < strlen($state[$i]) && !($i === $y && $j === $x)) {
$occupied += $state[$i][$j] === '#' ? 1 : 0;
}
}
}
}
} else {
$x_dir = -1;
$y_dir = -1;
while (true) {
$x_pos = $x;
$y_pos = $y;
while (true) {
if ($x_dir === 0 && $y_dir === 0)
break;
$x_pos += $x_dir;
$y_pos += $y_dir;
if ($y_pos < 0 || $y_pos >= count($state) || $x_pos < 0 || $x_pos >= strlen($state[$y_pos]))
break;
elseif ($state[$y_pos][$x_pos] === '.')
continue;
else {
$occupied += $state[$y_pos][$x_pos] === '#';
break;
}
}
$y_dir += 1;
if ($y_dir == 2) {
$y_dir = -1;
$x_dir += 1;
}
if ($x_dir == 2)
break;
}
}
return $occupied;
}
class day11_state
{
public array $state;
public bool $changed;
public int $empty;
public int $floor;
public int $full;
function __construct(array $state, bool $changed, int $empty, int $floor, int $full)
{
$this->state = $state;
$this->changed = $changed;
$this->empty = $empty;
$this->floor = $floor;
$this->full = $full;
}
}

141
2020/src/day12.php Normal file
View file

@ -0,0 +1,141 @@
<?php
$input_file = '../inputs/day12.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$instructions = array_map('trim', explode("\n", $input));
print 'Part 1 answer: ' . solve_part_one($instructions) . "\n";
print 'Part 2 answer: ' . solve_part_two($instructions) . "\n";
}
}
function solve_part_one(array $instructions): int
{
$state = new day12_state();
foreach (parse_instructions($instructions) as $instruction) {
$state = move($instruction, $state);
}
return abs($state->v_pos) + abs($state->h_pos);
}
function solve_part_two(array $instructions): int
{
$state = new day12_state();
foreach (parse_instructions($instructions) as $instruction)
$state = move_with_waypoint($instruction, $state);
return abs($state->v_pos) + abs($state->h_pos);
}
function move(array $instruction, day12_state $state): day12_state
{
switch ($instruction[0]) {
case 'N':
$state->v_pos += $instruction[1];
break;
case 'S':
$state->v_pos -= +$instruction[1];
break;
case 'E':
$state->h_pos += $instruction[1];
break;
case 'W':
$state->h_pos -= $instruction[1];
break;
case 'F':
switch ($state->facing_direction % 4) {
case 0:
$state->v_pos += $instruction[1];
break;
case 1:
$state->h_pos += $instruction[1];
break;
case 2:
$state->v_pos -= $instruction[1];
break;
case 3:
$state->h_pos -= $instruction[1];
break;
}
break;
case 'R':
$state->facing_direction += ($instruction[1] / 90);
break;
case 'L':
$state->facing_direction -= ($instruction[1] / 90);
break;
}
if ($state->facing_direction < 0)
$state->facing_direction += 4; // NOT THAT EASY, need to wrap around 0
return $state;
}
function move_with_waypoint(array $instruction, day12_state $state): day12_state
{
switch ($instruction[0]) {
case 'N':
$state->w_v_pos += $instruction[1];
break;
case 'S':
$state->w_v_pos -= +$instruction[1];
break;
case 'E':
$state->w_h_pos += $instruction[1];
break;
case 'W':
$state->w_h_pos -= $instruction[1];
break;
case 'F':
for ($i = 0; $i < $instruction[1]; $i++) {
$state->v_pos += $state->w_v_pos;
$state->h_pos += $state->w_h_pos;
}
break;
case 'R':
for ($i = 0; $i < $instruction[1] / 90; $i++) {
$new_v_pos = -$state->w_h_pos;
$new_h_pos = $state->w_v_pos;
$state->w_v_pos = $new_v_pos;
$state->w_h_pos = $new_h_pos;
}
break;
case 'L':
for ($i = 0; $i < $instruction[1] / 90; $i++) {
$new_v_pos = $state->w_h_pos;
$new_h_pos = -$state->w_v_pos;
$state->w_v_pos = $new_v_pos;
$state->w_h_pos = $new_h_pos;
}
break;
}
return $state;
}
function parse_instructions(array $instructions): array
{
$parsed_instructions = [];
foreach ($instructions as $instruction) {
if (preg_match('/^([NSEWLRF])(\d+)$/', trim($instruction), $matches)) {
[, $inst, $arg] = $matches;
$parsed_instructions[] = [$inst, $arg];
}
}
return $parsed_instructions;
}
class day12_state
{
public int $v_pos = 0;
public int $h_pos = 0;
public int $w_v_pos = 1;
public int $w_h_pos = 10;
public int $facing_direction = 1; // N = 0, E = 1, S = 2, W = 3
}

59
2020/src/day13.php Normal file
View file

@ -0,0 +1,59 @@
<?php
$input_file = '../inputs/day13.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$in = array_map('trim', explode("\n", $input));
print 'Part 1 answer: ' . solve_part_one($in) . "\n";
print 'Part 2 answer: ' . solve_part_two($in) . "\n";
}
}
function solve_part_one(array $in): int
{
[$arrival_time, $lines] = $in;
$trimmed_bus_lines = array_map('trim', explode(',', $lines));
$active_lines = array_filter($trimmed_bus_lines, fn ($line) => $line != 'x');
$bus_arrival_times = array_map(get_closest_arrival_time_to($arrival_time), $active_lines);
[$min_key] = array_keys($bus_arrival_times, min($bus_arrival_times));
return $active_lines[$min_key] * ($bus_arrival_times[$min_key] - $arrival_time);
}
function solve_part_two(array $in): int
{
[, $lines] = $in;
$trimmed_bus_lines = array_map('trim', explode(',', $lines));
$active_lines = array_filter($trimmed_bus_lines, fn ($line) => $line != 'x');
return get_first_consecutive_time($active_lines)[0];
}
function get_closest_arrival_time_to(int $target): callable
{
return function (int $x) use ($target): int {
$i = 1;
while ($i * $x < $target) {
$i += 1;
}
return $i * $x;
};
}
function get_first_consecutive_time(array $lines): array
{
if (count($lines) == 1)
return [0, $lines[0]];
else {
$keys = array_keys($lines);
$last_key = $keys[count($keys) - 1];
$last_elem = array_pop($lines);
[$previous_time, $previous_lcm] = get_first_consecutive_time($lines);
$timestamp = $previous_time;
while (true) {
if (($timestamp + $last_key) % $last_elem === 0)
break;
else
$timestamp += $previous_lcm;
}
return [$timestamp, $previous_lcm * $last_elem];
}
}

89
2020/src/day14.php Normal file
View file

@ -0,0 +1,89 @@
<?php
$input_file = '../inputs/day14.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$instructions = array_map('trim', explode("\n", $input));
print 'Part 1 answer: ' . solve_part_one($instructions) . "\n";
print 'Part 2 answer: ' . solve_part_two($instructions) . "\n";
}
}
function solve_part_one(array $instructions): int
{
$parsed = parse_instructions($instructions);
$mask = '';
$mem = [];
foreach ($parsed as $instruction) {
if ($instruction[0] === 'mask')
$mask = $instruction[1];
else
$mem[$instruction[1]] = apply_mask($mask, $instruction[2]);
}
return array_sum($mem);
}
function solve_part_two(array $instructions): int
{
$parsed = parse_instructions($instructions);
$mask = '';
$mem = [];
foreach ($parsed as $instruction) {
if ($instruction[0] === 'mask')
$mask = $instruction[1];
else {
foreach (apply_mask_two($mask, $instruction[1]) as $address)
$mem[$address] = $instruction[2];
}
}
return array_sum($mem);
}
function apply_mask_two(string $mask, int $num): array
{
$addresses = [''];
$bin = str_pad(decbin($num), 36, '0', STR_PAD_LEFT);
for ($i = 0; $i < strlen($bin); $i++) {
switch ($mask[$i]) {
case '0':
$addresses = array_map(fn ($addr) => $addr . $bin[$i], $addresses);
break;
case '1':
$addresses = array_map(fn ($addr) => $addr . '1', $addresses);
break;
case 'X':
$new_addresses = [];
foreach ($addresses as $address) {
$new_addresses[] = $address . '0';
$new_addresses[] = $address . '1';
}
$addresses = $new_addresses;
break;
}
}
return array_map('bindec', $addresses);
}
function apply_mask(string $mask, int $num): int
{
$bin = str_pad(decbin($num), 36, '0', STR_PAD_LEFT);
for ($i = 0; $i < strlen($bin); $i++)
if ($mask[$i] != 'X')
$bin[$i] = $mask[$i];
return bindec($bin);
}
function parse_instructions(array $instructions): array
{
$parsed_instructions = [];
foreach ($instructions as $instruction) {
[$inst, $arg] = array_map('trim', explode(' = ', $instruction));
if ($inst === 'mask')
$parsed_instructions[] = [$inst, $arg];
else
$parsed_instructions[] = ['mem', substr($inst, 4, strlen($inst) - 5), $arg];
}
return $parsed_instructions;
}

43
2020/src/day15.php Normal file
View file

@ -0,0 +1,43 @@
<?php
$input_file = '../inputs/day15.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$numbers = array_map('trim', explode(',', $input));
print 'Part 1 answer: ' . solve_part_one($numbers) . "\n";
print 'Part 2 answer: ' . solve_part_two($numbers) . "\n";
}
}
function solve_part_one(array $numbers): int
{
return get_number_in_sequence($numbers, 2020);
}
function solve_part_two(array $numbers): int
{
ini_set('memory_limit', '-1');
return get_number_in_sequence($numbers, 30000000);
}
function get_number_in_sequence(array $initial_numbers, int $num): int
{
$last_spoken = [];
foreach ($initial_numbers as $turn => $number)
$last_spoken[(int)$number] = (int)$turn + 1;
$last = array_keys($last_spoken)[count($last_spoken) - 1];
for ($i = count($last_spoken); $i < $num; $i++) {
if (array_key_exists($last, $last_spoken)) {
$prev = $last;
$last = $i - $last_spoken[$last];
$last_spoken[$prev] = $i;
} else {
$last_spoken[$last] = $i;
$last = 0;
}
}
return $last;
}

154
2020/src/day16.php Normal file
View file

@ -0,0 +1,154 @@
<?php
$input_file = '../inputs/day16.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$lines = array_map('trim', explode("\n", $input));
print 'Part 1 answer: ' . solve_part_one($lines) . "\n";
print 'Part 2 answer: ' . solve_part_two($lines) . "\n";
}
}
function solve_part_one(array $lines): int
{
[$rules,, $nearby_tickets] = parse_lines($lines);
$invalid_values = [];
foreach ($nearby_tickets as $ticket) {
foreach ($ticket as $field) {
if (field_is_valid($rules, $field) == false)
$invalid_values[] = $field;
}
}
return array_sum($invalid_values);
}
function solve_part_two(array $lines): int
{
[$rules, $my_ticket, $nearby_tickets] = parse_lines($lines);
$invalid_tickets = get_invalid_tickets($nearby_tickets, $rules);
$valid_rules = get_valid_rules($rules, $my_ticket, $nearby_tickets, $invalid_tickets);
$accum = 1;
foreach ($valid_rules as $rule_name => $idx) {
if (str_starts_with($rule_name, "departure"))
$accum *= $my_ticket[$idx];
}
return $accum;
}
function get_valid_rules(array $rules, array $my_ticket, array $nearby_tickets, array $invalid_tickets): array
{
$possible_valid_rules = [];
foreach ($rules as $rule) {
for ($i = 0; $i < count($my_ticket); $i++) {
$rule_valid = true;
foreach ($nearby_tickets as $idx => $ticket) {
if (in_array($idx, $invalid_tickets) == false) {
$field = $ticket[$i];
if ((($field >= $rule[1][0] && $field <= $rule[1][1]) || ($field >= $rule[2][0] && $field <= $rule[2][1])) == false) {
$rule_valid = false;
break;
}
}
if ($rule_valid == false)
break;
}
if ($rule_valid) {
$possible_valid_rules[$i][] = $rule[0];
}
}
}
return get_valid_rules_from_possibilities($possible_valid_rules);
}
function get_valid_rules_from_possibilities(array $possible_valid_rules): array
{
$valid_rules = [];
uasort($possible_valid_rules, fn ($x, $y) => count($x) > count($y) ? 1 : (count($x) < count($y) ? -1 : 0));
for ($idx = 0; $idx < count($possible_valid_rules); $idx++) {
$elem = $possible_valid_rules[array_keys($possible_valid_rules)[$idx]];
if (count($elem) == 1) {
$rule_name = $elem[array_keys($elem)[0]];
$valid_rules[$rule_name] = $idx;
$possible_valid_rules = array_map(fn ($arr) => array_diff($arr, $elem), $possible_valid_rules);
}
}
return $valid_rules;
}
function get_invalid_tickets(array $nearby_tickets, array $rules): array
{
$invalid_tickets = [];
foreach ($nearby_tickets as $idx => $ticket) {
$ticket_valid = true;
foreach ($ticket as $field) {
if (field_is_valid($rules, $field) == false)
$ticket_valid = false;
}
if ($ticket_valid == false)
$invalid_tickets[] = $idx;
}
return $invalid_tickets;
}
function field_is_valid(array $rules, int $field): bool
{
$valid = false;
foreach ($rules as $rule) {
if (($field >= $rule[1][0] && $field <= $rule[1][1]) || ($field >= $rule[2][0] && $field <= $rule[2][1])) {
$valid = true;
break;
}
}
return $valid;
}
function parse_lines(array $lines): array
{
$section = 0;
$rules = [];
$my_ticket = [];
$nearby_tickets = [];
foreach ($lines as $line) {
if ($line === '') {
$section += 1;
} else {
if ($line != 'your ticket:' && $line != 'nearby tickets:') {
switch ($section) {
case 0:
$rules[] = parse_rule($line);
break;
case 1:
$my_ticket = array_map(fn ($x) => (int)$x, explode(',', $line));
break;
case 2:
$nearby_tickets[] = array_map(fn ($x) => (int)$x, explode(',', $line));
break;
}
}
}
}
return [$rules, $my_ticket, $nearby_tickets];
}
function parse_rule(string $line): array
{
[$name, $values] = array_map('trim', explode(':', $line));
[$min_range, $max_range] = array_map('trim', explode(' or ', $values));
[$min_min, $min_max] = array_map(fn ($x) => (int)$x, explode('-', $min_range));
[$max_min, $max_max] = array_map(fn ($x) => (int)$x, explode('-', $max_range));
return [$name, [$min_min, $min_max], [$max_min, $max_max]];
}

47
2020/src/day2.php Normal file
View file

@ -0,0 +1,47 @@
<?php
$input_file = '../inputs/day2.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$passwords = explode("\n", $input);
print 'Part 1 answer: ' . solve_part_one($passwords) . "\n";
print 'Part 2 answer: ' . solve_part_two($passwords) . "\n";
}
}
function solve_part_one(array $passwords): int
{
function solve_1(int $min, int $max, string $key, string $pass): int
{
$letters = array_count_values(str_split($pass));
if (array_key_exists($key, $letters) && $letters[$key] >= $min && $letters[$key] <= $max)
return 1;
return 0;
}
return parse_passwords_and_solve($passwords, 'solve_1');
}
function solve_part_two(array $passwords): int
{
function solve_2(int $pos1, int $pos2, string $key, string $pass): int
{
if ($pass[$pos1 - 1] === $key xor $pass[$pos2 - 1] === $key)
return 1;
return 0;
}
return parse_passwords_and_solve($passwords, 'solve_2');
}
function parse_passwords_and_solve(array $passwords, callable $fun): int
{
$ret = 0;
foreach ($passwords as $policy) {
preg_match('/^(\d+?)-(\d+?) ([a-z]): (.+?)$/', $policy, $matches);
[$match, $min, $max, $key, $pass] = $matches;
if ($match)
$ret += $fun($min, $max, $key, $pass);
}
return $ret;
}

40
2020/src/day3.php Normal file
View file

@ -0,0 +1,40 @@
<?php
$input_file = '../inputs/day3.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$coordinates = explode("\n", $input);
print 'Part 1 answer: ' . solve_part_one($coordinates) . "\n";
print 'Part 2 answer: ' . solve_part_two($coordinates) . "\n";
}
}
function solve_part_one(array $coords): int
{
return solve_for_slope($coords, 3, 1);
}
function solve_part_two(array $coords): int
{
return solve_for_slope($coords, 1, 1)
* solve_for_slope($coords, 3, 1)
* solve_for_slope($coords, 5, 1)
* solve_for_slope($coords, 7, 1)
* solve_for_slope($coords, 1, 2);
}
function solve_for_slope(array $coords, int $incr_x, int $incr_y): int
{
$current_coords = ['x' => 0, 'y' => 0];
$trees = 0;
while ($current_coords['y'] < (count($coords) - 1)) {
$current_coords['x'] += $incr_x;
$current_coords['y'] += $incr_y;
$current_line = trim($coords[$current_coords['y']]);
$actual_x = $current_coords['x'] % strlen($current_line);
if ($current_line[$actual_x] === '#')
$trees += 1;
}
return $trees;
}

150
2020/src/day4.php Normal file
View file

@ -0,0 +1,150 @@
<?php
use JetBrains\PhpStorm\Pure;
$input_file = '../inputs/day4.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$credentials = explode("\n", $input);
print 'Part 1 answer: ' . solve_part_one($credentials) . "\n";
print 'Part 2 answer: ' . solve_part_two($credentials) . "\n";
}
}
#[Pure] function solve_part_one(array $credentials): int
{
return count(get_valid_passports($credentials));
}
function solve_part_two(array $credentials): int
{
return count(get_valid_passports_with_valid_fields($credentials));
}
function get_valid_passports_with_valid_fields(array $credentials): array
{
function validate_year(string $value, int $min, int $max): bool
{
preg_match('/^(\d{4})$/', $value, $matches);
[$match, $year] = $matches;
if (($match && ($year >= $min && $year <= $max)))
return true;
else
return false;
}
function validate_height(string $value): bool
{
if (preg_match('/^(\d.+?)(cm|in)$/', $value, $matches) > 0) {
if (($matches[2] == 'cm' && $matches[1] >= 150 && $matches[1] <= 193) || ($matches[2] == 'in' && $matches[1] >= 59 && $matches[1] <= 76))
return true;
}
return false;
}
$validate_hair_color = fn ($value) => preg_match('/^#([a-f0-9]{6})$/', $value);
$validate_eye_color = fn ($value) => preg_match('/^(amb|blu|brn|gry|grn|hzl|oth)$/', $value);
$validate_pid = fn ($value) => preg_match('/^0*(\d{9})$/', $value);
$valid_passports = [];
$passports = get_valid_passports($credentials);
foreach ($passports as $passport) {
$valid = true;
foreach ($passport as $field => $value) {
switch ($field) {
case 'byr':
if (!validate_year($value, 1920, 2002))
$valid = false;
break;
case 'iyr':
if (!validate_year($value, 2010, 2020))
$valid = false;
break;
case 'eyr':
if (!validate_year($value, 2020, 2030))
$valid = false;
break;
case 'hgt':
if (!validate_height($value))
$valid = false;
break;
case 'hcl':
if (!$validate_hair_color($value))
$valid = false;
break;
case 'ecl':
if (!$validate_eye_color($value))
$valid = false;
break;
case 'pid':
if (!$validate_pid($value))
$valid = false;
break;
}
}
if ($valid)
$valid_passports[] = $passport;
}
return $valid_passports;
}
#[Pure] function get_valid_passports(array $credentials): array
{
$passports = parse_passports($credentials);
$required_fields = ['byr', 'iyr', 'eyr', 'hgt', 'hcl', 'ecl', 'pid'];
$valid_passports = [];
foreach ($passports as $passport) {
$valid = true;
foreach ($required_fields as $required_field) {
if (!array_key_exists($required_field, $passport))
$valid = false;
}
if ($valid)
$valid_passports[] = $passport;
}
return $valid_passports;
}
#[Pure] function parse_passports(array $credentials): array
{
$passports = [];
$current_credentials = [];
for ($i = 0; $i < count($credentials); $i++) {
$cred = trim($credentials[$i]);
if ($cred == '') {
$passports[] = parse_single_passport($current_credentials);
$current_credentials = [];
} else
$current_credentials[] = $cred;
}
if (count($current_credentials) != 0)
$passports[] = parse_single_passport($current_credentials);
return $passports;
}
function parse_single_passport(array $fields): array
{
$passport = [];
foreach ($fields as $fieldlist) {
$kvps = explode(' ', $fieldlist);
foreach ($kvps as $kvp) {
[$field, $value] = explode(':', $kvp);
$passport[$field] = $value;
}
}
return $passport;
}

73
2020/src/day5.php Normal file
View file

@ -0,0 +1,73 @@
<?php
$input_file = '../inputs/day5.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$passes = explode("\n", $input);
print 'Part 1 answer: ' . solve_part_one($passes) . "\n";
print 'Part 2 answer: ' . solve_part_two($passes) . "\n";
}
}
function solve_part_one(array $passes): int
{
$valid_passes = parse_passes($passes);
$max_pass = 0;
foreach ($valid_passes as $pass)
if ($pass[2] > $max_pass)
$max_pass = $pass[2];
return $max_pass;
}
function solve_part_two(array $passes): int
{
$valid_passes = parse_passes($passes);
$sorted_ids = array_map(fn ($pass) => $pass[2], $valid_passes);
sort($sorted_ids);
for ($i = 0; $i < count($sorted_ids); $i++)
if ($sorted_ids[$i] - $sorted_ids[0] != $i)
return $sorted_ids[$i] - 1;
return 0;
}
function parse_passes(array $passes): array
{
$parsed_passes = [];
foreach ($passes as $pass) {
if (preg_match('/^([FB]{7})([LR]{3})$/', trim($pass), $matches) > 0) {
$min_row = 0;
$max_row = 127;
$min_col = 0;
$max_col = 7;
for ($i = 0; $i < strlen($matches[1]); $i++) {
$tot_rows = $max_row + 1 - $min_row;
$new_tot_rows = $tot_rows / 2;
if ($matches[1][$i] === 'F') {
$max_row -= $new_tot_rows;
} else {
$min_row += $new_tot_rows;
}
}
for ($i = 0; $i < strlen($matches[2]); $i++) {
$tot_cols = $max_col + 1 - $min_col;
$new_tot_cols = $tot_cols / 2;
if ($matches[2][$i] === 'L') {
$max_col -= $new_tot_cols;
} else {
$min_col += $new_tot_cols;
}
}
$parsed_passes[] = [$min_row, $min_col, $min_row * 8 + $min_col];
}
}
return $parsed_passes;
}

44
2020/src/day6.php Normal file
View file

@ -0,0 +1,44 @@
<?php
$input_file = '../inputs/day6.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$answer_groups = explode("\n", $input);
print 'Part 1 answer: ' . solve_part_one($answer_groups) . "\n";
print 'Part 2 answer: ' . solve_part_two($answer_groups) . "\n";
}
}
function solve_part_one(array $answer_groups): int
{
$solve_1 = fn ($form) => strlen(implode('', array_unique(str_split(implode('', $form)))));
return parse_declaration_forms_and_solve($answer_groups, $solve_1);
}
function solve_part_two(array $answer_groups): int
{
$solve_2 = fn ($form) => count(call_user_func_array('array_intersect', array_map(fn ($str) => str_split($str), $form)));
return parse_declaration_forms_and_solve($answer_groups, $solve_2);
}
function parse_declaration_forms_and_solve(array $answer_groups, callable $fn): int
{
$current_answers = [];
$ret = 0;
for ($i = 0; $i < count($answer_groups); $i++) {
$answer = trim($answer_groups[$i]);
if ($answer == '') {
$ret += $fn(array_map(fn ($val) => trim($val), $current_answers));
$current_answers = [];
} else
$current_answers[] = $answer;
}
if (count($current_answers) != 0)
$ret += $fn(array_map(fn ($val) => trim($val), $current_answers));
return $ret;
}

64
2020/src/day7.php Normal file
View file

@ -0,0 +1,64 @@
<?php
$input_file = '../inputs/day7.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$bag_rules = explode("\n", $input);
print 'Part 1 answer: ' . solve_part_one($bag_rules) . "\n";
print 'Part 2 answer: ' . solve_part_two($bag_rules) . "\n";
}
}
function solve_part_one(array $bag_rules): int
{
return count(get_parent_colors(parse_bag_rules($bag_rules), 'shiny gold'));
}
function solve_part_two(array $bag_rules): int
{
return get_content_count(parse_bag_rules($bag_rules), 'shiny gold') - 1;
}
function get_content_count(array $rules, string $color): int
{
$ret = 0;
foreach ($rules[$color] as $content_color => $count)
$ret += $count * get_content_count($rules, $content_color);
return $ret + 1;
}
function get_parent_colors(array $rules, string $color): array
{
$ret = [];
foreach ($rules as $parent_color => $content)
if (array_key_exists($color, $content))
$ret = array_merge($ret, [$parent_color], get_parent_colors($rules, $parent_color));
return array_unique($ret);
}
function parse_bag_rules(array $bag_rules): array
{
$ret = [];
foreach ($bag_rules as $rule) {
if (preg_match('/^(([a-z ]+) bags?) contain ([0-9a-z, ]+ bags?)+\.$/', trim($rule), $matches)) {
[,, $color, $content] = $matches;
if ($content === 'no other bags')
$ret[$color] = [];
elseif (preg_match_all('/((\d+) ([a-z ]+) bags?)+?,?/', trim($content), $content_matches, PREG_SET_ORDER)) {
$parsed_content = [];
foreach ($content_matches as $content_match) {
[,, $content_qty, $content_color] = $content_match;
$parsed_content[$content_color] = $content_qty;
}
$ret[$color] = $parsed_content;
}
}
}
return $ret;
}

108
2020/src/day8.php Normal file
View file

@ -0,0 +1,108 @@
<?php
use JetBrains\PhpStorm\Pure;
$input_file = '../inputs/day8.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$instructions = explode("\n", $input);
print 'Part 1 answer: ' . solve_part_one($instructions) . "\n";
print 'Part 2 answer: ' . solve_part_two($instructions) . "\n";
}
}
function solve_part_one(array $instructions): int
{
return get_acc(parse_instructions($instructions));
}
function solve_part_two(array $instructions): int
{
$original_instructions = parse_instructions($instructions);
foreach ($original_instructions as $idx => $instruction) {
$altered_instructions = $original_instructions;
switch ($instruction[0]) {
case 'jmp':
$altered_instructions[$idx][0] = 'nop';
break;
case 'nop':
$altered_instructions[$idx][0] = 'jmp';
break;
}
if (terminates_correctly($altered_instructions))
return get_acc($altered_instructions);
}
return 0;
}
#[Pure] function terminates_correctly(array $instructions): bool
{
$acc = 0;
$ip = 0;
$execution_count = [];
while ($ip < count($instructions)) {
if (array_key_exists($ip, $execution_count) && $execution_count[$ip] != 0)
return false;
$execution_count[$ip] = 1;
[$acc, $ip] = run_instruction($instructions[$ip], [$acc, $ip]);
}
return true;
}
#[Pure] function get_acc(array $instructions): int
{
$acc = 0;
$ip = 0;
$execution_count = [];
while ($ip < count($instructions)) {
if (array_key_exists($ip, $execution_count) && $execution_count[$ip] != 0)
return $acc;
$execution_count[$ip] = 1;
[$acc, $ip] = run_instruction($instructions[$ip], [$acc, $ip]);
}
return $acc;
}
function run_instruction(array $instruction, array $regs): array
{
[$inst, $arg] = $instruction;
[$acc, $ip] = $regs;
switch ($inst) {
case 'acc':
$acc += $arg;
$ip += 1;
break;
case 'jmp':
$ip += $arg;
break;
case 'nop':
$ip += 1;
break;
}
// print 'Executed ' . $inst . ', $acc = ' . $acc . ', $ip = ' . $ip . "\n";
return [$acc, $ip];
}
function parse_instructions(array $instructions): array
{
$parsed_instructions = [];
foreach ($instructions as $instruction) {
if (preg_match('/^(acc|jmp|nop) ([+\-\d]+)$/', trim($instruction), $matches)) {
[, $inst, $arg] = $matches;
$parsed_instructions[] = [$inst, $arg];
}
}
return $parsed_instructions;
}

74
2020/src/day9.php Normal file
View file

@ -0,0 +1,74 @@
<?php
use JetBrains\PhpStorm\Pure;
$input_file = '../inputs/day9.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$preamble = 25;
$numbers = array_map('trim', explode("\n", $input));
print 'Part 1 answer: ' . solve_part_one($numbers, $preamble) . "\n";
print 'Part 2 answer: ' . solve_part_two($numbers, $preamble) . "\n";
}
}
#[Pure] function solve_part_one(array $numbers, int $preamble): int
{
return get_first_error($numbers, $preamble);
}
function solve_part_two(array $numbers, int $preamble): int
{
return get_weakness($numbers, get_first_error($numbers, $preamble));
}
function get_first_error(array $numbers, int $preamble): int
{
$error = 0;
for ($i = $preamble; $i < count($numbers); $i++) {
$correctly_encoded = false;
for ($j = $i - $preamble; $j < $i; $j++) {
for ($k = $i - $preamble; $k < $i; $k++) {
if ($numbers[$j] + $numbers[$k] == $numbers[$i]) {
$correctly_encoded = true;
break;
}
}
if ($correctly_encoded)
break;
}
if ($correctly_encoded === false) {
return $numbers[$i];
}
}
return $error;
}
function get_weakness(array $numbers, int $result): int
{
$min_pos = 0;
$length = 2;
while ($min_pos < count($numbers)) {
while ($length < count($numbers) - 2) {
$test = array_slice($numbers, $min_pos, $length);
if (array_sum($test) == $result) {
sort($test);
return $test[0] + $test[count($test) - 1];
} else if (array_sum($test) > $result) {
$min_pos += 1;
$length = 2;
break;
}
$length += 1;
}
}
return 0;
}

2000
2021/inputs/day1.txt Normal file

File diff suppressed because it is too large Load diff

1000
2021/inputs/day2.txt Normal file

File diff suppressed because it is too large Load diff

1000
2021/inputs/day3.txt Normal file

File diff suppressed because it is too large Load diff

602
2021/inputs/day4.txt Normal file
View file

@ -0,0 +1,602 @@
23,30,70,61,79,49,19,37,64,48,72,34,69,53,15,74,89,38,46,36,28,32,45,2,39,58,11,62,97,40,14,87,96,94,91,92,80,99,6,31,57,98,65,10,33,63,42,17,47,66,26,22,73,27,7,0,55,8,56,29,86,25,4,12,51,60,35,50,5,75,95,44,16,93,21,3,24,52,77,76,43,41,9,84,67,71,83,88,59,68,85,82,1,18,13,78,20,90,81,54
50 98 65 14 47
0 22 3 83 46
87 93 81 84 58
40 35 28 74 48
45 99 59 37 64
85 66 90 32 88
95 6 4 74 27
1 10 70 41 92
54 36 42 9 39
60 99 31 67 16
4 44 66 10 58
33 64 93 42 46
19 63 6 83 54
60 51 76 8 30
71 49 73 7 55
17 67 52 61 98
46 5 4 51 76
73 59 74 8 33
48 96 20 26 15
55 19 86 29 43
20 75 12 67 41
89 36 65 66 92
40 19 1 0 28
99 61 85 58 50
44 72 57 35 86
69 87 27 59 33
47 34 60 93 9
71 84 46 24 96
15 91 5 61 19
57 78 55 31 8
19 10 1 81 96
27 71 2 52 56
15 22 48 82 34
64 47 42 49 51
26 72 61 12 57
71 94 40 34 26
12 80 57 38 55
4 56 11 73 49
75 60 61 9 50
91 70 23 1 90
39 86 30 73 38
6 53 58 14 36
85 12 75 88 5
0 29 41 21 15
47 66 59 54 1
99 97 50 17 60
36 13 29 80 32
49 85 75 71 15
10 79 41 61 66
68 57 55 74 98
68 33 87 89 59
96 35 76 78 55
4 63 51 10 65
58 38 22 54 9
66 18 37 60 6
43 86 50 23 77
10 42 19 61 2
40 29 20 84 0
70 59 96 80 57
76 12 39 36 6
73 43 92 37 99
36 42 10 77 87
3 57 4 20 35
18 7 46 91 11
17 98 8 53 61
22 37 89 51 9
71 6 72 87 32
13 79 86 53 98
16 2 93 48 38
63 82 66 61 69
73 90 85 54 65
9 66 28 5 63
91 50 70 59 80
95 68 92 72 67
69 88 36 43 53
36 81 66 78 90
2 25 94 82 55
34 45 1 14 37
13 4 70 48 75
67 73 32 18 91
33 93 71 48 47
8 79 69 53 82
5 31 80 45 37
67 77 41 56 97
65 46 62 42 81
67 70 59 24 88
84 11 29 52 78
4 39 12 90 2
44 3 10 75 89
30 93 22 14 8
79 60 98 99 49
23 26 86 91 38
77 45 95 66 75
81 42 85 21 3
40 37 65 20 50
12 54 0 86 52
15 56 29 39 94
66 79 14 65 26
3 4 59 60 40
47 48 19 13 85
32 44 69 90 21
35 8 1 59 56
72 71 84 18 11
96 38 23 37 79
92 20 33 94 17
1 94 42 21 82
92 60 9 32 38
71 3 37 77 18
89 16 74 76 2
83 30 28 11 70
94 3 1 71 87
6 66 19 76 28
10 86 22 62 2
67 0 31 46 27
8 33 43 92 29
35 90 8 30 27
67 60 82 68 1
5 29 93 44 34
56 65 48 37 51
57 45 63 94 77
67 80 45 57 43
37 81 25 84 82
50 8 9 64 7
29 18 52 16 14
73 28 11 76 6
5 76 67 18 16
68 47 15 29 59
46 32 40 9 84
30 17 20 22 3
35 80 38 72 88
35 44 14 89 72
75 67 56 2 3
58 41 49 12 52
92 9 22 34 88
65 39 93 61 47
38 67 33 18 60
34 50 69 31 83
29 30 9 12 95
79 2 24 54 87
46 68 48 58 42
61 87 46 26 34
74 85 9 54 38
50 29 84 40 4
49 39 33 99 53
77 59 0 42 35
86 68 23 62 5
96 92 7 4 1
50 70 12 83 46
34 63 91 56 11
76 90 71 88 95
19 18 13 3 62
42 29 57 79 85
39 64 14 28 98
99 36 91 9 63
69 66 2 17 31
51 43 49 98 94
31 64 53 54 57
3 28 10 12 2
24 99 95 35 17
76 27 48 0 41
80 62 13 38 98
32 15 16 8 96
93 43 81 99 40
20 57 37 24 3
94 17 70 14 7
52 71 49 95 84
76 38 45 59 89
1 7 27 0 98
92 64 8 50 68
13 91 26 51 2
31 45 25 1 5
50 68 77 61 53
74 20 99 38 63
76 44 15 42 51
67 87 86 12 24
49 0 70 82 9
2 24 96 74 60
68 16 40 32 20
48 6 98 11 65
94 10 54 8 95
74 41 11 33 76
2 10 44 89 23
56 45 78 60 34
15 5 26 83 71
20 72 85 75 54
15 59 93 53 8
4 10 84 44 36
17 62 24 27 98
87 54 73 13 35
9 48 52 33 7
56 80 70 74 35
53 69 75 25 27
47 91 85 62 32
93 26 89 18 52
16 73 49 55 77
42 40 54 67 73
11 10 49 35 59
12 93 37 15 69
97 41 47 39 2
75 99 21 29 26
23 75 41 10 86
71 67 66 38 99
91 92 63 40 28
69 97 42 77 60
44 53 12 84 57
72 51 31 90 37
35 89 55 73 87
46 32 45 0 58
50 81 13 18 66
38 4 40 62 22
14 48 35 76 83
13 70 26 4 1
30 22 91 93 29
69 41 74 40 63
80 65 66 72 23
23 65 33 56 38
84 41 34 21 2
4 78 27 17 11
22 53 52 32 80
24 25 42 91 99
54 51 0 23 52
92 69 10 46 7
20 35 12 37 73
19 56 26 79 32
27 74 34 5 57
75 10 24 32 7
96 54 22 78 5
23 69 65 43 20
29 85 44 92 71
41 87 73 0 48
54 92 16 36 37
42 59 4 9 44
52 14 12 6 47
57 38 70 82 0
53 81 32 35 3
17 22 62 80 30
8 28 15 42 46
79 64 32 29 75
5 0 9 90 69
41 71 85 1 6
68 89 40 31 39
32 48 64 38 28
80 98 88 14 97
6 60 52 11 55
95 34 63 81 4
80 33 14 83 68
78 69 81 59 15
72 0 74 21 75
49 6 67 73 64
8 25 87 3 45
34 97 86 1 79
49 12 63 10 59
88 30 84 74 87
67 47 26 0 57
71 40 2 76 98
15 89 23 65 44
27 87 54 38 12
43 29 18 39 94
48 0 7 57 61
70 28 60 68 50
13 34 49 67 40
88 74 99 20 26
63 69 62 24 32
35 45 96 79 1
92 7 17 76 30
95 21 75 46 74
39 7 58 23 90
61 64 37 81 82
92 36 54 9 53
17 51 33 10 27
67 35 44 22 23
28 96 1 56 29
0 12 5 50 99
70 42 8 24 25
39 53 51 89 85
50 15 94 84 27
72 26 51 3 85
63 45 1 64 44
17 80 13 88 2
12 97 91 25 18
59 14 9 67 63
6 18 26 98 50
86 74 75 56 34
48 7 99 20 64
8 53 10 15 57
6 35 13 68 24
90 19 91 71 86
95 58 10 44 98
8 41 60 1 16
29 59 43 84 48
48 56 8 74 4
66 30 77 35 90
94 0 75 49 84
5 39 11 54 87
33 58 96 22 2
5 38 57 63 65
74 58 22 8 81
45 96 78 3 11
28 42 30 39 51
87 33 34 75 14
56 34 67 70 17
7 80 10 31 85
68 59 63 74 40
13 81 99 62 6
92 84 71 37 39
85 99 74 16 10
12 21 91 2 83
4 94 38 51 36
41 97 45 65 24
50 82 92 52 35
28 65 6 13 23
7 57 86 18 67
26 85 29 22 89
99 62 94 31 96
14 17 50 56 9
98 10 63 4 8
46 21 58 89 3
27 12 11 55 16
61 38 43 33 54
53 14 99 31 25
25 70 24 40 14
75 82 58 68 41
22 71 72 93 1
47 97 6 81 45
92 42 2 76 12
31 84 30 0 85
55 70 72 45 57
78 52 67 60 22
43 32 8 44 34
14 64 91 89 18
70 19 62 16 56
84 49 41 3 20
85 5 76 95 22
63 55 37 31 72
42 17 28 65 1
85 17 57 62 48
34 29 69 52 28
90 64 54 21 38
0 50 84 44 60
93 80 75 89 83
39 84 78 12 5
29 4 35 7 85
73 25 58 27 45
22 90 91 47 74
60 96 15 24 26
13 30 82 31 43
23 71 1 51 36
40 62 25 54 86
8 83 2 47 34
33 41 27 98 24
13 25 53 50 56
77 4 41 19 22
68 70 75 9 65
30 33 60 74 80
31 83 34 79 11
11 90 38 78 73
17 16 14 37 4
80 68 21 70 92
47 26 81 67 25
10 31 23 41 22
90 62 2 50 79
77 51 8 11 13
32 29 43 88 33
39 34 89 45 23
91 9 6 68 3
62 70 89 27 87
45 65 96 80 29
1 54 90 68 16
72 50 28 95 12
21 71 81 10 60
33 14 60 44 78
6 65 87 11 8
79 21 59 35 19
26 69 67 42 27
25 36 80 10 45
71 24 80 87 56
7 61 43 38 18
52 46 41 28 48
0 74 20 34 63
3 84 42 85 9
36 64 41 7 49
91 92 13 94 88
73 98 79 0 12
76 66 86 67 9
2 85 74 5 34
8 81 7 56 28
36 13 42 29 75
12 27 85 45 9
26 25 62 41 22
79 11 95 0 24
72 76 81 67 16
96 41 94 58 7
0 79 38 27 11
61 36 56 88 39
89 63 31 75 8
62 51 5 46 28
77 97 89 86 13
87 55 73 90 57
84 44 40 49 34
25 0 58 6 21
7 56 15 41 94
42 89 16 18 74
57 79 96 35 3
14 45 20 19 80
87 85 28 69 17
27 88 54 62 65
44 93 69 13 9
85 63 43 11 47
83 57 30 20 56
71 46 49 7 77
45 24 75 39 69
48 74 44 49 64
65 25 22 46 93
88 52 27 37 50
19 35 47 54 67
44 32 71 13 57
7 38 26 98 65
46 1 21 8 55
30 62 92 27 3
69 50 99 85 11
86 6 64 34 97
47 98 7 38 9
26 68 75 92 54
58 42 13 78 37
85 28 81 16 51
82 74 15 4 86
55 0 70 88 24
50 79 63 40 21
47 39 61 49 36
89 16 13 2 37
89 19 9 82 13
84 34 58 56 10
27 92 46 4 94
44 24 52 86 55
39 23 22 99 5
65 92 8 86 77
98 79 72 28 78
16 23 3 55 48
68 95 66 30 43
50 31 15 11 45
32 70 25 59 31
47 68 77 56 23
66 78 54 88 50
55 60 58 89 83
84 99 86 97 95
53 46 1 94 87
8 80 38 77 81
17 51 47 19 69
86 50 71 5 93
61 66 36 58 0
90 58 17 29 92
67 1 8 64 99
63 22 57 19 68
78 36 93 53 2
27 48 62 39 14
8 49 22 90 54
26 4 99 27 34
78 25 11 85 28
31 42 36 53 15
64 75 60 45 35
99 84 26 53 90
61 51 98 39 86
47 37 52 80 63
67 49 35 70 11
32 45 94 73 43
91 92 74 94 32
27 56 50 33 54
67 46 35 25 10
93 97 30 90 4
57 15 69 83 39
71 68 74 81 11
44 98 60 17 73
43 40 32 38 39
61 56 97 94 70
23 2 86 91 54
19 98 93 42 88
0 16 30 32 71
89 86 81 76 68
29 2 14 72 63
7 27 67 59 1
24 18 28 98 95
10 62 80 71 36
3 89 20 63 46
47 65 84 22 6
82 19 81 38 45
54 85 67 34 79
25 58 38 73 61
72 98 4 19 40
32 10 29 31 89
15 33 5 7 63
49 48 71 81 88
70 5 39 41 22
19 20 7 75 23
69 46 63 14 54
80 45 94 6 55
88 62 76 78 95
64 65 36 58 22
7 21 98 93 42
79 99 9 89 10
6 5 33 92 72

501
2021/inputs/day5.txt Normal file
View file

@ -0,0 +1,501 @@
445,187 -> 912,654
820,46 -> 25,841
216,621 -> 458,379
955,898 -> 67,10
549,572 -> 549,520
796,107 -> 109,794
729,698 -> 338,698
11,987 -> 968,30
381,840 -> 381,409
80,467 -> 80,48
132,197 -> 132,92
343,96 -> 343,710
42,854 -> 346,550
503,56 -> 804,56
599,206 -> 60,206
702,920 -> 474,920
496,790 -> 223,517
969,579 -> 583,579
897,66 -> 604,66
484,754 -> 640,910
330,49 -> 949,49
908,132 -> 714,132
517,153 -> 97,573
317,865 -> 678,504
800,61 -> 800,51
179,242 -> 179,202
529,757 -> 529,838
288,953 -> 393,953
372,15 -> 925,568
100,85 -> 654,639
663,562 -> 737,636
576,981 -> 245,981
347,240 -> 347,928
91,119 -> 413,441
637,397 -> 330,90
534,257 -> 950,257
155,636 -> 694,97
539,274 -> 539,327
329,795 -> 824,300
103,51 -> 961,909
87,868 -> 168,787
21,250 -> 157,386
591,316 -> 670,395
722,670 -> 630,670
28,167 -> 28,489
480,210 -> 68,622
573,700 -> 354,919
186,59 -> 700,59
121,186 -> 670,186
797,985 -> 671,985
836,804 -> 335,804
701,835 -> 104,238
456,718 -> 456,964
694,891 -> 694,839
205,637 -> 205,318
40,958 -> 773,225
151,391 -> 151,779
693,894 -> 417,894
418,700 -> 656,700
196,985 -> 896,985
357,509 -> 608,258
552,558 -> 552,482
184,412 -> 170,412
122,746 -> 643,225
268,930 -> 247,930
979,820 -> 407,248
755,893 -> 845,893
706,843 -> 706,225
162,726 -> 895,726
140,888 -> 289,888
614,432 -> 903,721
272,725 -> 272,598
529,672 -> 967,234
903,989 -> 785,871
422,355 -> 422,360
313,722 -> 713,322
460,121 -> 460,151
55,944 -> 946,944
795,744 -> 221,744
816,953 -> 471,953
865,186 -> 557,186
94,976 -> 747,323
302,961 -> 811,452
361,966 -> 921,406
197,988 -> 571,988
310,905 -> 722,493
699,91 -> 272,518
295,306 -> 84,95
220,116 -> 395,291
183,364 -> 523,364
16,986 -> 16,319
54,980 -> 635,399
340,110 -> 651,421
788,76 -> 788,635
933,375 -> 458,375
12,434 -> 494,916
253,892 -> 962,183
240,508 -> 240,234
763,934 -> 506,677
308,135 -> 239,66
117,649 -> 751,15
95,535 -> 428,868
16,937 -> 902,51
547,404 -> 547,830
128,581 -> 970,581
959,810 -> 564,415
971,738 -> 378,145
919,210 -> 295,210
737,43 -> 231,43
82,577 -> 455,204
821,337 -> 570,337
688,753 -> 538,753
891,844 -> 124,844
74,957 -> 946,85
43,942 -> 43,210
100,391 -> 100,142
975,527 -> 175,527
510,844 -> 395,959
558,231 -> 558,858
839,915 -> 262,338
784,290 -> 875,199
644,824 -> 812,824
899,657 -> 500,657
263,668 -> 263,964
157,374 -> 820,374
530,301 -> 530,67
15,688 -> 15,572
216,844 -> 479,581
973,59 -> 68,964
104,92 -> 104,547
421,472 -> 421,176
887,805 -> 231,149
140,980 -> 852,980
248,602 -> 346,602
334,961 -> 334,471
892,892 -> 958,958
270,83 -> 270,135
950,105 -> 404,651
979,476 -> 930,427
416,430 -> 879,430
796,937 -> 796,415
670,679 -> 72,679
733,884 -> 733,302
745,196 -> 306,196
174,353 -> 667,846
285,978 -> 254,978
10,63 -> 936,989
242,107 -> 242,725
238,341 -> 238,800
975,102 -> 174,903
530,474 -> 530,853
931,47 -> 467,47
86,141 -> 821,141
263,15 -> 654,15
688,542 -> 378,232
826,793 -> 989,793
729,285 -> 729,192
587,915 -> 587,79
548,667 -> 877,667
15,836 -> 783,68
662,673 -> 71,82
312,681 -> 910,83
760,418 -> 491,418
175,502 -> 443,502
817,878 -> 29,90
798,569 -> 811,582
703,141 -> 743,181
941,849 -> 941,778
63,24 -> 500,461
697,183 -> 119,761
705,672 -> 152,672
150,567 -> 656,567
158,411 -> 965,411
702,872 -> 276,446
141,179 -> 741,779
533,886 -> 817,886
569,949 -> 285,949
699,764 -> 699,780
333,863 -> 805,391
861,804 -> 524,467
791,501 -> 718,501
976,265 -> 976,713
129,342 -> 339,132
322,738 -> 212,738
700,534 -> 622,456
68,314 -> 14,314
146,112 -> 215,181
170,211 -> 482,211
159,412 -> 159,32
312,939 -> 312,95
232,18 -> 912,698
950,114 -> 950,826
620,848 -> 620,11
624,288 -> 544,208
752,479 -> 752,577
784,796 -> 784,872
130,55 -> 974,899
434,82 -> 434,481
988,230 -> 892,134
159,252 -> 159,291
462,14 -> 462,977
553,981 -> 553,390
231,936 -> 51,936
58,759 -> 60,759
572,891 -> 584,891
705,303 -> 124,303
144,894 -> 970,68
865,275 -> 865,956
492,491 -> 470,491
971,15 -> 977,15
750,521 -> 33,521
913,947 -> 387,421
368,677 -> 570,677
795,186 -> 882,186
404,840 -> 678,840
187,488 -> 403,488
824,706 -> 642,706
330,541 -> 330,195
564,531 -> 774,531
271,857 -> 20,606
976,975 -> 976,843
323,341 -> 21,39
575,643 -> 267,643
827,295 -> 827,854
749,486 -> 749,780
656,716 -> 656,470
635,187 -> 417,187
503,488 -> 503,393
592,688 -> 592,567
515,408 -> 128,795
608,158 -> 780,158
677,96 -> 11,762
127,452 -> 339,452
117,985 -> 291,811
157,371 -> 157,916
640,758 -> 983,758
906,413 -> 906,776
224,842 -> 627,439
903,728 -> 903,459
358,138 -> 822,602
30,16 -> 929,915
440,900 -> 294,900
809,73 -> 987,73
55,410 -> 304,161
441,672 -> 315,672
939,40 -> 234,40
334,698 -> 309,698
572,738 -> 572,226
445,71 -> 445,468
225,660 -> 427,458
390,320 -> 449,320
507,635 -> 507,169
47,116 -> 738,807
127,14 -> 689,14
316,760 -> 316,432
831,101 -> 250,682
370,807 -> 370,898
678,186 -> 491,186
866,83 -> 539,83
518,848 -> 518,962
188,135 -> 81,28
378,226 -> 597,226
646,534 -> 141,534
275,672 -> 275,854
67,421 -> 676,421
386,323 -> 988,323
903,984 -> 10,91
37,348 -> 529,840
872,134 -> 358,648
42,826 -> 42,822
688,922 -> 21,922
47,539 -> 942,539
739,483 -> 375,847
23,217 -> 800,217
589,512 -> 589,953
292,229 -> 107,229
873,678 -> 873,770
794,295 -> 739,240
464,559 -> 936,559
685,736 -> 368,736
114,941 -> 114,307
571,643 -> 74,643
281,185 -> 273,177
497,937 -> 497,469
152,815 -> 702,815
76,43 -> 980,947
272,149 -> 101,149
934,945 -> 107,118
532,476 -> 759,476
955,942 -> 397,942
31,918 -> 931,18
790,420 -> 389,420
36,496 -> 215,317
252,209 -> 139,209
704,148 -> 719,133
413,571 -> 165,571
690,433 -> 864,607
976,417 -> 517,876
803,568 -> 443,568
335,558 -> 335,334
405,807 -> 691,521
194,482 -> 486,190
377,856 -> 377,802
313,842 -> 313,254
449,961 -> 198,710
197,916 -> 197,797
82,965 -> 959,88
371,239 -> 829,697
471,70 -> 596,70
835,144 -> 835,950
283,486 -> 506,486
147,29 -> 147,747
187,485 -> 187,195
781,144 -> 480,144
801,839 -> 925,715
415,960 -> 415,442
877,939 -> 29,91
22,118 -> 22,439
460,315 -> 450,315
982,960 -> 71,49
105,231 -> 105,331
98,174 -> 551,174
721,978 -> 38,295
167,290 -> 167,133
218,158 -> 218,908
819,812 -> 758,812
123,92 -> 123,132
66,721 -> 66,906
478,441 -> 967,930
284,58 -> 464,58
958,15 -> 37,936
310,337 -> 359,288
212,763 -> 212,373
101,279 -> 101,267
622,409 -> 106,925
318,657 -> 318,432
938,631 -> 938,650
142,881 -> 254,881
848,987 -> 848,451
686,223 -> 481,223
124,248 -> 812,248
246,267 -> 246,148
96,670 -> 324,442
645,888 -> 385,628
417,555 -> 417,858
543,495 -> 543,150
73,350 -> 440,717
459,704 -> 459,179
871,493 -> 871,764
911,34 -> 64,881
544,791 -> 703,791
447,218 -> 62,218
202,649 -> 396,649
935,916 -> 55,36
124,408 -> 477,761
608,850 -> 484,850
935,876 -> 582,876
377,612 -> 269,612
413,727 -> 365,679
64,451 -> 850,451
684,807 -> 357,807
323,364 -> 372,364
887,300 -> 419,300
837,831 -> 837,927
294,255 -> 768,729
878,23 -> 141,760
36,627 -> 157,627
824,703 -> 824,968
356,109 -> 657,109
799,266 -> 313,752
71,600 -> 650,21
564,863 -> 564,54
36,720 -> 109,720
318,488 -> 682,488
249,350 -> 979,350
560,502 -> 255,502
132,327 -> 132,246
287,906 -> 791,906
818,110 -> 818,882
937,17 -> 113,841
50,710 -> 673,87
702,952 -> 702,533
666,552 -> 611,552
612,962 -> 112,462
260,529 -> 351,529
440,313 -> 440,663
605,341 -> 405,141
277,287 -> 461,287
268,890 -> 268,92
764,526 -> 877,639
165,697 -> 832,697
240,716 -> 801,155
872,429 -> 578,429
88,816 -> 338,816
981,881 -> 981,138
457,351 -> 457,679
850,526 -> 850,447
139,449 -> 165,449
127,544 -> 127,934
160,890 -> 745,305
526,113 -> 303,336
17,500 -> 17,621
796,311 -> 181,926
260,218 -> 787,218
536,989 -> 536,261
257,826 -> 257,180
531,37 -> 531,493
961,942 -> 206,187
536,668 -> 536,868
154,967 -> 154,931
808,317 -> 808,873
487,258 -> 599,258
59,962 -> 802,219
322,945 -> 322,837
378,973 -> 33,628
668,556 -> 691,556
819,728 -> 787,728
484,261 -> 484,874
333,271 -> 278,271
733,515 -> 741,523
775,854 -> 523,602
67,215 -> 616,215
951,685 -> 951,433
372,105 -> 372,494
917,788 -> 917,23
890,584 -> 245,584
748,276 -> 893,276
733,721 -> 733,747
225,908 -> 897,908
437,140 -> 423,140
456,513 -> 136,833
413,135 -> 413,596
143,245 -> 879,981
870,639 -> 942,639
28,175 -> 696,843
393,303 -> 393,197
169,986 -> 458,986
43,44 -> 952,953
236,405 -> 60,229
266,845 -> 292,845
529,98 -> 95,532
95,658 -> 695,658
368,454 -> 112,710
506,776 -> 662,776
928,494 -> 604,170
179,138 -> 900,859
45,560 -> 408,197
655,654 -> 37,36
56,432 -> 56,456
844,614 -> 844,898
240,191 -> 240,112
639,911 -> 213,911
47,887 -> 830,104
57,50 -> 977,970
899,928 -> 111,928
962,676 -> 962,518
129,585 -> 469,245
988,775 -> 988,553
417,344 -> 842,769
468,110 -> 506,72
687,204 -> 687,345
828,553 -> 765,490
75,894 -> 75,93
26,798 -> 11,783
967,44 -> 967,478
240,481 -> 947,481
794,254 -> 162,254
502,944 -> 812,944
331,417 -> 410,417
850,275 -> 850,980
671,130 -> 671,941
240,99 -> 240,381
771,399 -> 318,399
946,11 -> 28,929
731,939 -> 824,846
268,71 -> 832,635
968,37 -> 968,642
935,365 -> 515,365
199,792 -> 932,792
32,116 -> 371,116
324,67 -> 941,67
453,181 -> 453,128
958,982 -> 115,139
962,168 -> 154,976
474,215 -> 333,215
458,675 -> 458,315
577,302 -> 300,302
704,493 -> 704,876
887,549 -> 887,439
81,328 -> 724,328
575,490 -> 670,490
576,17 -> 576,218
21,46 -> 963,988
532,235 -> 532,615
796,213 -> 796,407
55,948 -> 980,23
775,471 -> 272,471
26,138 -> 344,138
635,518 -> 915,518
727,365 -> 727,216

1
2021/inputs/day6.txt Normal file
View file

@ -0,0 +1 @@
3,3,2,1,4,1,1,2,3,1,1,2,1,2,1,1,1,1,1,1,4,1,1,5,2,1,1,2,1,1,1,3,5,1,5,5,1,1,1,1,3,1,1,3,2,1,1,1,1,1,1,4,1,1,1,1,1,1,1,4,1,3,3,1,1,3,1,3,1,2,1,3,1,1,4,1,2,4,4,5,1,1,1,1,1,1,4,1,5,1,1,5,1,1,3,3,1,3,2,5,2,4,1,4,1,2,4,5,1,1,5,1,1,1,4,1,1,5,2,1,1,5,1,1,1,5,1,1,1,1,1,3,1,5,3,2,1,1,2,2,1,2,1,1,5,1,1,4,5,1,4,3,1,1,1,1,1,1,5,1,1,1,5,2,1,1,1,5,1,1,1,4,4,2,1,1,1,1,1,1,1,3,1,1,4,4,1,4,1,1,5,3,1,1,1,5,2,2,4,2,1,1,3,1,5,5,1,1,1,4,1,5,1,1,1,4,3,3,3,1,3,1,5,1,4,2,1,1,5,1,1,1,5,5,1,1,2,1,1,1,3,1,1,1,2,3,1,2,2,3,1,3,1,1,4,1,1,2,1,1,1,1,3,5,1,1,2,1,1,1,4,1,1,1,1,1,2,4,1,1,5,3,1,1,1,2,2,2,1,5,1,3,5,3,1,1,4,1,1,4

1
2021/inputs/day7.txt Normal file
View file

@ -0,0 +1 @@
1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,12,186,94,505,338,1527,356,122,360,745,28,227,799,305,177,1188,317,3,462,986,230,438,542,112,1334,620,1351,697,7,478,155,208,175,28,107,1501,238,40,0,469,20,945,699,144,822,189,290,37,1158,920,175,102,1042,590,1219,1110,514,126,142,28,282,1198,80,223,196,13,974,543,28,867,816,959,864,45,556,1106,219,259,14,817,312,1743,151,189,1199,300,823,749,747,42,1525,59,587,222,894,240,635,600,1179,324,1435,274,223,1095,25,423,115,472,22,443,827,622,171,102,175,303,67,86,103,0,1541,1086,217,1497,0,1217,919,1107,1052,1003,298,225,593,42,107,461,286,1254,7,827,724,1216,966,682,1660,201,27,190,1159,120,467,1151,886,173,106,6,141,1946,60,5,901,718,74,1040,149,1,839,986,0,817,1454,781,1541,108,1432,564,782,1747,492,24,949,369,1773,166,72,1372,1473,72,243,251,69,752,916,412,837,56,50,378,1332,0,432,310,281,622,107,414,1069,635,1898,483,1284,213,1613,664,0,29,1257,410,716,44,1529,661,430,1152,1023,25,1641,929,582,161,219,198,982,916,1079,83,19,346,45,452,398,161,12,1077,9,1300,363,438,368,30,195,245,657,404,244,219,99,644,191,1139,133,386,738,36,573,194,223,1224,144,537,1520,1124,389,21,610,652,347,619,121,557,1291,349,5,423,241,83,306,850,24,169,584,997,19,507,395,1076,1005,265,1057,1,1268,598,86,807,52,1160,253,325,462,48,707,694,960,1169,102,238,1108,425,420,15,1710,19,381,980,263,363,70,99,361,973,391,131,372,172,22,13,106,1579,961,20,788,25,126,340,206,17,717,286,1077,362,510,243,177,1063,551,667,1534,409,340,1071,415,160,1067,223,120,77,612,117,160,292,185,1167,214,1519,1265,1355,698,344,157,130,863,48,666,7,459,888,193,657,419,14,320,650,490,290,498,225,720,829,1613,509,645,339,301,868,275,457,1307,125,9,518,43,15,9,7,390,568,1847,165,42,256,432,337,38,11,1485,1758,47,257,1268,1898,701,622,346,111,109,210,27,437,1381,622,7,1226,226,1682,94,63,502,12,1308,723,215,276,460,7,159,599,78,1198,304,268,588,1086,44,1389,3,654,1602,834,165,570,736,1289,817,496,396,977,886,912,926,395,395,401,334,262,491,1138,78,0,757,622,10,299,85,355,1097,312,633,452,1409,27,275,458,101,393,508,1206,1,788,51,299,74,560,143,1610,237,223,1259,669,286,1046,668,733,508,665,354,651,40,1374,495,778,101,578,78,17,358,621,1080,38,142,33,182,538,912,76,446,79,1193,70,477,161,498,487,642,901,464,210,916,1410,674,71,208,709,304,80,1048,87,386,1665,907,573,305,974,242,836,811,90,11,64,175,98,162,390,69,145,468,818,1637,21,730,15,590,620,459,5,392,119,134,496,925,367,16,16,1443,687,1045,1704,256,667,10,850,1555,831,103,658,1097,745,380,48,210,994,163,428,669,1547,833,4,177,222,342,882,69,1350,500,154,218,358,183,83,739,297,1302,368,53,524,577,765,149,801,17,206,293,578,94,149,702,861,998,512,364,525,1849,682,1,204,96,119,815,118,1317,103,688,641,317,361,364,332,1020,1522,5,306,460,527,206,406,93,1433,221,70,1116,894,1240,157,299,812,121,1324,166,254,429,89,599,92,540,77,323,156,546,374,184,666,126,812,888,1195,412,305,325,216,1165,274,705,556,135,35,260,107,371,1515,125,703,149,433,515,698,163,369,537,63,1119,346,321,166,157,326,173,1022,50,929,14,1100,1289,334,1017,72,510,203,417,562,147,1098,1371,396,60,941,266,1195,960,629,698,46,443,1278,1601,1123,14,114,928,98,561,742,1501,860,610,941,591,3,120,1362,1176,75,185,144,851,570,55,317,126,179,202,1552,854,585,195,70,756,328,720,732,851,1080,1303,277,6,214,85,136,1594,469,345,176,835,126,1035,1006,66,1082,26,31,10,942,1546,186,575,712,775,14,920,169,733,220,1069,1300,19,47,816,675,102,307,1336,5,37,6,1258,340,373,26,42,4,358,260,174,635,245,108,466,891,662,658,341,10,777,613,749,164,118,235,997,74,674,120,501,924,1393,601,3,374,8,187,58,13,284,20,26,541,381,281,1135,19,1538,1306,1292,643,538,653,716,614,47,245,198,926,1845,95,864,234,476,18,1002,240,326,293,955,1196,907,129,115,250,991,1313,1801,60,183,16,150,440,900

36
2021/src/day1.php Normal file
View file

@ -0,0 +1,36 @@
<?php
$input_file = '../inputs/day1.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$nums = array_map(fn ($str) => (int)$str, array_filter(explode("\n", $input), 'is_numeric'));
print 'Part 1 answer: ' . solve_part_one($nums) . "\n";
print 'Part 2 answer: ' . solve_part_two($nums) . "\n";
}
}
function solve_part_one(array $nums): int
{
$inc = 0;
for ($i = 1; $i < count($nums); $i++) {
if ($nums[$i] > $nums[$i - 1]) {
$inc += 1;
}
}
return $inc;
}
function solve_part_two(array $nums): int
{
$inc = 0;
for ($i = 3; $i < count($nums); $i++) {
$slider1 = $nums[$i] + $nums[$i - 1] + $nums[$i - 2];
$slider2 = $nums[$i - 1] + $nums[$i - 2] + $nums[$i - 3];
if ($slider1 > $slider2) {
$inc += 1;
}
}
return $inc;
}

59
2021/src/day2.php Normal file
View file

@ -0,0 +1,59 @@
<?php
$input_file = '../inputs/day2.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$instructions = explode("\n", $input);
print 'Part 1 answer: ' . solve_part_one($instructions) . "\n";
print 'Part 2 answer: ' . solve_part_two($instructions) . "\n";
}
}
function solve_part_one(array $instructions): int
{
$pos = 0;
$depth = 0;
foreach ($instructions as $inst) {
[$instruction, $param] = explode(" ", $inst);
$param = (int)$param;
if ($instruction == 'forward') {
$pos += $param;
}
if ($instruction == 'up') {
$depth -= $param;
}
if ($instruction == 'down') {
$depth += $param;
}
}
return $pos * $depth;
}
function solve_part_two(array $instructions): int
{
$pos = 0;
$depth = 0;
$aim = 0;
foreach ($instructions as $inst) {
[$instruction, $param] = explode(" ", $inst);
$param = (int)$param;
if ($instruction == 'forward') {
$pos += $param;
$depth += $aim * $param;
}
if ($instruction == 'up') {
$aim -= $param;
}
if ($instruction == 'down') {
$aim += $param;
}
}
return $pos * $depth;
}

122
2021/src/day3.php Normal file
View file

@ -0,0 +1,122 @@
<?php
$input_file = '../inputs/day3.txt';
if (file_exists($input_file)) {
$input = file_get_contents($input_file);
if ($input != null) {
$binaries = array_map(fn ($str) => trim($str), explode("\n", $input));
print 'Part 1 answer: ' . solve_part_one($binaries) . "\n";
print 'Part 2 answer: ' . solve_part_two($binaries) . "\n";
}
}
function solve_part_one(array $binaries): int
{
$gamma = "";
$epsilon = "";
for ($i = 0; $i < strlen($binaries[0]) - 1; $i++) {
$zeroes = 0;
$ones = 0;
foreach ($binaries as $bin) {
if ((int)($bin[$i]) == 0)
$zeroes += 1;
else
$ones += 1;
}
if ($zeroes > $ones) {
$gamma .= "0";
$epsilon .= "1";
} else {
$gamma .= "1";
$epsilon .= "0";
}
}
return bindec($gamma) * bindec($epsilon);
}
function solve_part_two(array $binaries): int
{
$o2 = "";
$co2 = "";
$possible_o2 = $binaries;
$possible_co2 = $binaries;
for ($i = 0; $i < strlen($possible_o2[0]); $i++) {
$zeroes = 0;
$ones = 0;
foreach ($possible_o2 as $bin) {
if ((int)($bin[$i]) == 0)
$zeroes += 1;
else
$ones += 1;
}
if ($zeroes > $ones)
$mcb = "0";
elseif ($ones > $zeroes)
$mcb = "1";
else
$mcb = "=";
$new_o2 = [];
foreach ($possible_o2 as $binary) {
if ($o2 == "") {
if ($mcb == "0" && $binary[$i] == "0")
$new_o2[] = $binary;
elseif (($mcb == "1" || $mcb == "=") && $binary[$i] == "1")
$new_o2[] = $binary;
}
}
if (count($new_o2) == 1)
$o2 = $new_o2[0];
else
$possible_o2 = $new_o2;
if ($o2 != "")
break;
}
for ($i = 0; $i < strlen($possible_co2[0]); $i++) {
$zeroes = 0;
$ones = 0;
foreach ($possible_co2 as $bin) {
if ((int)($bin[$i]) == 0)
$zeroes += 1;
else
$ones += 1;
}
if ($zeroes > $ones)
$mcb = "0";
elseif ($ones > $zeroes)
$mcb = "1";
else
$mcb = "=";
$new_co2 = [];
foreach ($possible_co2 as $binary) {
if ($co2 == "") {
if (($mcb == "1" || $mcb == "=") && $binary[$i] == "0")
$new_co2[] = $binary;
elseif ($mcb == "0" && $binary[$i] == "1")
$new_co2[] = $binary;
}
}
if (count($new_co2) == 1)
$co2 = $new_co2[0];
else
$possible_co2 = $new_co2;
if ($co2 != "")
break;
}
return bindec($o2) * bindec($co2);
}

122
2021/src/day4.cs Normal file
View file

@ -0,0 +1,122 @@
var boards = new List<Board>();
using var sr = new StreamReader("../inputs/day04.txt");
var lines = sr.ReadToEnd().Split("\n").Select(x => x.Trim()).ToList();
var numbers = lines.First().Split(",").Select(x => Convert.ToByte(x)).ToList();
lines.RemoveAt(0); //Drop numbers
lines.RemoveAt(0); //Drop whitespace
var currentBoard = new List<string>();
foreach (var line in lines)
{
if (!string.IsNullOrEmpty(line))
{
currentBoard.Add(line);
}
else
{
boards.Add(new Board(currentBoard));
currentBoard = new List<string>();
}
}
var part1Done = false;
foreach (var number in numbers)
{
foreach (var board in boards)
board.Mark(number);
var winningBoards =
boards.Where(board => board.Win).ToArray(); // Need to enumerate this before the loop or it will break
foreach (var board in winningBoards)
{
if (!part1Done)
{
Console.WriteLine($"2021 Day 04 Part 1 result: {board.Score * number}");
part1Done = true;
}
if (boards.Count == 1)
Console.WriteLine($"2021 Day 04 Part 2 result: {board.Score * number}");
boards.Remove(board);
}
if (!boards.Any())
break;
}
private class Board
{
private readonly byte?[,] _rows;
internal int Score => _rows.Cast<byte?>().Aggregate(0, (score, number) => score + (number ?? 0));
private bool HorizontalWin => DidRowWin(_rows);
private bool VerticalWin => DidRowWin(Transpose());
internal bool Win => HorizontalWin || VerticalWin;
internal Board(IEnumerable<string> inputRows)
{
_rows = new byte?[5, 5];
for (var r = 0; r < inputRows.Count(); r++)
{
var nums = inputRows
.ElementAt(r)
.Split(" ")
.Where(x => !string.IsNullOrEmpty(x))
.Select(x => Convert.ToByte(x));
for (var c = 0; c < nums.Count(); c++)
{
_rows[c, r] = nums.ElementAt(c);
}
}
}
internal void Mark(byte number)
{
for (var r = 0; r < _rows.GetLength(0); r++)
{
for (var c = 0; c < _rows.GetLength(1); c++)
{
if (_rows[c, r].HasValue && _rows[c, r].Value == number)
_rows[c, r] = null;
}
}
}
private byte?[,] Transpose()
{
var cols = new byte?[5, 5];
for (var c = 0; c < 5; c++)
{
for (var r = 0; r < 5; r++)
{
cols[c, r] = _rows[r, c];
}
}
return cols;
}
private static bool DidRowWin(byte?[,] rows)
{
var win = true;
for (var r = 0; r < rows.GetLength(0); r++)
{
win = true;
for (var c = 0; c < rows.GetLength(1); c++)
{
if (rows[c, r].HasValue)
win = false;
}
if (win)
break;
}
return win;
}
}

55
2021/src/day5.cs Normal file
View file

@ -0,0 +1,55 @@
// TODO: I've shamelessly copied this off Reddit because i had no idea how to solve it.
// I need to come back to this and actually solve this myself.
/*using var sr = new StreamReader("./day05.txt");
var input = sr.ReadToEnd().Split("\n").Select(x => x.Trim());
foreach (var line in input)
{
var nums = line.Split(", ->".ToArray(), StringSplitOptions.RemoveEmptyEntries).Select(byte.Parse).ToArray();
var start = new Vector2(nums[0], nums[1]);
var end = new Vector2(nums[2], nums[3]);
}*/
using var sr = new StreamReader("../inputs/day05.txt");
var input = sr.ReadToEnd();
Console.WriteLine(GetIntersectionCount(ParseLines(input, skipDiagonals: true)));
Console.WriteLine(GetIntersectionCount(ParseLines(input, skipDiagonals: false)));
private static int GetIntersectionCount(IEnumerable<IEnumerable<Vec2>> lines)
{
// build a grid with iterating over all points, counting intersections:
var grid = new Dictionary<Vec2, int>();
foreach (var pt in lines.SelectMany(pt => pt))
{
grid[pt] = grid.GetValueOrDefault(pt, 0) + 1;
}
return grid.Count(kvp => kvp.Value > 1);
}
private static IEnumerable<IEnumerable<Vec2>> ParseLines(string input, bool skipDiagonals) =>
from line in input.Split("\n")
// parse the numbers first:
let ns = (
from st in line.Split(", ->".ToArray(), StringSplitOptions.RemoveEmptyEntries)
select int.Parse(st)
).ToArray()
// line properties:
let start = new Vec2(ns[0], ns[1])
let end = new Vec2(ns[2], ns[3])
let displacement = new Vec2(end.x - start.x, end.y - start.y)
let length = 1 + Math.Max(Math.Abs(displacement.x), Math.Abs(displacement.y))
let dir = new Vec2(Math.Sign(displacement.x), Math.Sign(displacement.y))
// represent lines with a set of points:
let points =
from i in Enumerable.Range(0, length)
select new Vec2(start.x + i * dir.x, start.y + i * dir.y)
where !skipDiagonals || dir.x == 0 || dir.y == 0 // skip diagonals in part 1
select points;
record Vec2(int x, int y);

25
2021/src/day6.cs Normal file
View file

@ -0,0 +1,25 @@
string input;
using (var sr = new System.IO.StreamReader("../inputs/day6.txt"))
input = sr.ReadToEnd();
var startPop = input.Split(",").Select(int.Parse).ToList();
var pop = new long[9];
foreach (var fish in startPop)
pop[fish] += 1;
for (int i = 0; i < 256; i++)
{
long newFishes = pop[0];
for (int j = 0; j < 8; j++)
pop[j] = pop[j + 1];
pop[8] = newFishes;
pop[6] += newFishes;
if (i == 79)
Console.WriteLine(pop.Sum());
}
Console.WriteLine(pop.Sum());

38
2021/src/day7.cs Normal file
View file

@ -0,0 +1,38 @@
using var sr = new StreamReader("../input/day7.txt");
var lines = sr.ReadToEnd().Split("\n").Select(x => x.Trim()).ToList();
var numbers = lines.First().Split(",").Select(double.Parse).ToList();
var acc = 0.0;
var median = GetMedian(numbers.ToArray());
foreach (var num in numbers)
acc += Math.Abs(num - median);
Console.WriteLine(acc);
acc = 0.0;
var avg = Math.Floor(numbers.Average());
foreach (var num in numbers)
{
var n = Math.Abs(num - avg);
acc += n * (n + 1) / 2; // Gauss formula, one of the very very few math tricks i know
}
Console.WriteLine(acc);
double GetMedian(double[] nums)
{
var ret = 0.0;
Array.Sort(nums);
if (nums.Length % 2 == 0)
{
var firstValue = nums[(nums.Length / 2) - 1];
var secondValue = nums[(nums.Length / 2)];
ret = (firstValue + secondValue) / 2.0;
}
if (nums.Length % 2 == 1)
{
ret = nums[(nums.Length / 2)];
}
return ret;
}

45
2023/day01.py Normal file
View file

@ -0,0 +1,45 @@
#!/usr/bin/env python3
lines = []
with open('./inputs/day01.txt') as f:
lines = f.readlines()
# part 1
calibration_values = []
for line in lines:
digits = []
for ch in line:
if (ch.isdigit()):
digits.append(int(ch))
calibration_values.append(int(f''.join(map(str, [digits[0], digits[-1]]))))
print(calibration_values)
print(sum(calibration_values))
# part 2
calibration_values_with_replace = []
for line in lines:
digits = []
# replace 'one' with 'o1e', 'two' with 't2o', etc.
temp = line.lower()
temp = line.replace('one', 'o1e')
temp = temp.replace('two', 't2o')
temp = temp.replace('three', 'th3ee')
temp = temp.replace('four', 'f4ur')
temp = temp.replace('five', 'f5ve')
temp = temp.replace('six', 's6x')
temp = temp.replace('seven', 'se7en')
temp = temp.replace('eight', 'ei8ht')
temp = temp.replace('nine', 'ni9e')
for ch in temp:
if (ch.isdigit()):
digits.append(int(ch))
calibration_values_with_replace.append(int(f''.join(map(str, [digits[0], digits[-1]]))))
print(calibration_values_with_replace)
print(sum(calibration_values_with_replace))

70
2023/day02.py Normal file
View file

@ -0,0 +1,70 @@
#!/usr/bin/env python3
lines = []
with open('./inputs/day02.txt') as f:
lines = f.readlines()
# part 1
games = {}
max_red = 12
max_green = 13
max_blue = 14
valid_games = []
for line in lines:
# parse line from format 'Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green'
gameid = int(line.split(':')[0].split(' ')[1])
games[gameid] = []
for pullstr in line.split(':')[1].split(';'):
pull = {}
for color in map(lambda x: x.strip(), pullstr.split(',')):
c = color.split(' ')
pull[c[1]] = int(c[0])
# if pull does not contain color set it to 0
if 'red' not in pull:
pull['red'] = 0
if 'green' not in pull:
pull['green'] = 0
if 'blue' not in pull:
pull['blue'] = 0
games[gameid].append(pull)
game_valid = True
for pull in games[gameid]:
if pull['red'] > max_red or pull['green'] > max_green or pull['blue'] > max_blue:
game_valid = False
break
if game_valid:
valid_games.append(gameid)
print(f'valid games: {valid_games}')
print(f'sum: {sum(valid_games)}')
# part 2
# for each game get the minimum number for each color between all pulls
powers = []
for game in games:
max_red = 0
max_green = 0
max_blue = 0
for pull in games[game]:
if pull['red'] > max_red:
max_red = pull['red']
if pull['green'] > max_green:
max_green = pull['green']
if pull['blue'] > max_blue:
max_blue = pull['blue']
power = max_red * max_green * max_blue
powers.append(power)
print(f'game {game}: max red: {max_red}, max green: {max_green}, max blue: {max_blue}, power: {power}')
print(f'sum: {sum(powers)}')

97
2023/day03.py Normal file
View file

@ -0,0 +1,97 @@
#!/usr/bin/env python3
lines = []
with open('./inputs/day03.txt') as f:
lines = f.readlines()
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f'({self.x}, {self.y})'
class Number:
def __init__(self, start, end, digits):
self.start = start
self.end = end
self.digits = digits
self.value = int(f''.join(map(str, digits)))
def __str__(self):
return f'({self.start}, {self.end}, {self.digits}, {self.value})'
def adjacentToSymbols(self, symbols):
for symbol in symbols:
if self.adjacentTo(symbol):
return True
return False
def adjacentTo(self, symbol):
if abs(self.start.y - symbol.y) <= 1 and ((self.start.x - 1) <= symbol.x <= (self.end.x + 1)):
return True
return False
class Symbol:
def __init__(self, x, y, value):
self.x = x
self.y = y
self.value = value
def __str__(self):
return f'({self.x}, {self.y}, {self.value})'
def gearRatio(self, numbers):
if not self.value == '*':
return -1
adjacent = []
for number in numbers:
if number.adjacentTo(self):
adjacent.append(number)
if len(adjacent) == 2:
return adjacent[0].value * adjacent[1].value
return -1
# part 1
numbers = []
symbols = []
for y in range(len(lines)):
line = lines[y]
digits = []
numberStarted = False
start = None
end = None
for x in range(len(line)):
ch = line[x]
if (ch == '.' and not numberStarted):
continue
if (ch.isdigit() and not numberStarted):
numberStarted = True
start = Point(x, y)
if (ch.isdigit()):
digits.append(int(ch))
if ((not ch.isdigit()) and numberStarted):
end = Point(x - 1, y)
numbers.append(Number(start, end, digits))
numberStarted = False
digits = []
if ((not ch.isdigit()) and (not ch == '.') and (not ch == '\n')):
symbols.append(Symbol(x, y, ch))
print(f'Part 1: {sum([number.value for number in numbers if number.adjacentToSymbols(symbols)])}')
# part 2
print(f'Part 2: {sum([symbol.gearRatio(numbers) for symbol in symbols if symbol.gearRatio(numbers) > 0])}')

36
2023/day04.py Normal file
View file

@ -0,0 +1,36 @@
#!/usr/bin/env python3
lines = []
with open('./inputs/day04.txt') as f:
lines = f.readlines()
class scratch_card:
def __init__(self, card_input):
card = card_input.split(':')[1]
self.card_number = int(card_input.split(':')[0].split()[1])
numbers = card.split('|')
self.winning_numbers = list(map(lambda x: int(x.strip()), numbers[0].split()))
self.card_numbers = list(map(lambda x: int(x.strip()), numbers[1].split()))
self.winning_count = len(list(filter(lambda x: x in self.winning_numbers, self.card_numbers)))
self.card_score = 2 ** (self.winning_count - 1) if self.winning_count > 0 else 0
def __str__(self):
return f'({self.card_number}: {self.card_score}, {self.winning_count}, {self.winning_numbers}, {self.card_numbers})'
# part 1
cards = []
cards_by_number = {}
for line in lines:
cards.append(scratch_card(line))
cards_by_number[cards[-1].card_number] = cards[-1]
print(sum([card.card_score for card in cards]))
# part 2
for card in cards:
if card.winning_count > 0:
for i in range(1, card.winning_count + 1):
cards.append(cards_by_number[card.card_number + i])
print(len(cards))

60
2023/day05.py Normal file
View file

@ -0,0 +1,60 @@
#!/usr/bin/env python3
lines = []
with open('/home/wasp/personal/x/fun/advent-of-code/2023/inputs/day05.txt') as f:
lines = f.readlines()
# part 1
seeds = []
maps = []
parsing_map = False
current_map = {}
for line in lines:
if 'seeds:' in line:
seeds = list(map(lambda x: int(x.strip()), line.split(':')[1].strip().split()))
else:
if 'map' in line:
parsing_map = True
spl = line.split(' ')[0].split('-')
source = spl[0]
target = spl[2]
current_map['source'] = source
current_map['target'] = target
current_map['map'] = {}
elif parsing_map:
if line == '\n':
maps.append(current_map)
current_map = {}
parsing_map = False
else:
spl = line.split(' ')
dest = int(spl[0])
source = int(spl[1])
length = int(spl[2])
for i in range(length):
current_map['map'][source + i] = dest + i
maps.append(current_map)
destinations = []
for seed in seeds:
source_type = 'seed'
m = next((m for m in maps if m['source'] == source_type), None)
source = seed
destination = None
while (not m is None):
if source in m['map'].keys():
destination = m['map'][source]
else:
destination = source
source_type = m['target']
source = destination
m = next((m for m in maps if m['source'] == source_type), None)
destinations.append(destination)
print(min(destinations))

1000
2023/inputs/day01.txt Normal file

File diff suppressed because it is too large Load diff

100
2023/inputs/day02.txt Normal file
View file

@ -0,0 +1,100 @@
Game 1: 19 blue, 12 red; 19 blue, 2 green, 1 red; 13 red, 11 blue
Game 2: 1 green, 1 blue, 1 red; 11 red, 3 blue; 1 blue, 18 red; 9 red, 1 green; 2 blue, 11 red, 1 green; 1 green, 2 blue, 10 red
Game 3: 3 blue, 2 red, 6 green; 4 blue, 6 green, 1 red; 11 green, 12 blue; 2 red, 6 green, 4 blue; 4 green
Game 4: 10 red, 5 green, 5 blue; 3 red, 3 blue, 6 green; 2 blue, 9 red, 6 green; 8 green, 10 red, 4 blue; 9 red, 2 green, 3 blue; 1 blue, 5 red, 15 green
Game 5: 11 green, 7 blue; 5 green, 5 red, 1 blue; 1 green, 1 red, 4 blue; 1 red, 1 blue, 4 green; 4 blue, 1 red, 10 green; 5 red, 6 green
Game 6: 1 green, 1 red, 11 blue; 1 blue, 2 green; 1 red, 5 green, 9 blue; 7 blue; 1 red, 2 green, 9 blue; 12 blue, 1 red, 2 green
Game 7: 1 blue, 10 red, 7 green; 14 blue, 10 green; 12 red, 2 green; 16 red, 13 blue, 1 green; 12 green, 10 red, 3 blue; 9 red, 19 blue, 11 green
Game 8: 3 blue, 1 green, 3 red; 4 blue, 10 red, 6 green; 1 green, 10 red, 9 blue; 9 blue, 7 red, 8 green; 8 green, 12 red, 8 blue; 6 blue, 1 green, 13 red
Game 9: 10 green, 2 blue, 11 red; 2 green, 2 red; 6 blue, 8 red, 13 green
Game 10: 8 red, 3 blue, 5 green; 5 green, 7 blue, 1 red; 3 red, 10 blue, 6 green; 2 red, 6 green, 7 blue; 3 blue, 11 red, 4 green; 8 red, 8 blue, 4 green
Game 11: 14 green, 9 red; 3 blue, 6 green, 8 red; 14 green
Game 12: 10 red, 5 blue, 1 green; 4 blue, 8 red; 5 blue, 1 green, 6 red; 14 red, 4 blue; 1 green, 11 red, 3 blue
Game 13: 1 blue, 16 green, 1 red; 6 red, 2 blue, 5 green; 2 blue, 12 red, 10 green; 3 red, 4 blue, 13 green; 14 red, 4 blue, 12 green; 7 red, 2 green
Game 14: 17 red, 11 blue, 3 green; 16 red, 3 blue, 8 green; 3 green, 9 red, 13 blue; 4 green, 15 red, 14 blue
Game 15: 7 blue, 2 red, 2 green; 1 green, 5 red, 6 blue; 3 green, 6 red, 2 blue
Game 16: 3 red, 3 green; 6 green, 4 red, 3 blue; 3 red, 4 blue; 4 blue, 2 red, 4 green
Game 17: 6 red, 1 blue, 5 green; 3 red, 1 green, 12 blue; 13 green, 1 blue; 5 blue, 7 green, 6 red; 5 blue, 14 green, 2 red; 4 green, 6 red, 10 blue
Game 18: 4 red, 8 blue; 8 blue, 4 red; 12 blue, 1 green
Game 19: 1 blue, 15 green, 9 red; 1 red, 3 green; 4 blue, 2 green, 1 red
Game 20: 7 blue, 4 green, 12 red; 1 red, 9 green, 8 blue; 4 blue, 2 green; 13 green, 8 blue; 3 red, 4 green, 1 blue; 6 green, 7 red, 3 blue
Game 21: 9 green, 4 blue, 8 red; 5 blue; 7 red, 8 blue, 1 green
Game 22: 3 green, 4 red; 6 red, 3 green; 4 red, 1 blue, 1 green; 11 red, 3 green, 1 blue; 7 red, 1 blue
Game 23: 3 blue, 4 green; 3 green, 1 red; 1 red, 2 blue, 4 green
Game 24: 2 blue, 3 green; 9 red, 4 green; 2 blue, 9 red; 2 green, 10 red, 1 blue; 1 blue, 1 red, 5 green
Game 25: 8 green, 4 blue; 9 blue, 7 red; 5 green, 15 blue, 11 red; 11 green, 14 red, 10 blue
Game 26: 3 blue; 2 red, 1 green; 2 red, 3 blue; 10 blue, 1 red, 3 green; 1 green, 2 red; 1 green, 6 blue
Game 27: 1 green, 6 blue; 2 green, 1 red, 6 blue; 1 red, 2 blue, 1 green
Game 28: 8 blue, 1 red, 5 green; 1 red; 3 green, 4 red, 2 blue; 4 green, 2 red, 4 blue; 5 blue, 3 red, 7 green
Game 29: 2 green, 4 blue; 7 blue, 4 red, 10 green; 7 blue, 9 green; 14 green, 7 red, 5 blue
Game 30: 19 green, 3 red; 19 green; 1 blue, 14 green; 2 blue, 5 green; 3 red, 19 green
Game 31: 3 red, 1 green, 4 blue; 10 blue; 3 red, 4 green, 5 blue; 10 blue, 1 red, 6 green
Game 32: 19 red, 1 green, 2 blue; 1 blue, 6 green, 13 red; 10 green, 9 red; 11 red, 2 blue, 6 green; 8 green, 5 red
Game 33: 2 red, 8 blue, 2 green; 1 red, 3 green; 9 red, 9 blue, 1 green; 6 red, 1 green; 9 blue, 1 green, 8 red; 5 green, 10 red, 8 blue
Game 34: 1 red, 6 blue, 2 green; 7 red; 14 red, 13 blue; 13 red, 12 blue; 1 green, 9 red, 13 blue; 2 green, 15 blue
Game 35: 8 blue, 2 red, 3 green; 2 green, 2 red; 3 red, 6 blue, 2 green; 2 green, 6 blue; 1 green, 5 blue, 4 red; 3 green, 6 blue
Game 36: 3 red, 5 blue, 10 green; 1 red, 1 green, 7 blue; 2 blue, 2 green, 1 red
Game 37: 8 red, 7 green; 5 green, 1 blue, 6 red; 7 red, 6 blue, 11 green
Game 38: 4 green, 10 red, 9 blue; 12 green, 2 blue, 2 red; 6 red, 6 blue, 9 green; 1 blue, 1 green, 6 red; 3 blue, 1 red, 5 green; 5 blue, 2 red, 12 green
Game 39: 1 blue, 2 red; 7 blue, 2 green, 1 red; 7 blue, 11 green, 3 red; 8 blue, 13 green, 1 red; 6 green, 6 blue, 3 red
Game 40: 8 green, 5 blue; 5 green, 1 blue, 10 red; 9 green, 3 blue; 3 green, 7 red; 2 green, 3 blue, 5 red
Game 41: 7 green, 8 red; 3 blue, 15 green, 7 red; 2 red, 2 green, 4 blue; 10 green, 4 red, 5 blue; 3 red, 8 blue, 9 green; 7 red, 8 green
Game 42: 6 blue, 12 green; 3 red, 1 green; 1 red, 12 green, 3 blue; 10 red, 9 green; 9 red, 4 green, 5 blue
Game 43: 11 red, 6 green; 2 blue, 11 red; 3 red, 1 blue; 3 green, 11 red, 2 blue; 4 red, 5 green, 1 blue; 8 green, 2 blue, 17 red
Game 44: 2 green, 9 blue, 3 red; 7 blue, 1 green, 4 red; 1 green
Game 45: 1 green, 10 red; 5 red, 10 green, 1 blue; 11 red, 3 green, 2 blue; 2 blue, 3 green, 4 red; 7 green, 3 red, 2 blue; 1 blue, 10 red
Game 46: 1 green, 4 blue, 7 red; 13 blue, 2 green, 9 red; 7 blue, 3 red, 1 green
Game 47: 4 blue; 2 green, 2 red, 1 blue; 1 green, 1 red, 4 blue; 1 green, 2 red, 2 blue; 2 blue, 2 red
Game 48: 5 green, 10 red; 7 red, 5 green; 1 green, 11 red; 12 red, 11 green; 11 red, 1 blue, 1 green
Game 49: 2 green, 1 red, 1 blue; 1 blue, 2 red; 2 green, 1 red, 2 blue; 1 blue, 1 red, 1 green
Game 50: 5 green, 2 blue; 4 green, 4 blue, 3 red; 1 red, 7 green, 3 blue
Game 51: 9 green, 1 red, 2 blue; 7 red, 3 blue, 6 green; 5 green, 4 blue, 5 red
Game 52: 2 green, 4 blue, 1 red; 2 blue, 2 red, 13 green; 8 blue, 3 green; 3 green, 4 blue, 2 red; 2 green
Game 53: 3 red; 4 blue, 4 red; 2 blue, 2 red; 6 blue, 1 red, 2 green; 1 red, 1 green, 6 blue; 2 blue, 4 red
Game 54: 3 blue, 3 green, 18 red; 4 blue, 18 red, 3 green; 7 blue, 4 green
Game 55: 1 green, 2 red, 3 blue; 1 red, 4 blue, 1 green; 3 blue, 2 red; 2 blue, 1 green; 3 blue, 2 red; 1 blue, 1 green, 1 red
Game 56: 12 green, 2 red, 1 blue; 11 green, 16 red, 13 blue; 7 red, 5 blue, 12 green; 4 blue, 16 red; 5 red, 1 blue, 3 green
Game 57: 5 green, 17 blue, 11 red; 6 blue, 1 green; 1 green, 5 blue, 8 red; 9 green, 11 red, 1 blue; 9 green, 11 blue, 7 red; 8 green, 4 blue
Game 58: 5 red, 10 blue, 6 green; 5 green, 11 blue, 5 red; 9 green; 4 red, 2 green
Game 59: 2 red, 6 blue, 1 green; 1 green, 12 blue; 2 red
Game 60: 6 blue, 10 green, 9 red; 8 red, 19 blue, 2 green; 16 red, 10 green, 12 blue; 13 red, 12 blue, 6 green
Game 61: 12 green, 1 red, 3 blue; 3 red, 4 blue, 19 green; 1 blue, 7 green
Game 62: 7 red, 6 blue, 8 green; 10 blue, 3 green, 17 red; 13 blue, 3 red, 10 green; 13 red, 5 blue, 9 green; 12 blue, 4 red; 10 red, 4 green
Game 63: 19 green, 4 red; 5 blue, 4 red, 1 green; 4 red, 2 blue, 15 green; 5 green, 4 red, 5 blue
Game 64: 6 red, 3 green; 6 green, 3 red, 3 blue; 3 blue, 8 red, 5 green; 3 blue, 7 red, 1 green; 1 blue, 6 red, 6 green
Game 65: 1 green, 9 blue; 6 blue, 4 green, 6 red; 6 blue, 5 green; 3 red, 1 blue, 4 green
Game 66: 1 blue, 2 red; 2 green, 1 blue; 2 red, 1 blue, 1 green; 1 blue, 1 green
Game 67: 16 blue, 1 green; 1 blue, 2 green, 2 red; 1 red, 9 blue; 12 blue, 4 green, 1 red; 6 green, 11 blue, 3 red
Game 68: 6 blue, 2 red, 1 green; 2 blue, 2 green; 1 green, 7 red, 15 blue; 14 blue, 12 green, 3 red; 13 green, 10 red, 6 blue; 2 green, 5 blue, 1 red
Game 69: 2 red, 1 blue, 2 green; 1 blue, 7 green, 1 red; 3 blue, 1 red, 7 green; 2 red, 1 blue, 11 green
Game 70: 2 green, 9 red, 3 blue; 12 blue, 1 green, 13 red; 6 red, 1 green, 5 blue; 1 red, 17 blue
Game 71: 7 red, 5 green, 6 blue; 5 blue, 5 green; 7 green, 4 blue; 2 green, 4 blue, 8 red; 10 red, 8 green; 3 blue, 13 red, 7 green
Game 72: 13 red, 17 green; 9 red, 20 green, 3 blue; 1 green, 3 blue, 8 red
Game 73: 1 blue, 7 red, 2 green; 2 green, 1 blue, 8 red; 1 blue, 2 red; 4 red, 7 green; 4 red, 5 green; 3 green, 7 red
Game 74: 2 green, 14 blue; 1 red, 1 blue, 7 green; 1 red, 8 green, 11 blue; 4 green, 12 blue; 1 green, 5 blue
Game 75: 12 blue, 1 red; 1 red, 7 blue, 4 green; 4 blue, 6 green; 4 green, 3 blue, 1 red
Game 76: 7 green, 5 red, 6 blue; 18 red, 1 green; 14 green, 4 red, 15 blue; 4 blue, 6 red
Game 77: 2 blue, 2 green, 2 red; 2 blue, 1 red, 1 green; 2 green, 1 red; 6 blue, 4 green; 1 red, 1 blue, 6 green
Game 78: 5 red, 16 blue, 12 green; 11 blue, 3 red, 2 green; 13 blue, 4 red
Game 79: 9 red, 11 green, 6 blue; 1 red, 3 green; 7 blue, 7 red, 11 green; 8 red, 9 blue, 11 green; 7 red, 11 green, 4 blue
Game 80: 7 green, 5 red, 2 blue; 1 blue, 7 green, 1 red; 2 red, 2 blue; 1 red, 4 blue, 12 green; 4 green, 2 blue
Game 81: 5 blue, 2 green, 12 red; 2 green, 1 blue, 5 red; 3 blue, 13 red, 3 green; 3 green, 9 blue, 3 red; 10 blue, 4 red, 3 green
Game 82: 11 blue, 1 red, 9 green; 11 green, 1 blue, 12 red; 13 red, 6 blue, 19 green
Game 83: 6 red, 5 blue, 16 green; 4 green, 17 blue, 9 red; 15 red, 2 green, 9 blue
Game 84: 19 green, 11 blue, 3 red; 1 blue, 18 green, 6 red; 17 blue, 5 green, 4 red; 18 blue, 7 green, 3 red
Game 85: 3 green, 15 blue; 12 blue; 2 green, 1 red; 1 red, 9 blue, 1 green; 12 blue, 3 red, 1 green
Game 86: 3 green, 4 blue, 5 red; 9 red, 4 green, 1 blue; 6 green, 1 blue, 8 red; 3 green, 2 blue, 5 red
Game 87: 2 red, 8 blue, 5 green; 3 red, 5 blue, 10 green; 2 red, 3 green
Game 88: 16 green, 13 red; 7 green, 1 blue, 2 red; 7 red, 12 green; 5 red, 7 green, 2 blue; 2 blue, 10 green, 7 red; 8 red, 16 green
Game 89: 1 blue, 8 red; 2 green, 10 red, 12 blue; 13 green, 14 blue; 10 blue, 15 red, 13 green; 2 green, 5 red, 13 blue
Game 90: 16 blue, 7 red, 4 green; 4 green, 6 red, 11 blue; 2 red, 8 blue, 2 green; 5 green, 8 red, 10 blue; 4 red, 2 green, 7 blue; 4 green, 5 blue, 5 red
Game 91: 4 red, 4 green, 1 blue; 3 blue, 2 green; 6 blue, 4 green, 5 red; 2 red, 6 blue, 4 green; 6 blue, 1 green
Game 92: 1 red, 3 green; 3 blue, 6 green; 5 blue, 1 red, 11 green; 1 red; 3 green, 13 blue
Game 93: 1 red, 14 blue, 6 green; 10 blue, 6 red; 9 green, 15 red, 17 blue; 9 red, 1 green, 9 blue
Game 94: 3 red, 14 green; 3 blue, 15 green, 3 red; 2 red, 15 green
Game 95: 4 blue, 13 red; 5 blue, 1 green, 11 red; 3 green, 3 blue, 10 red; 13 red, 6 blue; 2 green, 5 blue; 3 green, 11 red
Game 96: 7 blue, 1 green; 1 green, 4 blue; 1 green, 2 red, 5 blue; 1 red, 2 blue, 1 green; 1 blue
Game 97: 15 green, 9 blue; 14 blue, 14 red, 2 green; 18 red, 12 blue, 2 green
Game 98: 1 green, 9 red; 1 red, 2 green, 7 blue; 8 red, 1 blue; 6 red, 2 green; 1 green, 6 blue
Game 99: 1 green, 2 red, 6 blue; 6 red, 1 green, 5 blue; 11 blue, 6 red; 11 red, 1 green; 1 green, 11 red, 9 blue
Game 100: 12 green, 8 blue, 2 red; 7 blue, 14 red, 8 green; 14 red, 1 blue, 4 green

140
2023/inputs/day03.txt Normal file
View file

@ -0,0 +1,140 @@
...766.......821.547.....577......................................387.....................56..........446.793..........292..................
...........................%...../.....981..........627..../..........-.....623......610..-..............*..................16......891.....
...$...........716..&336.......470.325.................*.84........$..34....*.....+.....#.....*76....#.........303.433........-........&....
.117../359.#...............595............129..963#..722..........128........192.313........31........887...............234.......-.........
............298.....922...*.......482.......*..................*......./.........................395................264..../.......166......
.732..................*..815..920*......113.827.........453.571.356..902......693...147............*.....128................................
...*..........451-.442..................*...................................+....*....*.......918...680...........................529+......
....844.587.....................347...425.....974......348.........$615....174.330..............*..................556.......972*...........
..........&...676.........947..%.................*976.*.................45..........192........272.131..............-..977*......85.........
.588..........*........$.$.......515...493.............73.....%...........*.....428.*....................*968..............964.......153*274
....=..860...157....347............*..*......954.930.......472...618....899......%..726.330..44.......687........$..........................
..........@..................+....465..47.......*......*............*........554............@...................485..320....................
.....................%831.267.......................305.844.........413........*........741....-...692.948..........*..........650.......510
....................................*212....419..............848............710.............670.....*......932...281......-.........398.....
.......%....782.......187#..-....890...........@................*../...*531.....745................645......*........#..&..835......*.......
.......180..=....153*......487........@322.........693.........805.687..............350.......259........626...849.221.833.......573....%674
.....................821...........................*...988.............90..273...................*............*.............................
.....65*845..346%..................*412...@.....901.............79.....*.....*..........169.764.14...3.....839...........559..=.............
.....................553..798.............318.%..............29......772...................*......................511.........749...697.....
.........@............*....*.........414.......13.517.......*...............597.....................28*366..........*......%.........*......
......412...........724....973...&....*.............*..#......................%...910...........702......../......473.651...375.*347........
.............*559................906..111........449....510......+342............*....797.262.............650............................175
...........40.........793...................156......./.....643................577..........+.....................*304...711....437*368.....
.........................*.............................843..*...........47..........406............=..../......761.......*...............851
......309@......283...296......#.....322............./.....72.....729.....+...515......*..78......735..970.130..........16...../.&...426*...
................................720.@......952....958.........672*..................239....*...............+................816..1..........
............=..............259........494.+...........................+...447...........310............*...............%553.................
....650....999..837*.......+.........*......%359..604.....577.........591.+.......................832.383........@252.........292...........
....*...............677..........581.528...........*..=.....%.....................583.........................&........*354.................
.................=.........470...*...........=...467...117........$736..3.........*...........................127...945.......808...&....785
.747...658.....223...../........563.......466..........................#...652.841......417...........253.................906.*...984.......
..........*106.......173....396.....................*106....645...426........*.......*......310.........%.....238*546.....*...442......$145.
...618.........&203............*........988......833.................*......594.....837.....*...........................460.......671.......
........................*...548.....704*......................274..985.575*...............122.....574......=391.............433%.-..........
......871...747.......468................466*367..482....455....*..........53...................&.*.................507@....................
........*..*..............597......................*...........855............................502.243.$484......446............-............
.......51.............841...+...........7.565.....281.873*305........603................$..................#781...*.819.....591..104....675.
............+..........*.......391-......*...........................-....658....515...861.......195/.......................................
.............130.903...235..........757................&...765*237.........&....*...........215.......389%............*...269*812...........
.526.919...........+.......-.......*........508*202...109............53.......899...........*....@..................55.94..............26...
...*....................329........73...........................60=..+.....................10..152........674*993..........74..343..........
......305......................902........349...542/.......................783..352...38.....................................=..*....507....
.797.....+...............@.......=.......$.............303.348..408............*......-...729......=867.683..+.425*137.........698....&.....
....*...........988.964.145.785.....916............*.....#.*...*.....535%.806.532.........*....@.........*..11..............................
.684..834...473*.....*.......-.....*........892.372.448.....77.220........*............326..723.........836...........#503...994....*786....
.........*..........863..483....773...........*.........101................121..535..................46......706..............*..334........
.938*..304..../854......*...........267...462..367........#.......................*..%..............*........*...&...*......631.......384...
....................................@.....*......................485..836...197..594..393....433..169.209..13....812..849..........=..../...
.....................#.....132........172....419..380..245*860...........*...$.................=......@............................264......
....52.555.........602...*........780*..........*...*............................398*245................................61.196.+............
......*........@........624...823...............823..770.@....518......663.........................@972.....396*975.......*.....986.....*968
.............694.308........................373...........578...#.........................959........................=250............461....
..601...............#....719.-.......&.......................................757.............*.........344................660............699
.....-.358..480*989...........261.....749......@......-689...209-.......826$...-..194........457..........*...473..........*.........893*...
.339......%...........221..................643..564................................*.............443.....798.=.........668..69....@.........
....*702..........&........145.734...........@..........$951...............325......439...........&.......................*....151.......436
.........#......554.661....%......-....243.....................735.......-.....457.........769*........474*769............547........331....
136.361..907.........*........../..........600.....-..739.769..#.........306.....*.............245..............*218..296......683...*......
...*..................682...746.765..............681.....*...........511......704.........231................892..................*.715..728
.......*415...................*........295..468.......................*.............35...*......./................665.985..&148.........&...
....831.......510....444.......565.................3.....334......558..........626........342..532..426......709...#....*.......815.........
..............*......*.............................*....*....*...*...............@.....................................418......*......%527.
.280#...515..706..305........................344.623...957.803..2..............=...871.............243..989....+..............218...........
.........*...............773...../...........@.......$................519/.88..249.+...........449*........#....86....454...2........$437...
..........822...197.........*..717......./.......8....562.58*102.936@......*............187...........................@.........212.........
..349.719.............728..623...........58.....*........................610....873........@...................................*............
...*..*..................%.......423*214......259....426...101.....346............*.+.........359.....813.=...686.....$...639............140
..839.768....464.........................../........*.....&...........@....367.951...741..........*....=..283...+..195.....%........632.*...
...........#.......................821.893..539..287....................../.....................942...........................149.....*.925.
......%....155..........*48.............*............143....../901.............844*368...=...................48....777.........*....246.....
....79...............282.............437...............+...........561.....736............133.%.........+......*....*...257*....71..........
.............655.131................................................*..........%..............154.......897..791.....29.....358.............
...$...966.....*....*....864......892...........661..857=........=..259........645.................................$....630...........134...
.806...=.....=....949...............*....#.......*..............531.................410.............................428..*..................
..............225............941....570...705....705..36.86...........................%...972/...735....448/............528.................
.....253................................................*...506.918.......390.478............................862............................
.....*......137......................300..........607.....#....*......663................190................*.....869&..117$................
.831.252.......+...%483..110.........*......299.........606..........&..................=................148...24..............147*748...851
...........................-.......431.....%....820.........713.219....366.......704...........................*....%...&...............*...
.......669.295.......*.................................155..*......#......*......=.....727........494...27...110...588..676..904...345...382
......@...........987.829......732/......=.517*519.405.......897........115........716*...................*....................*......*.....
..........................740..........713.........*.............978........*................+387.......=..885....-...+968......951....669..
....105..............907.-.......105.......807..741.........*....*........627...882...=...........695..779.......248.......421..............
...$................$.............*..907*.....*.....*....111.215.89...723........&....546.....849*....................119.....*......644*...
.......62.....723......155.923...26......678.341.998.107...................=.........................=.........934.9....*...................
....20*.................*...........251..............................470.46../........................31............*...406...441...........
........$61......#...628......942......&......255/..926.......................520......47&...............240.......791.......*....875...424.
.851.27.......700............*.....234..............-.......91.......=..729......................706...........458.....752...722.*......*...
....*...............997....635...........920...*...........*.......266............2................*.............*......=................656
.........=...................................57.115.773.944..107.........368...../..205.......971..829.728........566..........75....269....
.......538...........646.......706#..762..............*........*.814=...................291..*..............30................*......&......
..605*..............*...............*.......226.....709.8...671............159..974#...$.....427.......................645..587.............
..........973.866..799......913...741...600*....705...............+........*.............................565..606.........*........654.778..
......872....*.....................................#.873.....-225.499..546.847.......763..743@......113.....*.....=....380............*.....
.........+......891.53.......206..........760..................................822.....-........136..%.....610.....20......85...............
............200..+....*......*....236*511......849+.....672-.&................@..........591*.....*....292......%......176*.......571.......
....#15......*......783....512..+....................*........914.86...-216........-574......381.658......*..201....17......758..*......$...
..............560................725...628...+...646.432..867.....*.....................................734........*..........*.570....948..
....417.....................................992....*............638......696..362...=.......40......................843.....722.............
....*......*.................855.169...623......816..816...97.........*....*.....-..998..............................................3......
...646..646.389..........................-..............*../.....990...972.92......................333....=..........185..261.400...*...#...
.................966.&.............$.........#.....413.700........*...............................&....465...........*......=...+.621....452
..873..247........*...212....290....429...551.....=............305....#...719.776....573#....657...............972..477.....................
.....*...........725............*.........................405.........952..*.....$..........*.....856.......................295.............
.....661.............919*92.....373.917*..794....#............12/..&.......468.......$....841.680.../..303..$..............*....653.197.=...
..........730...........................9.#...#..166...206..........794.............891........*.............192.....300...329..+...*....884
............/...........*189.....*..........677........+...%.............961.................819....294*............................242.....
.....................139......607.41.923....................610..528......*...&455.....70.-.............215.......827&...256....124.........
...............342..........................454.................*.......885.&...........*..396....69&....................*........%.........
................&...........842...581..335.&.......672.......144.............852.......801...............&60..*............&..........802...
..73.133.40....................+...*....%...........+...............248..........769.......511......707*......710..........228..........*...
.....*...*.........984.....532....415..................................=.........*...151....*...........467........170..........#....913....
..206.....147.....%....338....@..........394.........143%./......958..........749...*....569...................848...#.........268..........
..............493......*.............*....................844....*................824...........=...553.......%...........894...............
......................38..........796.852...=....955............674.974...................964..551.=............*259..-..*..................
...596............857......941...............497...&.564.890.........*..311.905......382...../..........25...329.....241..174......873......
...........907.......#........*741.....................*......180.808..*......*........*..........764..........................269*.........
...308.......&.569......898........524...452...426..430....34.*.......937...231........752..........&.......111.......................93....
....*..........&..............754...*.....*......................409............619................................610...............*......
...20...886............788.......&..261.943.............#...#.....................*.../........@......+..137........*..460.205......760.71..
........*.........+........837........................184..892...................811..161....648...643.....*........10.......*..............
........309.....290..........*...../227.......331...........................659............................876..440.......891.........893...
............*..........198...................*.............711*629.............*....837....538..-................*....335.....+.........=...
..........923.............*281.330..423...726....530..*280....................990..*.............651..661......121......=.....236...344.....
.....419...........$.............*...*..........*.............866..904............96..422.............@......%.....744.....$.......*........
.......*..........770......../..843.794..42......201...........-..*.....................*........%.........905........&.....335..865...255..
....164....95.814...........300.............*332...................180.....739...=..464.619....617......-.............................#.....
.............*.........*.............304..81................../...........*....662...*................658...............368..%...........996
.........755........738.329.&866...../.....................614...$.......851.......254......917.152............297..860*.....466...774......
..........*................................467.....173.........$.684...........................*.......535.......$....................*.....
..960..569.....888..=......................+........*........744.................................882........................975........841..
...*..............*.700..........................458....*817......668..........882.710.............#.413%......@.............*..............
..648............63...............803.237...341......229.............*..632....*......*910...405................625...........805...&...$...
....................../...=............*.........984..........417...78.....*..141.+............*....46..839............786*88......454.289..
.....145..=........502..63............111...826....*.../.........*......740.......153.432.....74......*....&.430..............594...........
.......*...739..............599.&.............#...454.611........291........196......................172.......*.%434............*..........
.........*..............671..&...266............/.......................928.-................................434......387/......16.699......
......538.581........&....*............%......10.....168....537&....296..*......177...192................-.......470........................
..................661......496.346*.....870............*................958....-......*......-....@......101.....+..........................
..808..............................365..................195.........................90......482.837............................404.214......

202
2023/inputs/day04.txt Normal file
View file

@ -0,0 +1,202 @@
ard 1: 73 92 13 35 18 96 37 72 76 39 | 82 14 66 57 25 98 49 28 3 95 81 85 31 30 16 79 7 12 55 19 97 45 9 58 2
Card 2: 41 93 82 81 96 56 46 13 44 79 | 13 28 47 49 46 94 84 87 96 45 41 79 35 43 31 34 81 82 64 93 8 56 9 44 55
Card 3: 22 26 55 46 94 88 3 17 91 95 | 95 97 44 25 46 91 17 20 43 94 22 34 62 73 31 55 60 79 88 90 3 80 33 89 26
Card 4: 78 32 27 65 64 28 43 81 50 93 | 95 37 77 46 29 55 98 88 94 72 53 80 43 41 7 63 92 33 32 66 2 35 31 24 65
Card 5: 74 21 96 20 45 88 18 10 53 73 | 80 87 86 81 28 11 77 16 70 44 8 22 72 85 27 35 42 36 84 37 59 9 41 56 3
Card 6: 70 48 93 10 63 97 20 77 72 42 | 19 7 12 1 47 31 72 88 36 82 69 17 29 62 22 8 32 86 52 76 96 41 51 55 44
Card 7: 79 43 87 42 8 74 51 69 3 44 | 30 27 19 42 99 28 68 43 5 36 54 24 92 97 34 44 96 2 50 82 35 69 25 45 18
Card 8: 11 39 32 62 93 41 75 94 23 29 | 40 31 95 41 17 21 81 90 34 13 4 5 48 24 20 80 50 26 27 43 54 61 8 73 89
Card 9: 75 99 39 45 32 35 55 87 76 21 | 34 14 80 3 93 46 71 78 23 22 87 82 42 49 76 94 10 51 44 58 11 4 91 26 43
Card 10: 34 53 9 36 52 30 70 60 65 96 | 85 31 29 41 4 88 63 93 9 52 11 37 23 61 51 71 97 26 70 15 38 72 94 64 95
Card 11: 41 92 42 94 63 89 85 25 86 98 | 3 20 70 74 93 34 21 82 37 55 9 79 85 41 14 99 2 92 90 26 40 57 67 89 31
Card 12: 50 37 85 46 56 44 2 42 60 66 | 69 78 30 59 71 87 6 51 9 81 75 45 24 16 31 61 44 96 41 86 23 17 42 27 40
Card 13: 24 46 50 29 89 77 49 25 53 65 | 63 66 43 86 11 9 40 70 38 79 78 27 12 20 84 42 67 73 22 8 68 35 6 4 69
Card 14: 72 68 9 78 90 40 55 37 16 52 | 27 98 76 63 58 70 8 44 48 90 6 92 3 20 96 88 59 31 95 15 45 47 30 65 64
Card 15: 15 28 38 87 24 61 26 13 18 94 | 63 56 51 29 17 47 21 62 19 14 69 32 60 41 11 10 54 89 7 35 71 16 96 20 27
Card 16: 11 24 42 76 99 12 45 94 33 10 | 36 94 72 31 12 28 24 18 11 99 61 33 79 10 53 35 76 42 43 22 78 27 62 59 45
Card 17: 72 40 35 28 16 51 2 89 83 39 | 68 79 67 15 77 35 12 34 57 16 10 75 72 39 89 60 27 29 19 17 32 45 37 38 14
Card 18: 13 68 25 92 79 95 67 87 50 7 | 29 23 1 59 91 51 17 80 12 84 27 66 69 61 39 16 34 44 54 37 4 11 9 45 14
Card 19: 62 14 80 15 40 69 26 65 83 32 | 72 18 66 83 59 48 65 50 37 93 80 14 67 60 40 68 32 69 27 85 30 31 62 15 26
Card 20: 4 20 48 56 11 13 8 83 98 96 | 87 25 5 99 19 3 51 79 36 35 39 43 45 63 80 40 20 75 24 64 54 98 95 68 72
Card 21: 13 67 19 78 79 47 49 69 8 9 | 44 9 47 62 50 78 19 76 8 57 77 13 39 11 43 67 49 18 79 94 69 55 58 7 70
Card 22: 21 39 6 99 81 57 22 53 95 90 | 80 46 74 15 69 72 14 16 87 10 99 20 45 81 6 27 51 21 40 89 90 95 65 57 50
Card 23: 27 36 95 10 68 52 30 43 51 70 | 62 52 51 95 68 25 11 30 65 10 55 49 27 81 34 37 63 43 9 56 96 70 1 36 58
Card 24: 31 57 94 2 78 82 63 27 97 70 | 97 58 46 37 70 2 98 57 11 29 36 94 51 90 56 27 13 31 39 28 60 71 96 78 26
Card 25: 96 13 61 89 70 80 93 57 9 28 | 13 27 29 50 9 94 59 80 16 7 40 89 91 3 60 75 17 18 36 86 15 28 26 61 57
Card 26: 53 96 15 97 36 13 31 22 19 35 | 61 55 1 92 93 65 19 41 52 3 85 24 22 78 13 70 66 54 31 95 71 96 58 97 35
Card 27: 56 75 28 85 82 52 58 59 13 33 | 2 31 12 10 81 94 9 80 5 95 43 55 83 60 66 79 61 58 49 34 29 57 99 92 88
Card 28: 4 21 19 94 95 47 92 52 78 73 | 72 96 85 7 26 44 56 86 49 6 63 35 1 66 4 70 13 40 71 17 62 8 69 76 32
Card 29: 44 13 92 57 70 83 96 63 6 76 | 51 30 71 38 42 76 77 99 10 64 26 81 21 50 89 59 31 8 79 83 85 2 5 75 44
Card 30: 59 26 61 78 20 5 11 32 87 23 | 97 41 35 31 27 80 83 51 42 2 17 48 69 6 37 62 43 29 18 73 8 95 82 79 45
Card 31: 80 30 36 54 1 81 95 16 45 62 | 99 73 91 43 93 23 4 51 71 30 84 28 80 63 46 53 49 55 74 31 25 2 52 3 21
Card 32: 10 9 5 18 68 47 81 1 93 65 | 55 80 77 33 50 94 56 9 58 22 86 31 51 2 88 44 98 99 26 21 3 30 20 52 93
Card 33: 16 48 32 5 1 96 11 2 14 46 | 80 10 79 87 19 5 71 72 30 29 93 13 39 67 8 49 22 48 76 28 52 23 58 38 81
Card 34: 70 24 23 27 67 55 95 96 80 92 | 54 5 42 37 93 49 10 7 74 80 50 34 78 40 2 28 39 52 3 83 62 21 91 71 73
Card 35: 70 96 75 73 29 58 88 16 77 71 | 68 42 64 11 65 63 5 79 38 52 34 41 86 35 25 44 48 93 20 60 78 4 90 80 21
Card 36: 17 59 71 39 41 83 86 51 4 23 | 88 96 35 17 91 16 34 26 27 92 75 97 46 78 39 80 32 60 70 9 81 28 50 95 18
Card 37: 52 75 8 64 39 42 10 34 71 73 | 62 34 29 80 46 64 2 42 81 45 55 44 17 33 66 26 12 50 52 8 94 4 43 85 48
Card 38: 61 74 68 26 97 31 86 96 41 98 | 95 56 70 49 3 86 21 8 90 39 96 26 30 16 46 31 97 89 61 68 53 41 98 54 74
Card 39: 3 18 75 56 73 41 43 82 34 33 | 70 26 42 78 6 56 90 41 17 75 18 47 82 32 13 60 81 39 5 52 54 55 12 48 98
Card 40: 96 25 22 84 95 72 50 40 90 69 | 48 91 77 78 16 17 55 26 1 28 14 31 23 79 51 24 82 97 62 47 13 93 12 4 20
Card 41: 71 54 24 39 7 51 95 46 90 17 | 96 44 64 69 8 62 97 39 48 2 76 71 37 84 90 54 95 81 46 63 7 51 50 24 47
Card 42: 48 94 44 43 57 58 55 7 17 11 | 2 12 84 40 96 57 73 17 55 94 43 87 90 95 35 21 11 42 34 26 25 10 74 60 41
Card 43: 75 8 12 87 36 35 33 62 11 39 | 25 73 71 64 46 99 60 57 15 24 80 10 74 67 12 23 63 69 56 55 20 53 1 52 81
Card 44: 66 71 25 56 8 65 96 38 68 41 | 41 33 18 60 66 72 37 87 59 94 56 96 5 7 17 21 14 25 93 39 74 79 46 71 11
Card 45: 27 8 93 49 24 48 23 78 98 51 | 71 37 96 47 74 21 9 40 12 45 49 70 84 76 58 53 50 91 34 85 13 7 5 29 55
Card 46: 84 42 44 27 98 64 19 28 93 74 | 17 15 4 47 75 52 73 90 89 57 55 36 80 81 54 71 88 53 1 56 21 32 66 91 38
Card 47: 53 21 4 28 65 58 49 98 10 23 | 25 20 19 64 10 67 15 78 80 7 83 13 35 38 75 86 33 28 98 27 73 70 59 79 14
Card 48: 37 12 5 10 95 45 70 11 72 97 | 16 89 35 32 24 78 71 91 14 52 9 63 53 36 17 8 82 97 69 27 26 12 81 67 43
Card 49: 54 4 71 83 72 50 95 78 35 36 | 46 87 98 18 36 72 74 75 66 70 69 16 21 58 90 33 93 68 41 59 7 23 92 5 11
Card 50: 70 93 33 38 27 36 61 55 74 94 | 40 20 58 70 78 12 14 31 95 29 19 65 81 17 90 16 45 51 13 97 72 63 53 41 88
Card 51: 27 14 41 6 24 48 96 66 43 18 | 11 1 81 92 8 29 26 13 35 73 3 78 93 52 98 77 60 99 62 79 22 54 9 21 30
Card 52: 1 28 54 70 24 22 50 37 63 87 | 22 11 71 87 50 25 24 70 37 14 95 28 40 80 3 54 63 58 82 1 34 41 13 10 75
Card 53: 33 96 53 80 60 6 35 77 32 83 | 35 5 43 67 32 80 18 79 58 91 28 96 23 53 6 83 77 86 71 50 21 33 60 30 24
Card 54: 45 76 84 5 12 3 44 2 81 59 | 6 76 63 81 16 2 12 3 87 44 21 24 45 19 59 84 5 17 68 80 66 36 15 99 31
Card 55: 5 67 46 50 68 64 14 94 11 4 | 45 34 62 53 97 65 37 27 68 36 22 44 20 60 75 77 89 55 33 9 13 28 63 31 47
Card 56: 51 96 40 33 39 81 74 60 62 65 | 70 90 69 76 32 62 40 65 56 80 28 33 74 81 82 94 60 12 49 7 39 96 8 63 51
Card 57: 24 71 51 97 23 89 41 46 6 56 | 62 52 20 4 67 24 38 5 92 50 11 63 59 17 55 83 98 21 48 87 97 32 23 53 66
Card 58: 63 72 78 10 64 46 65 54 95 9 | 8 77 4 58 32 82 42 49 97 47 40 2 87 24 9 94 63 61 17 27 56 55 12 75 39
Card 59: 62 67 17 58 45 46 91 94 81 93 | 46 40 52 26 74 81 17 41 82 61 12 50 35 97 62 94 28 58 38 45 92 63 67 93 91
Card 60: 81 21 13 88 69 2 49 17 59 51 | 64 4 59 28 95 21 2 17 49 88 48 13 82 51 18 65 54 81 42 10 22 69 32 85 60
Card 61: 50 51 58 20 22 31 61 89 84 7 | 1 68 27 88 52 39 13 23 2 3 42 5 55 29 77 38 44 95 63 34 46 75 4 60 16
Card 62: 62 84 76 41 71 86 25 15 55 42 | 71 32 35 76 42 41 84 15 1 43 30 88 48 86 25 70 98 62 93 3 13 46 77 97 50
Card 63: 34 20 1 29 7 61 31 97 81 85 | 26 8 78 2 29 61 23 59 60 7 10 86 12 64 1 87 24 56 58 30 19 53 36 81 34
Card 64: 3 82 28 70 49 95 9 52 45 38 | 27 28 65 81 57 15 29 71 32 60 48 52 4 73 38 72 67 10 88 7 3 5 78 91 18
Card 65: 85 74 52 87 60 24 82 72 67 93 | 72 4 87 52 86 48 39 67 18 15 99 41 78 38 60 84 36 75 79 23 2 42 54 16 69
Card 66: 33 54 78 76 24 29 62 20 2 98 | 76 98 51 99 75 2 30 83 33 72 28 3 29 62 20 84 54 61 59 94 1 16 63 24 78
Card 67: 59 78 56 63 44 35 10 94 13 4 | 46 63 56 1 94 86 55 80 20 28 50 67 4 53 6 59 13 58 93 10 22 19 84 12 8
Card 68: 87 12 41 7 75 43 62 68 63 81 | 4 95 20 24 91 37 70 56 67 49 90 82 6 21 59 30 71 64 41 65 58 96 8 25 13
Card 69: 89 39 8 86 62 97 53 84 72 74 | 11 48 25 89 72 59 7 85 15 19 65 80 54 1 21 38 29 30 40 58 56 49 3 83 52
Card 70: 75 49 73 78 29 12 47 36 24 88 | 92 84 50 75 12 34 73 28 97 86 29 56 78 8 69 47 17 44 32 68 81 15 16 26 37
Card 71: 44 41 24 40 59 85 74 36 4 92 | 33 48 32 49 78 34 35 29 45 93 36 37 18 98 16 17 58 69 40 61 66 94 60 59 75
Card 72: 9 21 83 27 2 23 99 7 6 59 | 73 74 81 25 65 33 29 14 27 44 24 63 49 43 12 37 69 79 36 54 52 82 55 78 94
Card 73: 71 70 3 47 31 76 78 72 86 98 | 95 20 70 33 45 89 85 29 52 88 42 90 6 80 25 58 79 13 48 67 41 49 24 27 39
Card 74: 22 39 58 70 56 59 3 98 61 97 | 13 84 72 47 11 52 4 35 46 49 5 24 62 43 9 40 63 16 99 93 33 83 30 91 14
Card 75: 29 48 85 95 64 61 35 99 15 46 | 98 97 9 76 5 14 74 87 38 75 82 54 4 63 20 53 79 40 62 96 2 85 31 36 80
Card 76: 70 94 3 1 46 48 87 5 16 74 | 52 14 22 6 24 65 4 8 42 36 66 43 9 45 93 69 51 57 19 44 81 98 77 35 79
Card 77: 77 8 29 21 11 31 93 74 72 71 | 67 8 43 72 62 40 11 77 71 29 61 92 74 12 52 37 78 93 56 31 14 21 63 39 35
Card 78: 66 48 5 4 63 54 91 74 76 77 | 48 54 36 95 11 61 76 52 46 65 18 67 66 63 62 19 5 74 77 64 4 42 9 91 55
Card 79: 57 19 65 23 69 74 28 97 89 41 | 89 15 41 99 58 53 8 17 23 81 28 94 43 57 1 46 71 38 87 6 49 59 80 85 75
Card 80: 64 39 19 41 14 6 91 8 61 46 | 66 94 39 82 43 92 33 8 30 1 40 55 18 95 6 86 7 80 91 65 97 9 12 61 2
Card 81: 26 28 44 29 78 30 14 68 22 40 | 38 8 25 72 51 31 16 71 45 37 87 23 85 64 7 6 34 44 90 9 13 15 82 49 32
Card 82: 47 26 6 33 32 1 37 42 96 29 | 68 20 10 56 6 27 13 22 83 15 41 37 24 79 52 93 80 94 45 92 50 46 2 78 42
Card 83: 33 32 63 1 19 69 29 3 64 10 | 69 43 8 32 9 67 40 23 64 20 96 27 1 42 11 19 3 10 63 33 22 29 55 6 49
Card 84: 25 47 44 53 22 60 77 89 37 67 | 99 48 44 53 60 6 9 8 22 70 37 96 50 47 25 89 11 49 67 90 29 32 77 40 66
Card 85: 30 60 57 86 93 88 18 27 48 82 | 94 10 57 86 59 88 48 52 78 29 20 41 82 77 90 87 64 6 60 81 44 51 2 68 45
Card 86: 8 29 97 92 91 69 48 82 51 67 | 40 81 10 97 57 94 7 65 84 17 96 38 5 76 98 55 39 34 88 27 12 18 3 26 9
Card 87: 29 21 65 98 26 23 40 94 90 51 | 42 53 95 94 62 75 86 55 29 49 92 21 87 37 56 40 13 68 65 23 26 98 38 31 69
Card 88: 30 79 14 43 73 41 36 83 19 17 | 3 73 70 55 99 34 90 38 26 5 85 22 81 97 66 16 24 88 2 33 21 63 96 58 41
Card 89: 81 41 29 97 76 57 30 79 25 52 | 76 37 89 90 38 17 87 46 7 93 99 54 41 62 79 43 82 95 70 61 29 58 48 12 60
Card 90: 26 94 39 29 48 22 16 98 66 64 | 52 66 61 50 45 64 80 27 5 14 68 13 58 37 7 26 39 82 16 72 33 8 48 99 88
Card 91: 87 17 19 24 64 7 45 28 36 23 | 54 16 64 83 48 49 61 31 95 66 92 15 85 41 3 82 63 67 55 57 9 68 18 32 43
Card 92: 48 41 8 81 26 60 65 73 1 88 | 39 65 51 63 69 88 25 41 3 13 66 98 18 31 73 71 86 12 10 96 6 93 20 9 82
Card 93: 79 2 21 93 97 59 62 43 83 73 | 26 9 28 84 47 46 44 2 83 5 13 95 7 4 36 35 11 10 72 82 90 65 73 98 87
Card 94: 74 86 50 28 11 2 94 47 54 77 | 1 69 35 40 22 19 16 61 66 68 28 56 29 85 10 51 83 7 50 59 92 71 9 86 67
Card 95: 96 12 56 26 91 15 64 61 82 40 | 52 14 50 70 93 83 54 42 84 19 43 80 82 25 73 3 44 45 81 5 87 41 8 16 78
Card 96: 80 38 2 91 44 92 19 43 10 64 | 11 45 21 28 31 71 23 88 93 62 17 27 7 78 33 32 54 84 5 72 15 52 63 68 91
Card 97: 32 54 71 38 5 89 28 47 75 42 | 98 34 57 25 9 80 37 71 61 62 94 6 65 13 92 84 11 2 72 90 17 67 4 1 46
Card 98: 39 57 6 68 64 91 90 51 78 10 | 56 30 1 12 62 44 21 69 53 65 84 32 96 25 94 92 38 60 14 47 77 13 71 93 20
Card 99: 6 89 48 77 90 57 21 72 87 73 | 39 48 45 73 87 79 14 25 57 72 66 89 31 30 77 50 74 6 34 36 21 23 90 10 49
Card 100: 33 40 16 54 58 60 30 47 22 6 | 31 47 30 76 48 67 33 68 22 57 54 5 16 6 58 43 3 64 55 15 40 60 77 13 4
Card 101: 19 52 71 42 34 73 35 89 62 46 | 9 73 26 49 72 14 19 46 99 32 4 88 84 10 87 17 27 89 30 98 40 7 75 78 90
Card 102: 2 79 8 73 25 16 82 47 20 52 | 71 88 82 79 2 51 52 3 54 20 56 19 69 10 97 66 45 28 36 39 47 61 40 13 42
Card 103: 77 28 11 32 36 23 39 88 76 51 | 26 36 99 55 25 19 31 42 18 66 39 11 59 46 4 74 23 71 77 16 84 58 28 32 53
Card 104: 22 90 17 19 96 62 98 55 41 49 | 90 91 74 23 98 84 77 31 81 16 41 67 49 55 56 86 22 24 73 52 99 62 93 32 34
Card 105: 41 91 2 4 18 81 52 93 89 87 | 3 47 6 77 60 24 97 26 70 19 37 36 51 82 48 21 31 99 73 88 59 15 46 35 32
Card 106: 48 54 60 39 80 50 13 61 43 51 | 24 66 90 38 10 74 28 29 89 16 5 25 2 54 15 34 70 7 44 47 14 48 69 78 13
Card 107: 10 20 81 62 85 75 4 49 58 1 | 32 89 48 79 90 96 15 59 36 14 49 55 38 34 30 11 62 28 53 72 17 77 41 80 66
Card 108: 79 94 49 89 78 71 20 7 48 56 | 11 53 35 90 22 29 4 71 48 94 70 8 72 78 27 45 7 21 49 16 55 56 73 42 81
Card 109: 32 73 98 31 4 46 57 11 40 88 | 36 40 89 47 18 87 98 48 45 84 21 1 80 33 67 32 64 28 61 3 51 10 86 97 62
Card 110: 45 51 97 87 23 48 19 50 63 55 | 19 20 15 22 27 24 38 93 55 54 98 23 28 97 82 59 73 11 8 1 18 64 50 63 48
Card 111: 38 1 49 22 26 96 3 88 24 70 | 79 58 20 74 70 80 55 68 35 77 88 3 24 40 87 53 50 47 38 54 82 26 49 7 2
Card 112: 79 90 9 20 94 36 88 31 48 42 | 25 68 69 52 24 98 76 63 97 41 67 94 61 90 32 87 18 13 75 38 84 60 64 86 89
Card 113: 7 32 6 52 76 72 39 24 46 79 | 67 19 31 94 50 26 66 11 45 80 86 68 88 22 65 3 99 12 90 79 38 14 4 73 54
Card 114: 80 54 9 2 58 26 44 63 15 21 | 5 60 76 47 87 33 89 23 4 55 17 42 62 46 97 48 90 91 95 82 34 64 30 19 31
Card 115: 51 34 88 42 20 98 75 79 39 48 | 76 94 13 58 12 66 50 72 2 89 68 21 96 25 10 45 30 7 99 15 46 59 90 9 53
Card 116: 43 32 82 89 9 63 78 57 55 77 | 19 47 23 27 70 22 18 52 28 93 36 76 80 65 21 8 67 20 84 9 12 90 92 97 5
Card 117: 71 50 45 29 32 75 10 96 82 43 | 96 46 83 47 10 11 16 39 36 3 89 9 67 5 72 53 2 27 19 7 8 24 61 37 4
Card 118: 37 44 20 31 43 47 13 46 51 39 | 8 70 7 66 48 50 18 82 84 96 73 12 6 97 62 75 17 49 26 22 4 24 54 94 61
Card 119: 36 75 46 25 47 69 95 8 94 81 | 48 91 62 11 99 10 9 7 26 15 1 79 54 45 49 27 53 78 64 65 33 31 59 17 5
Card 120: 37 96 65 31 64 95 9 55 92 29 | 71 62 77 18 86 52 33 19 8 93 30 74 17 84 59 11 69 4 41 67 76 10 66 43 38
Card 121: 39 99 21 22 11 13 61 72 49 29 | 98 79 29 42 27 73 12 40 96 13 88 45 14 18 4 36 99 80 11 22 49 23 67 21 72
Card 122: 74 88 60 36 94 18 99 55 70 16 | 91 77 18 6 93 84 97 68 45 13 63 94 14 21 31 10 65 16 61 54 70 51 30 46 36
Card 123: 67 91 97 35 11 3 8 69 81 15 | 14 45 66 15 8 29 69 24 68 67 10 59 35 18 17 53 11 3 91 12 43 72 97 81 89
Card 124: 64 61 94 18 21 17 42 80 86 43 | 25 83 69 59 57 51 87 38 91 54 56 46 4 75 99 90 73 37 20 86 49 98 21 58 81
Card 125: 51 79 20 71 43 42 46 36 77 7 | 55 46 22 24 76 86 34 95 73 36 98 63 49 43 54 28 58 10 26 62 79 97 39 60 32
Card 126: 44 51 42 27 1 84 56 38 18 91 | 27 67 1 51 42 44 19 18 73 84 16 12 56 24 91 21 97 47 99 88 90 25 6 38 65
Card 127: 85 92 63 8 17 51 43 61 52 78 | 37 81 65 43 88 97 17 79 46 51 39 23 44 78 95 2 28 49 32 85 63 84 61 8 92
Card 128: 36 40 7 30 79 76 4 37 97 27 | 97 29 30 58 84 71 4 98 78 27 6 76 43 22 37 40 36 32 7 23 70 92 53 79 48
Card 129: 98 81 33 49 20 93 32 82 39 48 | 39 65 7 78 52 87 79 53 33 60 63 81 71 93 55 92 12 30 82 32 38 27 90 95 84
Card 130: 29 59 99 28 65 42 80 87 19 85 | 87 65 59 82 28 29 64 99 79 33 9 31 19 75 53 1 20 42 97 39 72 80 8 85 63
Card 131: 88 58 37 3 66 87 67 60 84 5 | 84 86 40 82 37 16 34 55 54 70 80 65 22 77 31 48 78 11 68 18 12 52 69 17 32
Card 132: 50 23 57 31 27 1 25 2 38 21 | 52 61 75 38 15 71 90 50 76 66 22 39 99 68 13 37 78 18 87 43 63 40 53 84 2
Card 133: 3 59 60 91 93 68 65 45 86 20 | 13 32 74 8 90 68 58 94 67 38 93 97 75 2 71 20 31 37 59 30 39 44 28 34 64
Card 134: 42 6 64 28 96 55 43 58 24 40 | 36 99 10 79 2 9 42 61 84 58 35 7 77 38 85 21 64 32 78 6 96 74 89 40 55
Card 135: 38 15 49 59 73 40 13 60 41 25 | 46 80 2 60 42 59 51 57 56 27 40 62 76 37 84 16 89 18 25 73 5 22 45 70 81
Card 136: 18 17 68 43 77 76 91 13 4 79 | 11 67 10 73 23 71 8 46 87 79 5 51 58 47 62 66 24 29 55 82 93 20 80 32 42
Card 137: 60 51 99 79 67 59 66 40 25 87 | 44 53 76 5 77 75 65 90 9 41 55 22 60 23 71 30 1 86 88 15 54 66 59 13 68
Card 138: 78 65 89 48 62 88 3 12 87 99 | 11 19 39 38 69 81 12 75 17 52 26 56 29 77 91 23 93 53 50 66 15 16 85 80 71
Card 139: 34 12 48 47 25 98 32 37 21 54 | 13 62 79 43 90 72 47 11 20 82 38 29 69 10 66 35 1 84 7 52 27 42 46 91 58
Card 140: 61 27 68 51 7 58 43 89 26 59 | 2 17 44 87 36 15 6 35 57 29 62 13 56 81 40 19 53 9 85 5 10 46 64 86 88
Card 141: 40 28 9 81 37 43 18 77 83 23 | 13 59 2 31 52 30 47 6 42 89 70 69 86 92 19 93 58 49 36 8 29 99 60 63 67
Card 142: 25 6 69 2 14 44 13 93 89 95 | 13 33 76 2 14 68 95 25 18 23 44 43 89 6 93 11 4 24 9 45 38 69 36 15 17
Card 143: 3 87 14 59 7 5 69 35 20 17 | 5 16 21 69 38 50 64 97 72 30 53 77 73 13 33 55 79 70 4 10 95 59 3 41 42
Card 144: 94 63 13 51 62 72 33 9 64 22 | 11 90 13 28 47 56 10 4 93 30 7 70 33 69 62 36 72 96 24 22 71 63 52 86 73
Card 145: 76 1 41 88 97 18 10 11 52 20 | 18 11 41 1 71 52 12 94 74 44 58 70 69 73 79 97 20 45 59 76 78 88 4 10 64
Card 146: 93 1 18 44 21 66 28 60 98 9 | 13 42 18 46 28 23 96 16 12 55 70 53 98 56 64 50 15 61 25 72 24 35 8 43 97
Card 147: 67 27 79 43 7 74 11 15 64 75 | 17 57 90 7 41 36 93 29 62 14 77 5 38 33 68 70 32 13 23 6 25 30 55 45 9
Card 148: 59 62 37 5 52 53 43 29 98 2 | 33 62 93 52 29 68 43 23 11 35 87 14 76 53 59 77 4 89 48 13 2 15 49 72 99
Card 149: 38 74 24 93 50 21 19 65 95 5 | 93 82 57 95 67 11 9 55 5 74 46 2 96 19 21 92 56 14 38 33 77 58 32 43 37
Card 150: 8 99 26 38 47 48 96 20 82 92 | 80 46 13 97 66 22 40 36 85 73 63 32 1 70 49 60 90 88 43 2 48 5 76 34 50
Card 151: 41 69 32 12 5 72 3 29 2 79 | 28 41 11 64 69 71 3 87 45 40 5 15 50 95 90 53 19 55 26 98 82 12 6 77 14
Card 152: 96 20 94 19 7 68 24 56 88 97 | 54 70 63 84 26 73 35 24 39 99 6 79 44 20 64 12 38 87 1 43 46 42 11 60 8
Card 153: 60 9 99 62 93 22 16 11 34 28 | 57 43 38 98 82 89 20 58 71 40 79 53 86 1 69 4 27 19 36 85 83 33 59 90 96
Card 154: 45 75 27 11 76 24 1 4 21 99 | 96 51 54 55 78 69 24 31 77 18 92 17 89 86 3 11 19 15 88 64 49 47 68 36 14
Card 155: 97 56 99 89 82 6 17 15 52 29 | 23 26 85 70 13 47 72 1 51 64 90 44 53 45 42 77 88 32 74 25 58 68 37 21 79
Card 156: 28 78 54 72 36 25 84 47 87 30 | 75 49 44 5 83 48 16 17 82 33 60 15 12 94 41 66 23 51 43 39 6 55 34 77 32
Card 157: 44 74 36 93 15 96 25 12 19 40 | 84 44 54 96 80 48 59 79 78 55 42 27 11 69 76 19 93 2 35 83 77 43 40 85 99
Card 158: 74 73 99 41 17 45 92 80 21 85 | 85 51 97 91 69 81 74 73 88 80 28 14 6 95 99 92 50 29 17 5 77 89 76 21 41
Card 159: 7 2 83 33 51 95 96 18 75 52 | 52 96 21 27 47 98 51 83 29 77 75 53 2 64 7 33 57 82 50 14 95 34 79 44 18
Card 160: 46 54 7 84 37 42 60 9 47 10 | 84 34 9 85 24 29 80 8 88 10 1 46 43 59 47 76 81 26 68 60 30 42 7 56 37
Card 161: 18 88 61 65 90 29 1 20 22 25 | 25 84 28 2 45 61 39 71 35 32 16 18 65 1 29 23 49 5 22 83 78 24 20 88 90
Card 162: 78 93 50 17 75 29 69 31 65 85 | 31 18 45 12 28 85 65 69 81 15 32 64 22 40 33 23 50 17 29 97 7 37 63 93 78
Card 163: 66 47 30 99 34 45 60 82 72 43 | 73 98 29 36 35 54 49 61 17 1 52 95 81 56 31 27 15 96 24 20 32 33 65 55 82
Card 164: 45 23 93 75 49 1 3 12 36 67 | 77 79 15 82 12 93 49 23 45 31 8 62 66 75 32 48 6 30 78 67 64 3 36 1 94
Card 165: 75 62 57 30 69 52 35 84 17 32 | 9 17 46 33 69 29 35 34 84 55 57 83 56 70 10 7 30 75 27 99 52 62 32 47 77
Card 166: 2 79 15 96 51 77 38 98 36 74 | 1 54 12 73 39 75 87 24 49 74 43 53 56 16 34 99 26 30 50 40 86 94 35 66 65
Card 167: 41 77 3 17 78 56 92 33 87 52 | 98 37 44 68 43 53 76 13 74 59 49 71 66 90 54 82 46 5 95 16 15 62 96 58 25
Card 168: 23 61 30 69 41 58 21 49 97 16 | 26 74 24 40 58 30 20 38 34 87 72 46 15 77 50 2 57 1 75 81 84 70 23 69 11
Card 169: 9 17 32 25 1 65 22 46 8 99 | 84 19 66 27 28 15 34 90 42 2 43 87 78 6 81 46 24 13 63 3 48 20 86 70 73
Card 170: 32 86 96 77 56 40 66 46 89 2 | 87 1 50 91 59 96 29 70 92 93 33 10 20 45 12 60 63 21 14 54 36 80 56 19 75
Card 171: 70 36 51 80 5 24 40 87 72 30 | 30 52 71 81 84 97 22 95 72 53 46 55 44 51 24 19 98 63 73 56 6 80 90 59 77
Card 172: 97 74 79 52 85 56 40 2 30 54 | 66 40 49 94 16 47 57 85 24 45 53 63 51 74 69 38 46 90 50 91 75 97 28 31 62
Card 173: 72 49 45 75 23 20 90 50 48 94 | 38 34 28 33 91 65 87 19 37 30 9 18 64 14 53 70 49 39 90 79 88 51 12 57 48
Card 174: 48 39 78 41 80 49 43 87 61 22 | 68 39 65 84 67 79 10 29 78 81 36 73 62 6 44 72 27 1 19 66 93 4 16 46 50
Card 175: 96 91 10 82 43 98 30 65 3 83 | 49 77 40 78 70 23 52 34 16 2 64 72 69 61 15 33 79 32 39 74 7 92 24 46 36
Card 176: 29 21 33 68 60 35 11 99 82 61 | 81 13 97 71 32 40 23 36 59 53 66 54 62 47 89 93 44 33 87 55 26 18 31 64 67
Card 177: 97 45 62 55 76 34 66 54 14 68 | 94 42 28 30 32 58 33 48 46 80 7 15 92 98 95 81 90 17 71 24 26 16 39 13 93
Card 178: 99 45 47 89 4 17 36 14 86 96 | 40 33 56 89 17 93 94 45 75 4 5 99 37 36 47 98 70 44 86 65 14 73 96 8 22
Card 179: 30 63 6 25 4 85 41 17 83 11 | 44 92 25 71 95 61 50 11 27 4 6 30 9 85 63 67 87 13 17 83 18 53 41 10 52
Card 180: 70 89 32 66 15 30 76 8 42 36 | 36 16 89 13 45 42 31 77 76 30 71 27 8 95 98 32 35 14 66 70 26 85 72 33 15
Card 181: 74 81 12 28 22 21 14 54 3 5 | 32 59 69 67 15 35 42 12 34 11 5 71 79 2 73 14 55 87 56 65 28 17 30 99 9
Card 182: 79 41 90 19 21 15 66 2 55 59 | 2 93 34 65 67 63 72 79 15 5 59 14 55 95 70 83 90 21 68 66 19 7 41 92 3
Card 183: 6 8 44 39 74 78 10 2 61 59 | 6 61 75 44 62 92 77 29 8 39 78 20 73 18 68 4 60 66 74 59 49 3 2 5 10
Card 184: 68 32 10 82 15 95 56 89 28 42 | 25 56 28 73 6 11 43 37 95 2 70 18 19 90 45 89 26 42 10 32 7 98 82 15 68
Card 185: 66 74 17 3 71 21 51 28 14 48 | 80 34 77 37 45 74 84 20 44 14 31 66 51 48 17 86 12 43 71 56 35 13 4 93 27
Card 186: 79 33 25 28 86 18 57 7 76 40 | 26 16 59 99 31 62 77 21 23 70 7 25 35 49 81 18 72 45 65 58 86 51 88 80 76
Card 187: 1 2 73 43 13 64 69 21 3 46 | 65 37 53 92 82 13 12 28 3 58 71 46 64 1 56 19 98 21 73 43 60 2 57 29 69
Card 188: 85 77 35 15 22 67 79 18 66 99 | 42 46 93 19 28 4 89 32 95 75 11 57 6 40 39 30 22 43 41 24 8 78 58 69 48
Card 189: 13 48 6 61 55 38 75 96 76 42 | 42 32 61 81 55 13 26 41 9 77 70 68 56 35 58 89 20 75 6 72 91 38 90 93 96
Card 190: 19 78 50 35 32 14 45 70 16 77 | 32 92 71 86 75 77 9 8 19 68 16 6 67 33 15 78 43 57 55 85 69 35 73 50 14
Card 191: 71 62 7 72 70 4 89 95 94 59 | 36 94 40 6 71 59 45 28 90 12 89 95 16 85 83 88 4 48 72 62 76 7 13 70 11
Card 192: 52 15 61 83 18 67 29 75 34 36 | 8 65 43 93 67 53 88 83 52 75 81 37 49 29 6 39 76 91 92 36 19 98 50 41 33
Card 193: 78 94 7 48 25 16 91 38 13 5 | 22 77 76 84 17 40 41 36 93 56 50 35 64 59 23 95 89 49 61 30 42 85 37 92 44
Card 194: 66 92 16 37 42 62 86 76 98 36 | 46 60 34 31 79 40 11 19 16 74 75 36 71 43 13 2 90 76 50 29 85 55 54 10 35
Card 195: 66 23 45 62 30 95 38 5 97 39 | 96 65 37 89 95 73 69 75 25 45 51 22 62 7 33 13 94 78 34 35 36 56 55 70 24
Card 196: 15 45 70 41 97 27 80 64 25 28 | 88 93 65 83 36 16 35 92 6 71 82 24 17 64 66 33 37 69 78 60 56 49 91 19 61
Card 197: 46 35 2 60 75 99 6 42 47 21 | 91 93 70 8 46 6 35 50 55 72 71 64 47 82 39 94 25 67 41 60 86 83 87 90 7
Card 198: 71 62 73 96 79 63 41 17 56 68 | 95 77 16 70 29 68 66 63 98 80 20 18 31 34 52 5 42 22 49 6 25 38 51 75 50
Card 199: 70 84 46 98 44 45 16 36 29 99 | 78 21 92 77 32 91 22 90 76 74 42 55 51 69 94 64 26 65 41 97 10 34 15 35 9
Card 200: 96 60 87 21 80 48 44 69 3 49 | 2 65 66 94 55 62 72 52 86 15 30 71 45 82 49 47 81 33 14 42 4 1 51 75 34
Card 201: 55 53 33 19 1 70 17 61 2 72 | 62 6 30 86 45 71 46 33 15 90 73 37 18 12 68 87 89 49 8 60 52 22 51 25 74
Card 202: 5 47 96 53 54 14 77 29 12 3 | 26 71 91 86 59 70 78 8 83 92 35 64 9 79 84 34 36 93 90 40 16 44 51 6 4

197
2023/inputs/day05.txt Normal file
View file

@ -0,0 +1,197 @@
seeds: 3127166940 109160474 3265086325 86449584 1581539098 205205726 3646327835 184743451 2671979893 17148151 305618297 40401857 2462071712 203075200 358806266 131147346 1802185716 538526744 635790399 705979250
seed-to-soil map:
931304316 1786548802 232453384
3500539319 2322065235 6421609
496396007 147739714 266329192
3169724489 768672891 39526579
3689153715 1361862036 346985
1936948751 3328259881 542896984
3209251068 3154345676 173914205
1163757700 2814318523 24125066
2484210664 1362209021 231487475
3991904247 2133571422 188493813
1187882766 4045525873 83717994
861951350 3084992710 69352966
2715698139 2838443589 43714032
3830303258 4025104215 20421658
768672891 1268583577 93278459
4180398060 2019002186 114569236
3689500700 1593696496 10659519
1271600760 808199470 460384107
166497091 526585653 102729094
3700160219 3894961176 130143039
2966889400 2882157621 202835089
147739714 414068906 18757377
3850724916 4133608796 141179331
2759412171 2328486844 183672918
2479845735 4129243867 4364929
3480360150 4274788127 20179169
402636637 432826283 93759370
3383165273 2717123646 97194877
3506960928 1604356015 182192787
269226185 629314747 133410452
2943085089 3871156865 23804311
1731984867 2512159762 204963884
soil-to-fertilizer map:
3368312743 826425240 243745914
1045038113 3682756471 174490549
3931158487 1530223690 363808809
1219528662 2460222182 131099318
3020480207 1894032499 63879875
121779694 248970341 36319877
1993634034 2662348686 86667553
3612058657 1323325837 196530127
1531175223 2604354699 57993987
158099571 121779694 127190647
1867147432 3317666386 126486602
2080301587 2768963716 548702670
1402482267 1070171154 21180243
2959841028 4051272297 60639179
834756529 1966243663 128160296
3911211010 2749016239 19947477
962916825 3857247020 82121288
2629004257 3444152988 238603483
826425240 1957912374 8331289
1350627980 3939368308 51854287
1589169210 4214533702 80433594
2867607740 2094403959 92233288
1669602804 1125781209 197544628
3084360082 1519855964 10367726
1483712212 1091351397 34429812
3094727808 2186637247 273584935
1423662510 3991222595 60049702
3808588784 4111911476 102622226
1518142024 2591321500 13033199
fertilizer-to-water map:
206818393 1973789958 18543481
2641351404 1992333439 41420268
58400970 2574944960 107826712
3710426911 4065366707 42793360
4217161704 4274048011 20919285
1926695368 705931711 328031436
1449580741 1210970895 50549447
907984567 1421828853 15115545
769748018 1108192216 102778679
451427938 35457870 38201654
2254726804 2033892789 137829519
923239194 1513967644 270588891
3753220271 4108160067 165887944
499804857 310274559 109862756
3061525238 3535532059 426476055
1193828085 73659524 196024324
872526697 0 35457870
1766386857 1261520342 160308511
4057593930 3283950856 159567774
1389852409 646203379 59728332
3919108215 3962008114 103358593
1577153434 1784556535 189233423
4022466808 3443518630 35127122
489629592 1098016951 10175265
923100112 2033753707 139082
2392556323 2390203683 158894869
1500130188 1436944398 77023246
2577297600 1033963147 64053804
609667613 2171722308 160080405
3488001293 3061525238 222425618
2551451192 2549098552 25846408
4238080989 3478645752 56886307
166227682 269683848 40590711
0 2331802713 58400970
225361874 420137315 226066064
water-to-light map:
1833244152 0 764535859
212138399 2132863085 224047237
445686952 1600446740 163005122
3322180377 2914685303 488586806
2739726430 3712513349 582453947
3946546331 3589340640 8839399
1441711040 799272484 245821386
1038755613 1763451862 6623730
608692074 1587251997 13194743
701103180 2356910322 39153476
1687532426 1045093870 145711726
2597780011 764535859 34736625
740256656 1490869662 54307168
0 1920724686 212138399
2632516636 1545176830 9229765
668257778 1554406595 32845402
3955385730 2739726430 39179725
4180633986 3598180039 114333310
3810767183 2778906155 135779148
1291061946 1770075592 150649094
436185636 1481368346 9501316
1045379343 2396063798 245682603
794563824 1237176557 244191789
621886817 1190805596 46370961
3994565455 3403272109 186068531
light-to-temperature map:
432141642 1268486741 19474646
3617581823 3276436954 357008111
3505110084 3786131308 49942802
0 1287961387 432141642
3096011130 1808659179 409098954
1347993824 2675880000 161612192
3019335150 3199760974 76675980
3555052886 3137232037 62528937
2778092757 1720103029 88556150
451616288 2217758133 458121867
1509606016 0 1268486741
909738155 3836074110 138515824
1048253979 2837492192 299739845
2866648907 3633445065 152686243
temperature-to-humidity map:
646729740 1519504972 559297346
1894539176 2990410634 44298872
232257988 972432123 414471752
2277879451 278205785 108711195
1775790220 132298732 118748956
3371687162 2663455233 326955401
1612056920 272509895 5695890
1208383109 3703499740 147415518
4070380190 4053129082 69974785
4155541210 3305585510 139426086
81956384 386916980 150301604
3987543096 896459472 75972651
2148980475 1386903875 128898976
1617752810 3445011596 154599732
4063515747 2078802318 6864443
2392568787 3599611328 101532389
2386590646 4123103867 5978141
2494101176 2122546980 187027686
2681128862 2085666761 36880219
4140354975 2648268998 15186235
1772352542 3051742077 3437678
1355798627 3850915258 202213824
3720104770 3055179755 250405755
3032992830 2309574666 338694332
1206027086 3701143717 2356023
1938838048 537218584 44257139
1558012451 81956384 50342348
3970510525 3034709506 17032571
1608354799 1515802851 3702121
1983095187 4129082008 165885288
3698642563 251047688 21462207
2718009081 581475723 314983749
humidity-to-location map:
971626884 4275486551 19480745
1218249913 2090555906 502249162
2914848039 2902831882 224865747
3341591733 2819947352 82884530
991107629 2592805068 227142284
3424476263 606585628 95279547
4279176998 2064757318 10971709
3139713786 4068790015 201877947
606585628 701865175 365041256
3534582689 3291885426 744594309
1916997152 1066906431 997850887
1752809355 3127697629 164187797
1720499075 4036479735 32310280
4290148707 4270667962 4818589
3519755810 2075729027 14826879

View file

@ -0,0 +1,7 @@
two1nine
eightwothree
abcone2threexyz
xtwone3four
4nineeightseven2
zoneight234
7pqrstsixteen

View file

@ -0,0 +1,5 @@
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green

10
2023/inputs/example03.txt Normal file
View file

@ -0,0 +1,10 @@
467..114..
...*......
..35..633.
......#...
617*......
.....+.58.
..592.....
......755.
...$.*....
.664.598..

View file

@ -0,0 +1,6 @@
Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1
Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11

33
2023/inputs/example05.txt Normal file
View file

@ -0,0 +1,33 @@
seeds: 79 14 55 13
seed-to-soil map:
50 98 2
52 50 48
soil-to-fertilizer map:
0 15 37
37 52 2
39 0 15
fertilizer-to-water map:
49 53 8
0 11 42
42 0 7
57 7 4
water-to-light map:
88 18 7
18 25 70
light-to-temperature map:
45 77 23
81 45 19
68 64 13
temperature-to-humidity map:
0 69 1
1 0 69
humidity-to-location map:
60 56 37
56 93 4