Tasks 01-14
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split('\n')
|
||||
data = [int(x) for x in data]
|
||||
|
||||
print(sum([1 for x,y in zip(data, data[1:]) if y-x>0]))
|
||||
d2 = [a+b+c for a,b,c in zip(data, data[1:], data[2:])]
|
||||
print(sum([1 for x,y in zip(d2, d2[1:]) if y-x>0]))
|
||||
@@ -0,0 +1,30 @@
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split('\n')
|
||||
data = [x.split() for x in data]
|
||||
|
||||
d = 0
|
||||
x = 0
|
||||
for com, i in data:
|
||||
i = int(i)
|
||||
if com=='forward':
|
||||
x += i
|
||||
elif com=='up':
|
||||
d -= i
|
||||
elif com=='down':
|
||||
d += i
|
||||
print(d*x)
|
||||
|
||||
d = 0
|
||||
x = 0
|
||||
aim = 0
|
||||
for com, i in data:
|
||||
i = int(i)
|
||||
if com=='forward':
|
||||
x += i
|
||||
d += aim*i
|
||||
elif com=='up':
|
||||
aim -= i
|
||||
elif com=='down':
|
||||
aim += i
|
||||
print(d*x)
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split('\n')
|
||||
|
||||
l = len(data)
|
||||
gamma = [round(sum(map(int, x))/l) for x in zip(*data)]
|
||||
epsilon = [0 if x==1 else 1 for x in gamma]
|
||||
_gamma = int(''.join(map(str, gamma)), base=2)
|
||||
_epsilon = int(''.join(map(str, epsilon)), base=2)
|
||||
print(_gamma*_epsilon)
|
||||
|
||||
def f(g):
|
||||
i = 0
|
||||
x = data
|
||||
while len(x)>1:
|
||||
a = list(zip(*x))[i]
|
||||
b = a.count("1") >= a.count("0")
|
||||
x = [z for z in x if z[i]==g(b)]
|
||||
i += 1
|
||||
return int(x[0], base=2)
|
||||
|
||||
|
||||
o2 = f(lambda b: "1" if b else "0")
|
||||
co2 = f(lambda b: "0" if b else "1")
|
||||
|
||||
print(o2*co2)
|
||||
@@ -0,0 +1,66 @@
|
||||
from itertools import compress, chain
|
||||
from collections import defaultdict
|
||||
data = '''
|
||||
7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1
|
||||
|
||||
22 13 17 11 0
|
||||
8 2 23 4 24
|
||||
21 9 14 16 7
|
||||
6 10 3 18 5
|
||||
1 12 20 15 19
|
||||
|
||||
3 15 0 2 22
|
||||
9 18 13 17 5
|
||||
19 8 7 25 23
|
||||
20 11 10 24 4
|
||||
14 21 16 12 6
|
||||
|
||||
14 21 17 24 4
|
||||
10 16 15 9 19
|
||||
18 8 23 26 20
|
||||
22 11 13 6 5
|
||||
2 0 12 3 7
|
||||
'''.strip().split('\n', 1)
|
||||
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split('\n', 1)
|
||||
numbers = list(map(int, data[0].split(',')))
|
||||
tables = data[1].strip().split('\n\n')
|
||||
tables = [[list(map(int, x.split())) for x in t.split('\n')] for t in tables]
|
||||
|
||||
table_hits = [0]*len(tables)
|
||||
index = defaultdict(list)
|
||||
for i, table in enumerate(tables):
|
||||
for y, row in enumerate(table):
|
||||
for x, number in enumerate(row):
|
||||
index[number].append((i,x,y))
|
||||
|
||||
def find_sum(winner):
|
||||
t = tables[winner]
|
||||
w = bin(table_hits[winner])[2:][::-1]
|
||||
w = w + '0'*(25-len(w))
|
||||
w = list(map(lambda x: 1 if x=='0' else 0, w))
|
||||
return sum(compress(chain(*t), w))
|
||||
|
||||
row = 0b11111
|
||||
column = 0b0000100001000010000100001
|
||||
def win(i):
|
||||
for shift in range(5):
|
||||
if table_hits[i] & (row << shift*5)== row << shift*5:
|
||||
return True
|
||||
for shift in range(5):
|
||||
if table_hits[i] & (column << shift)== column << shift:
|
||||
return True
|
||||
return False
|
||||
|
||||
winners = []
|
||||
w = set()
|
||||
for number in numbers:
|
||||
for i, x, y in index[number]:
|
||||
table_hits[i] |= 1 << (y*5+x)
|
||||
if win(i) and i not in w:
|
||||
winners.append(number*find_sum(i))
|
||||
w.add(i)
|
||||
|
||||
print(winners[0])
|
||||
print(winners[-1])
|
||||
@@ -0,0 +1,601 @@
|
||||
63,23,2,65,55,94,38,20,22,39,5,98,9,60,80,45,99,68,12,3,6,34,64,10,70,69,95,96,83,81,32,30,42,73,52,48,92,28,37,35,54,7,50,21,74,36,91,97,13,71,86,53,46,58,76,77,14,88,78,1,33,51,89,26,27,31,82,44,61,62,75,66,11,93,49,43,85,0,87,40,24,29,15,59,16,67,19,72,57,41,8,79,56,4,18,17,84,90,47,25
|
||||
|
||||
25 29 78 57 69
|
||||
47 51 7 21 82
|
||||
61 81 99 53 30
|
||||
50 80 41 94 46
|
||||
9 37 48 71 91
|
||||
|
||||
26 10 29 27 90
|
||||
21 65 44 5 1
|
||||
42 51 35 11 98
|
||||
72 23 41 95 48
|
||||
40 97 99 92 2
|
||||
|
||||
20 70 21 58 5
|
||||
63 29 16 71 45
|
||||
43 7 26 0 62
|
||||
24 75 9 87 55
|
||||
88 10 11 47 4
|
||||
|
||||
5 31 99 96 16
|
||||
61 37 91 92 23
|
||||
46 8 36 9 42
|
||||
3 32 49 64 48
|
||||
15 2 47 53 55
|
||||
|
||||
28 40 96 38 9
|
||||
33 11 65 76 13
|
||||
24 35 20 3 99
|
||||
95 78 51 74 4
|
||||
80 14 44 98 58
|
||||
|
||||
24 55 8 59 65
|
||||
96 11 15 12 99
|
||||
21 75 35 85 34
|
||||
20 53 72 50 70
|
||||
61 48 74 41 36
|
||||
|
||||
61 32 13 42 90
|
||||
81 22 66 75 51
|
||||
46 1 41 9 34
|
||||
86 50 48 64 74
|
||||
72 85 97 11 71
|
||||
|
||||
16 32 41 37 61
|
||||
14 31 29 6 79
|
||||
28 97 11 15 9
|
||||
13 72 3 85 64
|
||||
81 95 20 77 69
|
||||
|
||||
42 76 14 78 35
|
||||
49 89 7 81 90
|
||||
13 18 32 24 9
|
||||
10 98 12 2 65
|
||||
82 21 67 70 84
|
||||
|
||||
89 38 21 83 5
|
||||
7 87 37 14 98
|
||||
55 81 13 56 39
|
||||
42 19 51 36 30
|
||||
76 15 57 94 20
|
||||
|
||||
29 18 49 10 67
|
||||
91 93 37 45 34
|
||||
60 8 56 86 32
|
||||
95 89 71 51 59
|
||||
87 3 27 44 41
|
||||
|
||||
9 71 95 12 42
|
||||
83 90 98 79 49
|
||||
72 1 53 80 33
|
||||
29 82 65 4 25
|
||||
92 5 76 54 66
|
||||
|
||||
72 85 4 39 29
|
||||
86 0 95 30 21
|
||||
11 51 2 99 38
|
||||
58 52 25 59 77
|
||||
69 74 37 87 32
|
||||
|
||||
99 16 9 63 55
|
||||
79 50 48 96 92
|
||||
47 35 15 93 76
|
||||
19 70 25 49 38
|
||||
80 60 43 69 81
|
||||
|
||||
50 19 10 7 83
|
||||
79 52 14 51 55
|
||||
68 65 54 21 62
|
||||
71 25 34 70 92
|
||||
44 26 61 4 46
|
||||
|
||||
75 26 15 76 61
|
||||
42 0 51 29 81
|
||||
82 57 16 91 4
|
||||
12 19 30 10 24
|
||||
78 58 55 74 53
|
||||
|
||||
36 80 46 9 85
|
||||
34 17 43 96 57
|
||||
37 6 33 88 28
|
||||
59 48 18 22 79
|
||||
55 52 20 2 61
|
||||
|
||||
3 99 46 7 31
|
||||
61 43 17 78 4
|
||||
59 45 47 52 10
|
||||
55 95 33 9 35
|
||||
13 8 89 73 12
|
||||
|
||||
19 58 46 56 62
|
||||
11 72 82 0 12
|
||||
92 9 70 18 65
|
||||
35 61 79 87 36
|
||||
1 27 22 8 74
|
||||
|
||||
60 92 94 2 84
|
||||
73 69 72 29 37
|
||||
50 74 56 58 6
|
||||
51 80 86 33 4
|
||||
32 24 20 7 78
|
||||
|
||||
47 25 76 89 61
|
||||
86 77 71 43 22
|
||||
42 18 70 24 98
|
||||
31 68 62 79 9
|
||||
17 10 78 16 84
|
||||
|
||||
90 41 71 1 58
|
||||
88 91 86 4 34
|
||||
48 31 3 74 21
|
||||
85 5 37 36 28
|
||||
18 46 17 49 69
|
||||
|
||||
41 55 52 58 44
|
||||
4 75 81 12 48
|
||||
72 93 8 86 10
|
||||
66 29 94 85 69
|
||||
74 36 50 9 19
|
||||
|
||||
80 76 36 21 57
|
||||
58 8 27 18 86
|
||||
79 5 48 82 64
|
||||
0 93 30 1 4
|
||||
78 40 52 50 62
|
||||
|
||||
58 60 77 25 22
|
||||
93 97 49 2 41
|
||||
59 38 95 36 44
|
||||
30 79 69 54 86
|
||||
23 4 80 85 27
|
||||
|
||||
27 67 68 46 41
|
||||
93 4 96 49 23
|
||||
11 54 80 88 75
|
||||
69 34 44 12 37
|
||||
39 78 66 5 43
|
||||
|
||||
20 32 71 99 19
|
||||
42 96 58 47 65
|
||||
72 31 70 59 26
|
||||
46 17 38 11 23
|
||||
18 85 52 77 67
|
||||
|
||||
38 98 42 31 40
|
||||
76 2 77 82 34
|
||||
92 73 55 93 19
|
||||
25 58 90 10 68
|
||||
6 56 85 43 95
|
||||
|
||||
16 71 12 76 86
|
||||
78 26 15 34 45
|
||||
17 22 20 8 1
|
||||
51 52 24 90 79
|
||||
53 40 14 69 21
|
||||
|
||||
77 75 68 32 69
|
||||
61 9 74 58 44
|
||||
21 39 94 84 46
|
||||
14 29 93 31 63
|
||||
12 72 2 98 40
|
||||
|
||||
68 32 38 58 24
|
||||
61 11 76 55 39
|
||||
6 21 31 93 99
|
||||
64 75 15 62 56
|
||||
34 12 14 73 77
|
||||
|
||||
50 24 71 22 67
|
||||
18 80 89 51 90
|
||||
54 64 31 19 44
|
||||
61 88 85 25 98
|
||||
73 69 37 72 39
|
||||
|
||||
79 2 62 91 97
|
||||
36 41 72 28 42
|
||||
26 89 98 86 10
|
||||
35 16 85 63 64
|
||||
43 51 39 60 55
|
||||
|
||||
47 86 44 56 74
|
||||
0 96 39 84 54
|
||||
38 45 68 88 21
|
||||
11 33 17 52 97
|
||||
83 58 42 65 81
|
||||
|
||||
16 1 22 8 24
|
||||
7 3 12 30 59
|
||||
79 91 53 69 68
|
||||
20 88 14 81 51
|
||||
89 71 54 56 52
|
||||
|
||||
25 12 32 53 3
|
||||
63 29 92 70 97
|
||||
54 6 21 4 86
|
||||
76 39 84 49 96
|
||||
68 0 15 72 28
|
||||
|
||||
56 20 35 71 23
|
||||
51 21 96 42 64
|
||||
83 1 8 94 55
|
||||
44 73 76 24 67
|
||||
81 70 6 61 46
|
||||
|
||||
85 37 30 39 97
|
||||
36 14 71 59 15
|
||||
46 26 27 25 9
|
||||
6 56 79 52 67
|
||||
72 54 58 74 76
|
||||
|
||||
90 24 86 43 1
|
||||
18 70 89 20 9
|
||||
44 4 52 65 66
|
||||
56 17 96 78 67
|
||||
53 80 32 42 63
|
||||
|
||||
35 50 95 53 16
|
||||
75 1 85 31 81
|
||||
99 22 27 84 38
|
||||
98 8 19 25 92
|
||||
56 59 62 48 54
|
||||
|
||||
8 22 67 70 91
|
||||
73 51 96 49 37
|
||||
31 4 99 52 27
|
||||
13 50 39 1 85
|
||||
19 9 40 55 47
|
||||
|
||||
59 35 52 60 91
|
||||
75 86 13 39 21
|
||||
33 99 11 64 50
|
||||
37 58 71 22 54
|
||||
6 72 88 3 85
|
||||
|
||||
85 63 5 48 20
|
||||
96 55 53 35 60
|
||||
0 17 26 22 13
|
||||
25 45 62 4 41
|
||||
78 40 46 95 33
|
||||
|
||||
23 53 82 22 74
|
||||
5 45 15 44 65
|
||||
62 84 68 83 88
|
||||
52 46 61 77 59
|
||||
56 60 71 2 43
|
||||
|
||||
27 77 28 8 84
|
||||
33 0 22 62 40
|
||||
3 44 19 53 91
|
||||
60 83 75 48 94
|
||||
29 93 23 82 65
|
||||
|
||||
77 34 72 62 4
|
||||
9 8 76 52 60
|
||||
37 54 98 20 22
|
||||
11 13 86 48 57
|
||||
10 63 41 23 61
|
||||
|
||||
58 57 47 55 3
|
||||
38 11 39 15 9
|
||||
5 65 92 98 41
|
||||
72 45 6 16 83
|
||||
74 40 99 50 30
|
||||
|
||||
72 46 35 9 53
|
||||
70 67 74 93 55
|
||||
24 4 30 38 47
|
||||
29 96 51 17 71
|
||||
90 5 69 54 61
|
||||
|
||||
90 59 93 99 34
|
||||
85 39 52 16 20
|
||||
32 66 75 35 17
|
||||
38 33 84 40 89
|
||||
91 77 26 86 54
|
||||
|
||||
2 87 96 34 28
|
||||
98 74 56 17 37
|
||||
10 62 71 89 95
|
||||
6 90 5 99 92
|
||||
39 73 55 18 8
|
||||
|
||||
87 44 72 2 45
|
||||
82 78 32 64 37
|
||||
46 75 95 67 80
|
||||
8 60 57 97 56
|
||||
22 43 92 26 96
|
||||
|
||||
98 1 21 17 14
|
||||
85 6 33 69 16
|
||||
53 82 0 41 73
|
||||
46 72 2 35 23
|
||||
89 94 80 76 42
|
||||
|
||||
27 94 98 5 95
|
||||
64 19 77 15 92
|
||||
11 52 41 50 51
|
||||
4 57 99 21 29
|
||||
20 35 78 34 87
|
||||
|
||||
52 83 84 21 59
|
||||
30 64 85 90 91
|
||||
24 32 57 0 81
|
||||
17 47 1 25 27
|
||||
10 51 65 79 34
|
||||
|
||||
83 9 94 14 85
|
||||
65 51 28 32 48
|
||||
81 71 8 12 31
|
||||
38 50 92 57 47
|
||||
34 49 56 73 27
|
||||
|
||||
54 8 72 38 29
|
||||
34 78 69 16 30
|
||||
82 24 9 0 13
|
||||
90 41 60 28 12
|
||||
71 22 70 80 66
|
||||
|
||||
71 50 24 86 21
|
||||
14 92 45 30 95
|
||||
57 60 0 88 91
|
||||
87 97 6 7 26
|
||||
61 98 25 5 84
|
||||
|
||||
1 63 45 36 67
|
||||
27 16 54 72 41
|
||||
32 74 53 9 35
|
||||
95 29 90 19 26
|
||||
82 97 11 42 28
|
||||
|
||||
2 93 86 28 43
|
||||
90 12 21 56 76
|
||||
98 30 25 9 75
|
||||
11 20 45 95 50
|
||||
22 31 39 49 6
|
||||
|
||||
2 53 74 9 64
|
||||
24 8 85 86 59
|
||||
41 38 57 63 32
|
||||
88 93 14 11 55
|
||||
69 31 25 66 52
|
||||
|
||||
10 60 42 16 95
|
||||
8 14 81 84 5
|
||||
98 32 68 12 6
|
||||
83 66 90 69 46
|
||||
54 40 59 73 91
|
||||
|
||||
24 66 62 30 83
|
||||
72 80 54 25 17
|
||||
3 77 60 68 36
|
||||
26 22 8 74 95
|
||||
63 39 4 53 87
|
||||
|
||||
49 96 48 2 78
|
||||
14 21 38 98 45
|
||||
30 34 54 16 92
|
||||
0 89 70 68 57
|
||||
7 74 10 86 97
|
||||
|
||||
25 91 46 84 66
|
||||
44 50 40 10 67
|
||||
62 77 5 6 43
|
||||
63 29 79 51 53
|
||||
70 69 61 80 54
|
||||
|
||||
19 11 24 9 93
|
||||
21 53 81 2 61
|
||||
69 83 33 23 68
|
||||
73 22 77 71 52
|
||||
92 76 94 86 1
|
||||
|
||||
51 31 27 28 95
|
||||
16 50 36 13 57
|
||||
1 11 79 45 90
|
||||
41 77 3 78 42
|
||||
56 74 85 44 52
|
||||
|
||||
58 0 63 88 30
|
||||
35 18 48 49 80
|
||||
36 11 46 13 76
|
||||
37 19 9 93 87
|
||||
68 15 17 8 82
|
||||
|
||||
96 20 7 81 11
|
||||
42 17 14 44 36
|
||||
99 98 68 58 56
|
||||
15 57 80 3 67
|
||||
61 66 38 83 59
|
||||
|
||||
3 60 25 55 17
|
||||
42 45 66 24 14
|
||||
13 16 41 11 88
|
||||
89 96 97 35 1
|
||||
83 5 52 69 28
|
||||
|
||||
99 11 53 82 3
|
||||
88 74 42 38 13
|
||||
94 80 27 92 34
|
||||
29 56 8 14 76
|
||||
85 65 66 79 59
|
||||
|
||||
80 82 43 87 70
|
||||
85 22 53 10 1
|
||||
30 78 39 26 77
|
||||
7 92 20 21 93
|
||||
75 36 61 13 90
|
||||
|
||||
53 41 29 77 58
|
||||
98 83 86 14 94
|
||||
10 99 24 17 32
|
||||
3 87 42 19 61
|
||||
57 89 36 13 9
|
||||
|
||||
30 45 53 99 41
|
||||
80 85 25 18 10
|
||||
47 98 64 78 11
|
||||
58 94 9 91 87
|
||||
35 97 43 0 32
|
||||
|
||||
70 1 80 98 85
|
||||
73 69 90 63 20
|
||||
53 77 39 49 64
|
||||
28 7 78 84 57
|
||||
56 86 23 88 97
|
||||
|
||||
18 53 73 49 40
|
||||
36 95 46 42 94
|
||||
97 19 23 72 84
|
||||
21 47 91 8 17
|
||||
99 90 68 30 25
|
||||
|
||||
26 9 84 35 59
|
||||
44 47 66 8 48
|
||||
0 82 68 54 58
|
||||
65 7 28 62 61
|
||||
55 37 21 72 86
|
||||
|
||||
47 55 12 75 61
|
||||
99 74 9 10 67
|
||||
2 57 25 20 46
|
||||
83 97 43 49 59
|
||||
3 79 94 69 70
|
||||
|
||||
12 2 41 69 24
|
||||
93 95 43 52 66
|
||||
71 92 57 14 58
|
||||
30 25 81 62 79
|
||||
7 96 70 22 42
|
||||
|
||||
92 83 35 65 8
|
||||
63 71 43 33 19
|
||||
95 24 51 85 41
|
||||
66 13 68 12 20
|
||||
7 1 22 40 75
|
||||
|
||||
30 56 10 85 72
|
||||
83 52 51 80 14
|
||||
32 29 67 41 74
|
||||
96 62 16 15 98
|
||||
73 45 99 48 79
|
||||
|
||||
24 9 5 38 52
|
||||
32 57 87 30 90
|
||||
7 54 39 43 14
|
||||
31 76 96 65 0
|
||||
51 99 20 61 92
|
||||
|
||||
19 37 39 15 86
|
||||
53 32 42 57 70
|
||||
9 26 84 93 10
|
||||
33 25 61 21 0
|
||||
34 60 30 99 7
|
||||
|
||||
62 50 33 29 54
|
||||
92 12 81 0 87
|
||||
60 2 27 7 9
|
||||
28 18 31 35 59
|
||||
20 63 38 72 14
|
||||
|
||||
96 89 34 56 63
|
||||
61 8 25 90 78
|
||||
94 26 10 47 84
|
||||
1 32 7 83 73
|
||||
16 65 69 23 97
|
||||
|
||||
44 59 87 16 18
|
||||
31 50 27 9 38
|
||||
49 10 56 69 35
|
||||
13 24 91 46 70
|
||||
22 37 6 43 25
|
||||
|
||||
87 79 59 26 35
|
||||
81 73 36 66 51
|
||||
97 11 43 17 7
|
||||
24 94 71 91 48
|
||||
12 77 93 55 34
|
||||
|
||||
91 93 56 55 58
|
||||
24 11 82 35 86
|
||||
68 81 50 34 23
|
||||
59 73 1 8 37
|
||||
18 83 80 53 85
|
||||
|
||||
40 30 7 72 22
|
||||
68 94 95 89 42
|
||||
91 84 11 49 36
|
||||
64 29 26 73 76
|
||||
37 1 51 9 25
|
||||
|
||||
32 48 47 36 88
|
||||
54 91 59 72 50
|
||||
31 83 19 20 0
|
||||
24 67 61 46 99
|
||||
52 53 11 16 69
|
||||
|
||||
86 52 95 73 6
|
||||
56 45 8 13 80
|
||||
28 77 19 59 48
|
||||
99 33 47 10 85
|
||||
35 81 27 46 76
|
||||
|
||||
41 45 1 12 49
|
||||
32 16 21 85 27
|
||||
50 80 66 64 10
|
||||
76 11 9 59 52
|
||||
71 37 34 2 43
|
||||
|
||||
43 19 88 81 12
|
||||
4 48 9 91 31
|
||||
1 46 10 6 56
|
||||
72 41 30 36 94
|
||||
61 83 86 28 79
|
||||
|
||||
39 10 40 25 52
|
||||
29 60 38 18 31
|
||||
65 46 11 0 94
|
||||
68 12 42 4 84
|
||||
55 20 86 77 26
|
||||
|
||||
12 65 79 59 43
|
||||
93 6 68 1 29
|
||||
17 48 45 26 80
|
||||
37 22 5 66 47
|
||||
71 11 41 18 64
|
||||
|
||||
5 45 54 82 64
|
||||
90 89 22 17 71
|
||||
81 60 65 32 34
|
||||
41 86 35 30 48
|
||||
67 47 23 51 6
|
||||
|
||||
19 65 11 58 49
|
||||
97 68 56 10 39
|
||||
87 29 43 40 83
|
||||
9 41 26 79 77
|
||||
63 72 93 4 51
|
||||
|
||||
82 50 90 45 4
|
||||
53 96 93 30 19
|
||||
8 95 73 74 98
|
||||
35 20 32 7 36
|
||||
56 52 59 26 16
|
||||
|
||||
94 67 97 34 75
|
||||
23 80 68 24 47
|
||||
56 8 21 66 36
|
||||
69 5 3 95 17
|
||||
29 38 44 42 28
|
||||
|
||||
84 35 72 8 38
|
||||
94 30 48 24 27
|
||||
81 61 18 87 90
|
||||
65 17 85 22 45
|
||||
32 15 74 52 68
|
||||
|
||||
9 69 63 68 36
|
||||
44 31 35 12 39
|
||||
57 83 6 49 23
|
||||
64 0 10 85 81
|
||||
82 40 34 91 24
|
||||
@@ -0,0 +1,35 @@
|
||||
from collections import defaultdict
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split('\n')
|
||||
|
||||
data = [tuple(tuple(map(int, point.split(','))) for point in line.split(' -> ')) for line in data]
|
||||
data1 = list(filter(lambda x: x[0][0]==x[1][0] or x[0][1]==x[1][1], data))
|
||||
|
||||
d = defaultdict(int)
|
||||
for (x1,y1), (x2,y2) in data1:
|
||||
if x1==x2:
|
||||
for y in range(min(y1,y2), max(y1,y2)+1):
|
||||
d[(x1, y)] += 1
|
||||
else:
|
||||
for x in range(min(x1,x2), max(x1,x2)+1):
|
||||
d[(x, y1)] += 1
|
||||
k = sum(1 for (x, y), c in d.items() if c>1)
|
||||
print(k)
|
||||
|
||||
d = defaultdict(int)
|
||||
for (x1,y1), (x2,y2) in data:
|
||||
if x1==x2:
|
||||
for y in range(min(y1,y2), max(y1,y2)+1):
|
||||
d[(x1, y)] += 1
|
||||
elif y1==y2:
|
||||
for x in range(min(x1,x2), max(x1,x2)+1):
|
||||
d[(x, y1)] += 1
|
||||
else:
|
||||
if x1>x2:
|
||||
x1,x2 = x2,x1
|
||||
y1,y2 = y2,y1
|
||||
y = 1 if y1<y2 else -1
|
||||
for x in range(x1, x2+1):
|
||||
d[(x, y1+(x-x1)*y)] += 1
|
||||
k = sum(1 for (x, y), c in d.items() if c>1)
|
||||
print(k)
|
||||
@@ -0,0 +1,500 @@
|
||||
955,125 -> 151,929
|
||||
830,251 -> 526,555
|
||||
182,185 -> 13,16
|
||||
73,871 -> 73,951
|
||||
169,968 -> 626,968
|
||||
471,180 -> 471,746
|
||||
725,478 -> 791,544
|
||||
577,413 -> 577,753
|
||||
636,937 -> 181,937
|
||||
46,601 -> 714,601
|
||||
400,905 -> 400,972
|
||||
911,773 -> 883,801
|
||||
818,684 -> 818,705
|
||||
71,846 -> 151,846
|
||||
737,489 -> 626,378
|
||||
634,800 -> 634,482
|
||||
401,209 -> 401,469
|
||||
676,688 -> 384,396
|
||||
247,819 -> 680,819
|
||||
944,343 -> 196,343
|
||||
57,689 -> 586,160
|
||||
13,54 -> 918,959
|
||||
736,490 -> 520,706
|
||||
331,20 -> 208,20
|
||||
639,865 -> 322,548
|
||||
914,227 -> 914,980
|
||||
163,411 -> 163,825
|
||||
344,58 -> 344,199
|
||||
274,153 -> 989,153
|
||||
15,14 -> 983,982
|
||||
784,269 -> 332,721
|
||||
206,921 -> 206,331
|
||||
219,944 -> 260,903
|
||||
81,92 -> 976,987
|
||||
325,633 -> 502,810
|
||||
887,850 -> 887,83
|
||||
203,756 -> 203,627
|
||||
447,33 -> 748,33
|
||||
87,245 -> 87,932
|
||||
817,324 -> 881,324
|
||||
922,227 -> 167,982
|
||||
626,867 -> 155,396
|
||||
743,689 -> 743,779
|
||||
516,433 -> 133,433
|
||||
444,407 -> 614,407
|
||||
42,140 -> 475,140
|
||||
311,422 -> 311,514
|
||||
526,59 -> 643,59
|
||||
709,69 -> 455,69
|
||||
136,46 -> 159,46
|
||||
300,113 -> 763,576
|
||||
979,977 -> 18,16
|
||||
380,490 -> 380,556
|
||||
134,726 -> 134,287
|
||||
317,717 -> 383,717
|
||||
726,712 -> 211,197
|
||||
703,952 -> 165,952
|
||||
806,575 -> 122,575
|
||||
589,691 -> 589,716
|
||||
965,337 -> 879,337
|
||||
938,23 -> 57,904
|
||||
186,141 -> 385,141
|
||||
864,744 -> 959,744
|
||||
276,957 -> 636,957
|
||||
98,846 -> 98,349
|
||||
559,261 -> 559,63
|
||||
564,808 -> 564,429
|
||||
491,362 -> 491,746
|
||||
513,250 -> 897,250
|
||||
939,442 -> 249,442
|
||||
366,678 -> 916,678
|
||||
325,79 -> 604,358
|
||||
513,890 -> 133,890
|
||||
360,88 -> 427,88
|
||||
777,266 -> 522,266
|
||||
371,859 -> 776,859
|
||||
111,600 -> 111,980
|
||||
366,471 -> 646,191
|
||||
849,407 -> 933,407
|
||||
867,681 -> 570,384
|
||||
467,707 -> 797,377
|
||||
624,304 -> 852,76
|
||||
341,149 -> 575,383
|
||||
34,499 -> 736,499
|
||||
13,312 -> 927,312
|
||||
897,188 -> 897,639
|
||||
372,665 -> 372,501
|
||||
651,22 -> 173,22
|
||||
450,394 -> 450,798
|
||||
140,584 -> 140,960
|
||||
223,919 -> 980,919
|
||||
893,645 -> 429,181
|
||||
284,488 -> 207,411
|
||||
823,868 -> 622,667
|
||||
426,881 -> 868,881
|
||||
49,63 -> 974,988
|
||||
921,475 -> 81,475
|
||||
166,653 -> 166,913
|
||||
40,191 -> 767,918
|
||||
911,499 -> 911,363
|
||||
966,960 -> 84,78
|
||||
193,522 -> 193,379
|
||||
208,255 -> 673,255
|
||||
684,837 -> 684,192
|
||||
921,758 -> 921,841
|
||||
756,244 -> 756,277
|
||||
866,533 -> 866,186
|
||||
97,747 -> 798,46
|
||||
415,287 -> 415,759
|
||||
570,824 -> 902,824
|
||||
341,792 -> 44,792
|
||||
849,787 -> 161,99
|
||||
501,621 -> 565,685
|
||||
409,62 -> 215,256
|
||||
591,780 -> 855,780
|
||||
901,67 -> 901,223
|
||||
662,212 -> 578,212
|
||||
196,924 -> 196,94
|
||||
404,492 -> 300,492
|
||||
10,984 -> 984,10
|
||||
722,739 -> 722,775
|
||||
805,637 -> 805,299
|
||||
848,722 -> 707,722
|
||||
444,597 -> 158,597
|
||||
402,57 -> 509,57
|
||||
490,353 -> 273,353
|
||||
868,208 -> 421,655
|
||||
102,930 -> 903,129
|
||||
557,877 -> 557,529
|
||||
27,69 -> 843,885
|
||||
549,695 -> 468,695
|
||||
767,701 -> 104,701
|
||||
415,141 -> 415,809
|
||||
205,767 -> 205,427
|
||||
264,723 -> 952,35
|
||||
357,279 -> 390,279
|
||||
529,436 -> 250,715
|
||||
390,472 -> 889,971
|
||||
983,11 -> 21,973
|
||||
732,307 -> 112,927
|
||||
412,801 -> 252,801
|
||||
738,338 -> 738,94
|
||||
80,135 -> 952,135
|
||||
623,269 -> 870,516
|
||||
216,507 -> 32,507
|
||||
927,10 -> 927,946
|
||||
389,955 -> 389,399
|
||||
683,825 -> 629,879
|
||||
163,450 -> 208,495
|
||||
303,217 -> 831,217
|
||||
827,632 -> 827,736
|
||||
629,880 -> 629,533
|
||||
368,67 -> 111,67
|
||||
625,268 -> 397,268
|
||||
737,335 -> 299,773
|
||||
666,767 -> 494,939
|
||||
144,238 -> 757,238
|
||||
511,211 -> 270,211
|
||||
312,901 -> 548,665
|
||||
550,763 -> 47,763
|
||||
942,403 -> 464,881
|
||||
969,18 -> 15,972
|
||||
963,831 -> 187,55
|
||||
933,831 -> 933,408
|
||||
733,658 -> 876,658
|
||||
599,392 -> 980,11
|
||||
44,406 -> 900,406
|
||||
645,169 -> 577,237
|
||||
731,41 -> 731,265
|
||||
574,397 -> 574,249
|
||||
316,279 -> 316,657
|
||||
826,116 -> 18,924
|
||||
611,892 -> 824,892
|
||||
607,168 -> 607,85
|
||||
371,914 -> 113,656
|
||||
145,201 -> 458,514
|
||||
813,952 -> 189,328
|
||||
633,15 -> 239,409
|
||||
832,278 -> 202,908
|
||||
234,698 -> 509,423
|
||||
635,27 -> 635,18
|
||||
701,147 -> 701,577
|
||||
777,722 -> 777,835
|
||||
519,298 -> 497,298
|
||||
80,71 -> 875,866
|
||||
872,350 -> 58,350
|
||||
128,711 -> 131,711
|
||||
591,709 -> 362,480
|
||||
129,647 -> 54,572
|
||||
980,731 -> 282,33
|
||||
245,813 -> 682,813
|
||||
867,238 -> 463,642
|
||||
511,888 -> 511,391
|
||||
727,38 -> 289,38
|
||||
311,888 -> 311,801
|
||||
261,915 -> 926,250
|
||||
855,835 -> 145,125
|
||||
78,688 -> 826,688
|
||||
989,40 -> 66,963
|
||||
956,30 -> 101,885
|
||||
665,826 -> 406,826
|
||||
97,981 -> 985,93
|
||||
971,847 -> 357,233
|
||||
725,531 -> 725,556
|
||||
63,570 -> 403,570
|
||||
41,430 -> 577,430
|
||||
40,54 -> 796,810
|
||||
417,232 -> 417,392
|
||||
214,800 -> 936,78
|
||||
542,955 -> 146,955
|
||||
76,263 -> 471,263
|
||||
784,507 -> 784,858
|
||||
443,222 -> 443,881
|
||||
317,157 -> 317,956
|
||||
245,599 -> 166,520
|
||||
307,649 -> 307,313
|
||||
399,782 -> 538,782
|
||||
483,731 -> 294,731
|
||||
950,903 -> 281,234
|
||||
283,522 -> 866,522
|
||||
472,505 -> 278,505
|
||||
435,693 -> 845,283
|
||||
881,751 -> 294,164
|
||||
40,840 -> 179,979
|
||||
481,398 -> 481,661
|
||||
509,687 -> 509,875
|
||||
976,866 -> 684,574
|
||||
133,130 -> 158,130
|
||||
268,81 -> 641,454
|
||||
613,754 -> 393,974
|
||||
980,984 -> 14,18
|
||||
55,909 -> 952,12
|
||||
865,132 -> 986,132
|
||||
147,773 -> 147,414
|
||||
135,62 -> 934,861
|
||||
298,293 -> 298,978
|
||||
583,990 -> 424,990
|
||||
760,189 -> 516,189
|
||||
286,292 -> 286,648
|
||||
60,352 -> 60,830
|
||||
335,241 -> 420,156
|
||||
360,571 -> 360,354
|
||||
361,233 -> 714,233
|
||||
21,78 -> 922,979
|
||||
35,748 -> 449,748
|
||||
859,26 -> 73,812
|
||||
277,827 -> 277,708
|
||||
160,633 -> 515,278
|
||||
673,422 -> 568,317
|
||||
620,235 -> 620,645
|
||||
538,698 -> 156,698
|
||||
47,543 -> 439,543
|
||||
65,975 -> 945,95
|
||||
259,644 -> 242,644
|
||||
777,216 -> 794,216
|
||||
100,191 -> 835,926
|
||||
450,581 -> 450,433
|
||||
475,784 -> 475,118
|
||||
840,584 -> 580,844
|
||||
191,283 -> 191,58
|
||||
170,650 -> 130,690
|
||||
478,269 -> 478,781
|
||||
44,981 -> 839,186
|
||||
270,744 -> 270,902
|
||||
941,960 -> 102,121
|
||||
303,690 -> 303,467
|
||||
150,18 -> 150,601
|
||||
470,523 -> 240,523
|
||||
166,575 -> 621,575
|
||||
197,765 -> 691,271
|
||||
164,798 -> 369,798
|
||||
544,319 -> 677,319
|
||||
31,212 -> 777,958
|
||||
894,774 -> 894,752
|
||||
567,225 -> 67,225
|
||||
884,201 -> 184,201
|
||||
675,961 -> 187,473
|
||||
203,78 -> 203,690
|
||||
52,945 -> 957,40
|
||||
987,214 -> 987,762
|
||||
792,975 -> 792,673
|
||||
358,782 -> 598,542
|
||||
105,716 -> 777,44
|
||||
736,643 -> 245,643
|
||||
507,940 -> 275,940
|
||||
231,936 -> 231,209
|
||||
204,545 -> 186,563
|
||||
881,426 -> 881,460
|
||||
315,867 -> 96,867
|
||||
793,324 -> 642,324
|
||||
276,709 -> 540,973
|
||||
834,401 -> 834,701
|
||||
616,874 -> 616,606
|
||||
892,596 -> 892,570
|
||||
255,919 -> 850,324
|
||||
764,62 -> 82,744
|
||||
682,374 -> 978,374
|
||||
218,353 -> 218,787
|
||||
140,289 -> 720,869
|
||||
811,20 -> 811,203
|
||||
165,291 -> 284,291
|
||||
137,382 -> 137,767
|
||||
15,14 -> 989,988
|
||||
947,682 -> 499,234
|
||||
751,356 -> 862,356
|
||||
398,362 -> 398,494
|
||||
260,32 -> 780,552
|
||||
839,484 -> 584,484
|
||||
198,865 -> 198,327
|
||||
600,461 -> 418,279
|
||||
346,439 -> 495,588
|
||||
854,661 -> 775,661
|
||||
119,575 -> 119,415
|
||||
349,849 -> 349,421
|
||||
13,401 -> 21,393
|
||||
169,511 -> 169,61
|
||||
848,678 -> 213,678
|
||||
42,25 -> 729,712
|
||||
903,740 -> 816,740
|
||||
398,862 -> 398,116
|
||||
443,624 -> 101,624
|
||||
135,158 -> 223,158
|
||||
440,742 -> 388,742
|
||||
903,963 -> 49,109
|
||||
131,198 -> 208,198
|
||||
147,289 -> 147,663
|
||||
684,307 -> 684,299
|
||||
453,864 -> 453,404
|
||||
361,982 -> 978,365
|
||||
840,64 -> 563,64
|
||||
377,301 -> 613,301
|
||||
32,366 -> 609,366
|
||||
867,240 -> 867,188
|
||||
798,714 -> 956,714
|
||||
617,792 -> 617,354
|
||||
309,357 -> 309,797
|
||||
824,888 -> 824,598
|
||||
947,958 -> 305,316
|
||||
505,934 -> 461,890
|
||||
45,685 -> 597,133
|
||||
875,170 -> 66,979
|
||||
239,959 -> 985,213
|
||||
769,423 -> 769,39
|
||||
62,750 -> 764,48
|
||||
749,798 -> 749,307
|
||||
110,646 -> 241,777
|
||||
93,804 -> 867,30
|
||||
361,663 -> 856,663
|
||||
494,788 -> 187,788
|
||||
696,379 -> 696,823
|
||||
664,935 -> 146,417
|
||||
895,804 -> 895,144
|
||||
200,240 -> 805,240
|
||||
347,794 -> 487,934
|
||||
978,920 -> 978,408
|
||||
730,480 -> 390,140
|
||||
933,810 -> 933,513
|
||||
429,864 -> 134,864
|
||||
476,339 -> 183,632
|
||||
677,878 -> 677,417
|
||||
980,261 -> 757,261
|
||||
452,569 -> 452,280
|
||||
535,223 -> 867,223
|
||||
159,466 -> 983,466
|
||||
332,155 -> 334,153
|
||||
887,478 -> 887,179
|
||||
173,245 -> 773,845
|
||||
441,274 -> 632,465
|
||||
987,389 -> 987,440
|
||||
830,806 -> 747,806
|
||||
103,82 -> 796,775
|
||||
945,14 -> 129,14
|
||||
110,873 -> 520,873
|
||||
393,391 -> 291,391
|
||||
598,125 -> 129,594
|
||||
378,546 -> 175,546
|
||||
302,558 -> 617,243
|
||||
943,752 -> 244,53
|
||||
972,943 -> 41,12
|
||||
16,164 -> 124,164
|
||||
270,815 -> 27,815
|
||||
146,729 -> 146,317
|
||||
153,255 -> 166,255
|
||||
511,505 -> 270,505
|
||||
404,568 -> 388,568
|
||||
485,751 -> 485,785
|
||||
752,686 -> 160,686
|
||||
523,676 -> 385,676
|
||||
854,437 -> 618,437
|
||||
578,212 -> 875,509
|
||||
800,115 -> 815,130
|
||||
439,554 -> 868,983
|
||||
225,803 -> 244,822
|
||||
494,735 -> 655,574
|
||||
932,191 -> 932,41
|
||||
842,325 -> 630,325
|
||||
201,288 -> 518,288
|
||||
255,332 -> 53,332
|
||||
385,959 -> 329,903
|
||||
757,447 -> 276,447
|
||||
884,957 -> 884,449
|
||||
686,354 -> 195,354
|
||||
384,677 -> 951,110
|
||||
173,77 -> 164,77
|
||||
767,840 -> 248,321
|
||||
81,180 -> 81,371
|
||||
517,838 -> 517,461
|
||||
950,559 -> 221,559
|
||||
934,826 -> 329,221
|
||||
311,329 -> 311,146
|
||||
140,459 -> 280,459
|
||||
200,195 -> 24,19
|
||||
517,270 -> 865,618
|
||||
43,54 -> 939,950
|
||||
853,339 -> 853,388
|
||||
297,795 -> 240,795
|
||||
358,890 -> 275,973
|
||||
26,70 -> 931,975
|
||||
781,141 -> 318,604
|
||||
17,794 -> 204,794
|
||||
87,534 -> 763,534
|
||||
590,968 -> 590,613
|
||||
358,836 -> 758,836
|
||||
598,635 -> 764,635
|
||||
313,670 -> 313,478
|
||||
832,330 -> 832,629
|
||||
973,36 -> 21,988
|
||||
131,814 -> 709,236
|
||||
261,163 -> 261,906
|
||||
720,48 -> 659,48
|
||||
988,152 -> 326,814
|
||||
937,761 -> 690,761
|
||||
988,784 -> 988,879
|
||||
807,445 -> 336,916
|
||||
933,978 -> 51,96
|
||||
305,966 -> 305,402
|
||||
184,687 -> 437,687
|
||||
256,172 -> 186,172
|
||||
508,162 -> 421,162
|
||||
689,52 -> 740,52
|
||||
545,807 -> 545,630
|
||||
676,924 -> 620,924
|
||||
976,68 -> 139,905
|
||||
322,96 -> 45,96
|
||||
663,407 -> 199,871
|
||||
562,636 -> 224,974
|
||||
172,439 -> 126,439
|
||||
740,628 -> 852,628
|
||||
252,28 -> 596,372
|
||||
129,850 -> 571,408
|
||||
75,446 -> 399,446
|
||||
67,460 -> 704,460
|
||||
932,531 -> 932,60
|
||||
520,229 -> 255,494
|
||||
462,756 -> 462,614
|
||||
158,117 -> 592,551
|
||||
203,722 -> 203,892
|
||||
93,822 -> 207,822
|
||||
634,172 -> 634,457
|
||||
272,365 -> 272,377
|
||||
989,23 -> 25,987
|
||||
739,776 -> 40,776
|
||||
843,708 -> 24,708
|
||||
665,10 -> 665,728
|
||||
271,858 -> 11,598
|
||||
947,642 -> 629,960
|
||||
230,760 -> 938,52
|
||||
291,552 -> 291,388
|
||||
689,400 -> 260,829
|
||||
610,194 -> 470,194
|
||||
628,824 -> 45,241
|
||||
935,940 -> 51,56
|
||||
90,871 -> 90,933
|
||||
973,934 -> 104,65
|
||||
435,245 -> 768,245
|
||||
43,666 -> 625,666
|
||||
770,563 -> 724,563
|
||||
363,816 -> 363,889
|
||||
25,725 -> 701,49
|
||||
784,846 -> 484,846
|
||||
989,293 -> 989,502
|
||||
572,135 -> 485,135
|
||||
683,807 -> 370,494
|
||||
982,182 -> 225,939
|
||||
838,522 -> 520,522
|
||||
253,942 -> 970,225
|
||||
442,963 -> 577,963
|
||||
867,193 -> 307,753
|
||||
269,204 -> 771,204
|
||||
941,925 -> 136,120
|
||||
329,488 -> 728,89
|
||||
37,424 -> 254,424
|
||||
179,864 -> 895,148
|
||||
359,473 -> 359,675
|
||||
976,933 -> 129,86
|
||||
220,101 -> 376,101
|
||||
988,667 -> 946,667
|
||||
667,22 -> 308,22
|
||||
831,782 -> 245,196
|
||||
759,813 -> 225,279
|
||||
@@ -0,0 +1,29 @@
|
||||
from collections import Counter
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split(',')
|
||||
data = list(map(int, data))
|
||||
|
||||
_data = data
|
||||
for _ in range(80):
|
||||
if _%80==0:
|
||||
print(_)
|
||||
new_data = []
|
||||
new_fish = []
|
||||
for x in _data:
|
||||
if x==0:
|
||||
new_fish.append(8)
|
||||
new_data.append(6)
|
||||
else:
|
||||
new_data.append(x-1)
|
||||
_data = new_data + new_fish
|
||||
|
||||
print(len(_data))
|
||||
|
||||
_data = [0]+[y for x, y in sorted(Counter(data).items(), key=lambda x: x[0])]+[0,0,0]
|
||||
for _ in range(256):
|
||||
x = _data[0]
|
||||
_data = _data[1:] + [_data[0]]
|
||||
_data[6] += x
|
||||
print(sum(_data))
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
1,2,1,1,1,1,1,1,2,1,3,1,1,1,1,3,1,1,1,5,1,1,1,4,5,1,1,1,3,4,1,1,1,1,1,1,1,5,1,4,1,1,1,1,1,1,1,5,1,3,1,3,1,1,1,5,1,1,1,1,1,5,4,1,2,4,4,1,1,1,1,1,5,1,1,1,1,1,5,4,3,1,1,1,1,1,1,1,5,1,3,1,4,1,1,3,1,1,1,1,1,1,2,1,4,1,3,1,1,1,1,1,5,1,1,1,2,1,1,1,1,2,1,1,1,1,4,1,3,1,1,1,1,1,1,1,1,5,1,1,4,1,1,1,1,1,3,1,3,3,1,1,1,2,1,1,1,1,1,1,1,1,1,5,1,1,1,1,5,1,1,1,1,2,1,1,1,4,1,1,1,2,3,1,1,1,1,1,1,1,1,2,1,1,1,2,3,1,2,1,1,5,4,1,1,2,1,1,1,3,1,4,1,1,1,1,3,1,2,5,1,1,1,5,1,1,1,1,1,4,1,1,4,1,1,1,2,2,2,2,4,3,1,1,3,1,1,1,1,1,1,2,2,1,1,4,2,1,4,1,1,1,1,1,5,1,1,4,2,1,1,2,5,4,2,1,1,1,1,4,2,3,5,2,1,5,1,3,1,1,5,1,1,4,5,1,1,1,1,4
|
||||
@@ -0,0 +1,8 @@
|
||||
with open("input") as f:
|
||||
data = list(map(int, f.read().strip().split(',')))
|
||||
|
||||
print(min(sum(abs(y-x) for y in data) for x in range(min(data), max(data)+1)))
|
||||
print(min(sum(abs(y-x)*(abs(y-x)+1)//2 for y in data) for x in range(min(data), max(data)+1)))
|
||||
|
||||
|
||||
|
||||
@@ -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,867,253,111,269,117,150,421,508,1073,136,247,10,1427,802,2,492,1302,228,2,48,113,0,741,34,107,559,514,283,372,78,423,405,1303,360,281,1850,367,892,1021,930,318,80,709,349,32,203,94,1359,456,783,62,34,1487,245,294,749,250,1441,8,1388,604,324,483,696,119,294,1478,529,189,454,785,703,13,1099,790,402,251,919,116,318,201,893,571,3,45,756,41,65,92,21,1903,219,32,191,1037,177,480,232,389,1342,1178,1320,955,1020,655,276,203,221,316,689,621,270,911,537,230,327,662,552,410,1608,385,7,26,227,71,1646,257,725,531,413,8,19,1029,182,1518,270,124,113,569,468,126,505,376,367,113,425,4,80,1883,433,1167,768,231,393,528,69,422,17,350,858,1028,659,972,108,542,602,1577,11,1481,127,466,415,567,1178,38,137,777,446,965,832,1347,642,716,176,264,487,32,425,354,104,230,756,310,711,228,580,520,677,781,45,926,1063,126,235,262,199,330,874,1570,221,107,803,810,1723,266,99,940,21,38,1680,44,32,17,907,403,413,628,968,138,12,24,483,114,658,206,24,61,561,882,532,1280,255,805,75,237,321,310,1022,545,1515,609,65,791,933,233,846,506,704,628,516,868,726,134,6,243,1048,227,259,1599,117,114,461,365,63,1559,62,98,884,11,426,915,192,901,4,1481,122,424,307,250,256,693,162,1217,834,516,644,898,396,1073,642,480,361,1434,607,23,818,515,6,288,443,324,4,1559,659,409,415,82,41,1233,657,93,1405,17,94,18,379,32,8,419,1511,766,234,818,916,775,4,1009,282,372,317,371,945,1314,261,485,529,1076,298,223,40,434,401,117,1030,153,2,19,27,41,544,477,1117,588,206,155,12,1197,1518,305,51,921,775,296,1187,57,517,2,36,145,92,67,68,559,771,1,69,250,612,94,1638,1327,501,434,114,6,1468,429,28,1163,207,576,50,1759,216,9,50,432,598,664,1087,409,828,1115,169,120,318,21,1245,314,338,47,469,231,236,892,671,373,991,1136,488,341,168,143,850,1135,42,449,666,814,16,232,505,122,1316,803,1093,977,79,5,936,512,217,942,1333,13,13,1861,2,267,74,1096,1058,107,461,78,418,861,547,25,1398,255,562,344,820,1171,1376,494,17,116,1333,256,20,1425,1668,79,604,1614,223,45,18,917,30,965,866,1331,91,141,1120,829,3,0,498,57,78,1579,467,185,1399,683,590,11,913,33,540,536,459,367,175,176,946,130,324,634,671,554,277,570,968,409,468,419,1249,1039,45,238,4,808,1022,10,151,1158,32,38,1054,969,90,70,1194,1582,512,876,289,1042,91,1872,305,996,349,17,517,968,1493,637,142,141,226,590,181,811,608,4,135,97,389,385,929,1143,1319,684,509,437,133,843,101,118,71,120,80,25,33,259,894,1050,1450,583,1665,372,128,586,282,1147,1160,1643,1488,339,445,268,1577,101,8,308,719,210,288,332,1034,47,1303,31,59,16,270,104,68,1107,736,420,108,367,461,791,279,863,645,2,999,453,682,21,764,244,435,1238,36,1193,37,346,35,70,114,78,67,1245,15,1002,83,450,353,50,396,1068,26,21,429,551,13,498,117,731,601,23,1218,271,26,958,852,139,331,92,560,218,1243,410,109,296,35,588,6,645,87,64,188,497,28,693,18,88,196,62,7,33,311,1102,187,829,664,630,331,304,1249,21,309,1238,64,155,38,134,291,77,90,32,765,332,87,257,755,93,181,174,118,584,98,825,292,428,187,731,813,784,1222,117,345,1380,31,1447,269,672,747,1112,147,32,690,1258,253,763,92,1427,503,4,40,289,41,733,240,884,201,136,594,560,3,1083,1282,686,918,667,1535,702,158,65,1055,100,481,457,1565,1067,641,289,18,1537,62,545,401,1238,528,713,1042,430,144,390,220,953,42,817,18,26,137,1870,999,557,234,586,1316,87,104,369,39,215,595,922,1194,187,1056,382,397,387,872,191,464,1841,883,162,119,38,916,2,676,1524,315,1217,63,382,328,591,372,138,883,733,910,635,1059,87,773,630,1179,169,947,401,20,820,119,575,1117,48,268,45,896,772,293,217,73,732,26,528,1121,382,813,419,424,221,107,145,264,526,589,482,51,1399,954,292,276,248,1276,218,1005,296,360,60,5,499,661,192,199,250,1001,496,281,361,664,248,1090,86,203,241,61,329,1551,182,790,787,408,442,603,681,522,478,1072,527,1094,104,1267,418,730,217,1198,859
|
||||
@@ -0,0 +1,34 @@
|
||||
from itertools import combinations
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split('\n')
|
||||
data = [[s.split() for s in d.split('|')] for d in data]
|
||||
|
||||
print(sum(sum(1 if len(y) in {2,3,4,7} else 0 for y in x) for _, x in data))
|
||||
|
||||
known = {
|
||||
2: 1,
|
||||
3: 7,
|
||||
4: 4,
|
||||
7: 8,
|
||||
}
|
||||
s = 0
|
||||
for digits, number in data:
|
||||
real = {}
|
||||
for digit in digits:
|
||||
if len(digit) in known:
|
||||
real[known[len(digit)]] = set(digit)
|
||||
for x in combinations(digits, 9):
|
||||
base = set('abcdefg')
|
||||
for d in x:
|
||||
base = base.intersection(set(d))
|
||||
if len(base)==1:
|
||||
f = next(iter(base))
|
||||
real[2] = [d for digit in digits if len(d := set(digit))==5 and f not in d][0]
|
||||
real[3] = [d for digit in digits if len(d := set(digit))==5 and len(real[2]-d)==1 and len(d-real[2])==1][0]
|
||||
real[5] = [d for digit in digits if len(d := set(digit))==5 and d!=real[2] and d!=real[3]][0]
|
||||
real[9] = [d for digit in digits if len(d := set(digit))==6 and d==real[3] | real[4]][0]
|
||||
real[0] = [d for digit in digits if len(d := set(digit))==6 and len(d - real[5])==2][0]
|
||||
real[6] = [d for digit in digits if len(d := set(digit))==6 and d!=real[0] and d!=real[9]][0]
|
||||
real = {frozenset(v): k for k, v in real.items()}
|
||||
s += int(''.join(str(real[frozenset(n)]) for n in number))
|
||||
print(s)
|
||||
@@ -0,0 +1,200 @@
|
||||
fgcae ebafc cabdef eg abecfg abgfed feg gafdc bceg ebgcadf | defagbc faecg cfdag gecb
|
||||
eagd cad fgadbc aefdcg dcebfg fcegd cbeaf ad dbgfeca defca | cfdeg gdcabf fcgde afgced
|
||||
gfdeca aeb eb fbdag eafdc adfbe cefdab bdaegcf efbc ecadgb | eb dbafe eab faecd
|
||||
facbdge efdg gcafd daegc caegb aecfdb ade ed gafbdc dgfeac | de abcdef faedcg dfgca
|
||||
dcaegbf bc dcgeab cbgad cebg cdfaeb fbadg acdge cefdga cdb | gdcfae gbec gdace cgadfe
|
||||
ceagfbd fbaeg fadge fbegad abgecf dafcg ed edab ged dfcbeg | gebfa de gbafec ed
|
||||
acedbf adfbg cgafedb geac cgb befcgd bcgaf bfgace cg bfeac | bcdfeg fecba cafgeb bgdfa
|
||||
egadc cea ac agbcedf cgab bgcade fbcaed eadfbg fegdc ebdag | fdecabg fcged cdbage efgdab
|
||||
cbfge gdc cdea efdag dc cdfeg gfbcad gcdeaf cdeagbf egfadb | dfcge egcfd fcdbag dc
|
||||
gaedb fbced gcdbef cge gc decgb dcbgfea cgfb cgdfea fbcade | fdegbac fecbd ecg degba
|
||||
geaf bcfedg agbcd bfeagd dgfbe cbdaef beacdfg abe agebd ea | fbecdg geaf gebfad adgbc
|
||||
bed afgebd adecf bafgedc dbca cfegb becdf fabdce bd gcfdea | gfdaeb ebfgad dbefc cbda
|
||||
gacfebd ag bedfca agbfde egfcab dfga degab fbade bag bdecg | dgaf abcfed agb bfecag
|
||||
afebg afdeg gcbe acebdf cfbage cafeb gab decgabf bg gcfdba | gb caebf abgef acfebd
|
||||
efdab fabdgce gcbfa eg gacbfe beg ecag beafg dfabcg bgecfd | bge fgdcbe gcfdba ebdaf
|
||||
aecbd bdagef gd bfega aefgcbd gfde gfdcab dbg edgba febagc | dg dagfbc dgfe eabdgf
|
||||
gdfba egfacbd gdcefa baf gcba fdagcb dgfac ab dcfeba ebgdf | dcfag bfa gafcd cbag
|
||||
afbe bdagc cedfb defcab ebfdgac gfedbc cbfad af adgcfe adf | dafbc dfbac fdcegb gadcb
|
||||
fcgedb ca fdcage cagdbef ceab acedfb fdbce cafdb cda afgbd | ac dcafb efgdac ebcfda
|
||||
fbad gbcda dcefgb cfeadg dgbcaf bcafdeg ad gcabe adc dfbcg | gbcdef bcfdg cgbfd bfadgc
|
||||
afcgeb bedag bdecafg agb bedfga fdagce bg bgfd dfgea cdabe | badge cagdfe efdag afegbd
|
||||
gfed dcaef ge bafdce daceg acebfg cefadg egc ecdabfg gacdb | bcgad bcegaf agecd degcafb
|
||||
deacb adcge ab acb fbdce faedbgc fgadec gabd deabgc ecbfag | dfbec ab cbagfe bcfgae
|
||||
gcabfde ecf cbdeg bacgf fedg ecfgb gfedcb fcaedb cebdag fe | dbcegf bcgdfe gfde defg
|
||||
daefb bfg gedafb fabge dbafec cfega bdga cgbdfe gb gbacedf | aecfg bcedaf begdcf dgba
|
||||
bagce bf bdacfeg efbg fcb cefab gbfadc cafebg ecdfa bacdge | fegb cegba bagce efbg
|
||||
becag cfeg cefgbad fbace gfeacb acdegb bef ef adbcf fdabge | ef bdfac cbegad gbeac
|
||||
egb afcbe fbaeg eabgfdc gcab gb gfdea fgbecd bcdafe gafbec | fcdgeb edcgbfa gbe fgeba
|
||||
dga caebd ecdag cegfd abdfce dafbge ecbgda bcdgefa ga agbc | afdbec ecfdab gdaec gad
|
||||
fc gbdefc cfe ebdaf fcbeda gbafde edacg bfcdgae dacef cabf | decgfba cdbefg cf ecdabf
|
||||
febgd dafgbc caed cgd ceadgf fbecga dcgfe aegfc gbedfca cd | dgfeb fgced dcafebg agdfce
|
||||
ecdafgb bgade bgd fabd gbaef bd egadbf ceadg cfbgea dgbfec | edagc bdage bfda dbgae
|
||||
cgeba aefgcd dfceagb dc ced facbed cdfb dbaec adfeb fgedba | fbdea bgcae efbda fcdeag
|
||||
caegbf dcfga afcedgb afgdcb fcedag ab edbcg dbfa gdcab abg | bag cbdag agb ab
|
||||
gadfecb befc fgdbea cf fedagc fac bcgfa agbfe adgcb feagcb | gbcda cgbad bcgfa cf
|
||||
dae aefcb dgabec dacfg afebdc ebfd afecgb aedcf fbcagde ed | ecabfgd bedf bcadef egdacfb
|
||||
abcf fcega fdgce fegbda eafdcgb ac gabecd gbfae beagfc eca | edbgca edbfga cae gface
|
||||
bgedcf afcdbg ag gcbaef fcedgab afgdb cfgbd befda acdg agf | fdbga ceadbfg egfbac fag
|
||||
bad edafc bdeg abcgde ecafgbd gfadcb bgaec db edcba geafcb | cdafe fdcabg cdfageb dbge
|
||||
geb bgcf agfcde gb befag gfbcae defab gabdec eacfg gabecfd | afbedgc gceabf abgef egacf
|
||||
fdeac acg cfegda cbeadf fegdbca ag acefg adge bfdgca gbcfe | gecdaf efgca cgbafd cfgeb
|
||||
begdf bdfgc ebcf adfcg cdegbf dgeafb cbg cb bfeagdc gbdcea | acgedb fagdbe bgfde dfgac
|
||||
afcgdb aedc bedgf egafcd afdge gecaf fcgebda gda da ceabfg | gedbf gacfe adg agdef
|
||||
bdeafg acgebdf dgcfa fa cafe dgfbc gaf edagfc cgabde agedc | fadbge bdgfcea dgcefa cgeda
|
||||
gacfbde defag cbgef gbca efadcb afcbeg cgbdfe ba eba gefab | fegab abe ebfcgd fbgae
|
||||
gfbdec fbcade cabdegf ebdg bfd dcfgb cadgf gebcf db fcabge | eacdgfb bdge ebdg ecafdb
|
||||
egcfba fdcae fcdaeb gcfdae fabd ba cdeab fcdbaeg eba decbg | cabed facbed cbade dfcea
|
||||
agdfe acfdeg fcdbeg dgf gdaec df cadf ceagbfd abgfe gbdaec | bgcdef abfge gbefcd df
|
||||
dgebf afgdb bfa fcbade af dcafgb agcf gcbda dabgecf gadecb | dbcga abcdge fadgbce eagcbd
|
||||
dbcga bea egacdf dageb be efbd abgfce gadfe fcbegad aebfdg | eba be bdage bedga
|
||||
gcbd egbdafc fgc fbgedc gc aedbfg cefgb fedbg cfaegd efabc | bface egfbc bgdacfe gc
|
||||
fdgae dc ced gbcd gbcefd decfba becfg ecfabg cgfde gbcadfe | edbcfg cd cafgbe cdegbf
|
||||
geadcf efg gadef fg fecad acbgfe dagecbf dcgf gadbe afbdce | edafcg bgcfade gfdc abedg
|
||||
edcba ecgdb aedbcf aebf dabfc fdacge badgfc ae ead gfcbade | gcebdaf degbc ebfadc efdcba
|
||||
caedbg dbgec dcbf ecgdbf cgdef dgf bgaedcf egacf afebgd fd | cdfbeg ecfbgda gcbfed cbgedf
|
||||
bdag acdeb ecgdb egbcfa fcdbega gb dbecag cbdafe ebg gdcef | bedgc abdfcge efagcb cdgef
|
||||
bfade bfdga dfbgec cagbfd dfgacbe gba gacf ag gdcbf abgedc | cfag abdcge ebafd abefd
|
||||
agcdef bcfda bdgca aebdfcg eagdc gb dbg gbea cedagb bfgdec | dfabgec eafdgc acdge gdecab
|
||||
ebacdfg cgbfad egdbc bdgfa daef bae gabed febadg ae gacbef | fagdb daebgf fgdab bea
|
||||
dcgbf cbedf degc bgc fcgdbea fbadg cfdgbe gc efacgb fdbace | edfcb cfeabg cg edbacf
|
||||
bcdagfe dfacb cbfdge bgcdf fdgeac acd agbd acbef da dcgfba | cbgdf dgab ad gbdcaf
|
||||
edgfbca gbe be ceba bdaecg gefcd dbagc egbadf dcegb dfgabc | gcfde gfceabd gfbcad eagfdb
|
||||
dfcbg fcdga efgb gecbfd gecbda dfbgaec bedfc dgb bfadce bg | dbcgf bfge dacgf dfgcbe
|
||||
cga ebdgaf bfdag cbgfe bfadgc gbfeadc ac cagfb cdba cgadef | bfdag agedcf aegcbfd gcfab
|
||||
gcead gfdbec cbdge gabfce eb dfgcba ecfdgab befd dgcbf ebg | cdgae fbdegc bcdge gcdfb
|
||||
da ebgfda fcdeagb acgbfe gedba dbegc agdecf dae bafeg bfda | gdafec fegba edfbga aed
|
||||
fbagec gdfba bcg gebcfd cbafg bcdfgea ebac cefag faedcg bc | gfbac baegcfd fabegc dgeacbf
|
||||
dfbeag fabdg fdbe abdeg eb dcega gcefba cfdbag dgcfbae geb | cgbafd bdef dcage eb
|
||||
abdcfe gba dagf cagbefd fdbea bfega ag dafbge dcbeag gfceb | afbcde ecgfb dfbega bdgeca
|
||||
dg dge gdbc cfdae bcgae cbdage abgfde cfedagb cdgae eacgbf | eabgc bgeac bcdg cagbe
|
||||
bfd dgaeb gcabde fd bfgce dgfa dbefg gadbfce dbafge fabcde | edfcba efbcg df bdf
|
||||
gcbfd agbecd fedc edcbfg fdb eadfbg bcfag fd gedcb gbacdef | fgbac bdagfec gfbdaec aegbdc
|
||||
cgbdfe ce acedg adcfeg bcfegad fcea ceg abdeg afbdcg fcgda | ecg aefdcg dacge ec
|
||||
egbdfca efacb agcdbe cbaed bdafgc dfaecg debg bd bda agced | geadbc efbca gabfdc bd
|
||||
edcfb bfgecd ecabfd eca abcd fgeab fedcag abfedgc ac bfeca | bgfae eca cdgfeb bfaec
|
||||
cadef cebdga ebd bacdfe dagfec dbfa fcebg ecbgfad db fdecb | befcd acgdeb abdf dbfa
|
||||
gbfecda bfd cdagb fbdacg fgdbec gbaf cbadf aefdc eadcgb bf | adcgb dfbca agbf dafcb
|
||||
abedg acbgf fd gaefcb cagbdef cdaf dcbfeg bdagf dgcbfa bfd | gbadcef df fadgb gabcdf
|
||||
fbgadc dbcfg dcega cgdfe cfedbg caefgb ef gef gfaebcd fedb | fcedg febd gbcdfa cdgfab
|
||||
bg adgb fcaedbg cgfda fcbae bcg dfacge fgcdba decgfb bcagf | cgafb dbfcage bdgcfe dbga
|
||||
ed afbdg acefb aecbfg cfdabeg gedfcb fcdabe ecda def ebdfa | gbafd gedfcb dfegcb dfgba
|
||||
gcdfae efgdb abdfcg fde gdabf dbcegfa fedgab efab ef ebdcg | eafb gbfda gacedf cbdge
|
||||
edagfc gfaecbd bgced cbegfd cb gefdc badgfc bdc efbc adegb | dgbec cegafd dcbgef dgecb
|
||||
gedcab beg eg cafgb fbegc gdfe bdgfec gabcedf bdafce bcdfe | gcefb afcbed ge gdfe
|
||||
fdbagc cdgefab edacf ceba ea cfbaed ecfdg abfegd adfbc eda | ea beadfc abcgdef ecdgf
|
||||
fbc gfbacd fecda cbdfa dbgf dceabg gbcdfea efbgac cdabg bf | gbdf agbced gaedbc gfdb
|
||||
aegcb bfgecd fbegad fcagdbe dfgce fcbd gdeacf fb bgf bgfce | bgafedc gcdaef dgfcbe eadgcf
|
||||
def dbce agdfeb ed fdgbcea dgcfb aegfc dfgbac gecfd cdfgbe | cdfegb ed cdgfaeb ebdc
|
||||
ecbfad afdb eagbfc caebgdf edfcb dgfec cgdbae bd bcafe bdc | bfacegd fbdcae dbc bgfdcea
|
||||
dfgba eg cfbead gde bfedgc dceab cabfdge gdbae aecg aedgcb | egd adebg gde debcfa
|
||||
cadfb egfb afgbc adbegc ecgadf ecagb fga ecfgab bgacfde fg | afcbg cgfba gf dacbge
|
||||
cegbf dec efcdg facdge dfae dcbafge ed adgfc fdbagc cgaebd | dce gbcfe afcdgbe dcgabf
|
||||
cfabe fa eabgfc cgaf fba gfbce dcfbge edbgcfa efbadg acebd | cfebga bfa fedcagb abfce
|
||||
acdfb dbagf afcebgd beag afgedb gfdea gbd fgdcbe gb cdeagf | dafge gafed gfacde gb
|
||||
gdfeac dfgce ebfadcg edagc dacf baegdc fd gdf egcfb dabgef | degfbac cfdeg daebgf cdeagb
|
||||
fcgabe ebcd ecfdg dabcgf gfecabd cfd ebcfg dc bcfegd adefg | agedf cd bcefg dc
|
||||
cbaeg bcfea fb feb gfaceb gdfbec dagbec gfab deacf bgcaedf | acbfge bf afgb efb
|
||||
egdba cadgfbe efadbg cg begc bfgdca caegd abcegd dcg acdfe | fbegcad bceg gcd cdgebaf
|
||||
agbcd dafcgb cfdg ceadb fdgeba eafbcg gfdab gbc bgdcafe cg | gfadcbe fbagd decba gc
|
||||
gfbec adgc dge egdcfa abgfde abgdfce dg eacfdb fdaec gdfce | fecgd gd fgcbe acdef
|
||||
fdbceg bfedc af fegcad cbdag daf efab dabcef fbeadgc cbfad | fcabd cbfad gcfdbe gadbc
|
||||
ebgac fabdeg bedca cg aegdcfb geacbf ceg efgba facg fbedcg | gecdfb aebfg fagc ceg
|
||||
eagb dcgeb ba abd cbeagd cdgafb fecbdga fgedcb dacfe dacbe | bdfeacg cadgbf bgedfc fcdae
|
||||
dbac cfgae cbfgde ba bga gcfbad dcfebga gcdbf feagbd cgbaf | cgafb fagbdc dcfbg afgebd
|
||||
adbgfe fgb egdafc cbafd dfegbc edgafbc egfcd cegb gfcdb gb | bg fdacge efcadg egdfba
|
||||
agfbe cgaefdb gbdf edagb afg cdgafe gfedab fg egcdba fabec | fcbdega fag agf agf
|
||||
cae edabfc cdfega ca cfba gadeb fdecb ecagfbd cbgdef acdeb | facdeb fgecad bfadce efcgbad
|
||||
facb dbfec dceabf efgcd cb aecfbgd dgfbae eafdb ebdagc bcd | bfedc cdegab cbdfe adefb
|
||||
fecbga badgc dga bfgadec dg geacb cgedba dfebag gcde fcabd | decg gda baceg gd
|
||||
gecbd gcbdfea cbfg bg bge egbcdf dcbef beafdc cdeag bfgeda | agcde dceag gfabde beg
|
||||
gefba gacfbe facdeg cg cgab gfc efbdcag cfgeb cefbd afegbd | gfc afbge dafegb aebcgf
|
||||
egd aebfgd gefc ge gedbfca bdcfe dfcegb gecdb edbacf cdbag | dacbg edcfbg bcdfe ge
|
||||
df ebdga gcdefa cfbd bgdfa afgcb dfeagbc bfacgd fgd facebg | gaebd gecbaf fdcb dfbag
|
||||
fag cegfdab cadebg dabcgf abefg eafc ecafgb ebacg fbdge fa | ebfag dbcgfae gbecad fdbgac
|
||||
gecbd gefa gfc fabdcg bfaecd ecgafbd fg befgc efabc gecbfa | gfae gcf egbdafc edgbc
|
||||
bfgae fcebag fdbe fd fedag adgfbc fdbgea ecagd agcbfed fad | fgabe dfeb ebfd gefba
|
||||
ecdgfb afge bdage ebcda eg abdgef fgadb gabcfd dge bcdagef | gdebfa eg agfbdec afeg
|
||||
dbc acefd cegadbf fbcde afcb fdcaeg bc acdbge febdac debfg | ceafd caefd gfbaced dcb
|
||||
fecgb fgacd gdcefba de gbafce febd gecfd edc fecdbg ecbgda | becdfg ed becgad gcdeba
|
||||
agfdbe fbac bcd edacfb bgecfd cb cdeba cfgdeab acged edfab | cb dbc adbce bdfae
|
||||
dgacef bdfa ecgbf ab fegba dgafe efdbgca abg acebdg afbdge | gefda ecgafd ecfbg begcad
|
||||
gbfcea bgfa afdebc aegdcb af bgcdfea bgeac gecdf afc fgace | bfgecad fca afc abfg
|
||||
cfe dgcfe fdagcb gebdc egfa gbcdefa dcebfa fe agdfc fgaedc | dfgac fe fce fcdbega
|
||||
fecgab gcbdef cbaefgd dfgbe dgcfe eb bfe dbfga edbc acfegd | fbdeg fdgeca agefbc egcfd
|
||||
aecd bac dfacbe cafdb ac gefcab gfcdbe fcbde gbdaf cbdegaf | gcdbefa fbgcae ecad fagecb
|
||||
eagbf cagedf geafdbc fdgbce adefb aecfd adcb deb faecbd bd | ebd deabf fadcge cdagfe
|
||||
gadefcb bfcga eadcgb egdbfc deag ecg edabc acedbf eg abgce | gdea bagce gce gce
|
||||
agcfe bec gecab gbeda facb dbfgec fcegab gfacde gfdaceb cb | cb cefdgb cadefgb bc
|
||||
fdgb df egabcf fegda cedga fegab efdbac def cgdefba gafedb | facdbe bafceg agedf fdebga
|
||||
fdaecg dbcafg abfgec dc caefg cedg aecfd abdgfce eadbf fcd | cgefab gbfacd fbegac fabecg
|
||||
dfecabg bcfeag gdafce dagbfc cdefb dca gafbc dbag da bcadf | dca bagfce cbfda cdagbf
|
||||
dabfgec febadg gbcdae gfbe adebf ef cabdf edfgca ebgda eaf | gfacbed abgced egdfca egfb
|
||||
cfdea dc fdagebc fegcbd agdc gcfade fcabe cfd efdgba gfead | bdfcge agdc dgefa cfd
|
||||
gbfca febadcg bc bdegcf beca begaf gabedf cgfbae cgfad cbg | bcg dcaefgb dfgceb afebdg
|
||||
cg cgbf bedcg fcagde adefbcg efdgcb ebacd cgd edbfg egdafb | cfgedb bgcf acegdf cfgb
|
||||
bfad adcgbe faceg fagbdc df afdgc efcbdag dfbegc gfd badcg | gfd abgcd fgd abfd
|
||||
bcadgf cgdfb adgcb gf gafc dcfeabg bdagce dgf dfbega cebdf | adcbfg gfca fdcbe gfac
|
||||
daebf fcabgde bgdcef gab ga edbcga afcg ebfga aefbgc egbcf | ebcfg ebcgfa fcgebd agcf
|
||||
gedab fg afgecb cfgd feg cfabed befdc fgdcbe gdceafb befgd | ecafbg ecfbd febdc gf
|
||||
gcbadf ce gfcdb fec feabd gbecdf dbcfage febdc agcdfe egbc | bafed gcbe gefcbd egcb
|
||||
cbdfg gbcafd feb gaecf gcbfe gfbdae be fcgabde bdgcef becd | abgedf gdfebc aedgfb fbe
|
||||
edacgbf fbdae edgac bg gab bagdec dagfce fadbgc cebg bgdea | aedgb bg cebg adcge
|
||||
bda gbfea gedcab gfbceda bgdfa bfcdg febcdg bagcfd cfad da | dbecag bgfdc gdbfa facd
|
||||
ceabd dabfe acgde bc fbca cgbfde febgda dfecagb ebafdc bdc | cbdae dbfea fgdceb gbfedc
|
||||
acg fadbgce cfgdeb dbgce efdca ag dbga cagbef egacd cdgbea | gdecabf gcbfea ecbdg gac
|
||||
dfgacb ged egfdab efcgbda gcefbd debga ebadc ge aegf gfdab | cdfgab cdafgb bfcgda ge
|
||||
gdbeca bcfde eafg cefbgad dgafcb ge degfb adefbg dgfba bge | bdfeg begdf ebfadg eabdfgc
|
||||
cfbdgae gbaec bagfcd gfcba dcaeg bacfeg dbeacf bec efgb eb | ceb egcab cagfb dgcae
|
||||
fdcagb gdaecb fcadg bcdgaef gd dfcea gbcaf aecgfb cgd dgbf | gfadc gfdb badgfc gbfca
|
||||
bcafed defgcab fgcb cfbae cagde agebfc gbcae gbe gadefb gb | bg gfcaeb bg aedgc
|
||||
bcfadeg gbfd eacfbd gdafe afebg bafegd geafcd gebca fb bfa | agdefc eafbdg fgead gedaf
|
||||
fcgeabd dgeaf ebgfad gceafb geadc ac aec ebcdg cafd adgefc | gbfadec egcbd acfd dgabef
|
||||
eac fbdgec ea eadb cbaeg agfdecb eafdgc dcgbe bcfga adcbeg | aec abde eac ea
|
||||
cedb gcadbe ed edgfbac fbega abdge gacdb fdacgb dcefag aed | cdagb gbcafd gdefac gedafc
|
||||
cae agfbec ae begcd feab fadgbc ecfadg ecabg cdgbefa cabfg | ecgba afcgb efba dgeafc
|
||||
fecgabd badf efadg abedfg fea fdgceb fedgb aebfgc af gdcae | ebfgca fae fea af
|
||||
bgedac gbfae dcbefg acbf fb gaedf cagedbf aebgc gebfca fgb | aedgf fdgea bgfae bfdgeac
|
||||
bagcfe eadcb gb facegdb bgc fdcag efbcad beadgc bgadc ebgd | gbc fbcage becad gbfcae
|
||||
cagde gbca dcgbea gc efcad dbgfea dfgecb caedbfg adgbe cdg | gc egdfbc bcga cg
|
||||
efgcbd aebgcd dfe eadfb abged abdcefg bacfd ef bdfaeg faeg | fgae cgdaeb adefb afcbd
|
||||
cgbfea gcbda gefdcb eadf febag bdf fd febgad fadbegc bgadf | gebcfd fgdbea dfb dbf
|
||||
dg cdgfe gecfad dfbce bgefda fgd eafcg efcbag dgac bcdagfe | afdebg gfd aecgf gfcea
|
||||
edfga cgefda gcdbe fbae ab egdabf cfgbda deabg bad adefcgb | ebadg agdeb fbae gbdae
|
||||
gbdcfa gbade ebgac ecbfa adfgbec badecf bgc gcef fbgace gc | gc fcge gacefdb ebgca
|
||||
acefgd ebgaf egfda egcd bgfaecd dgcfa ed abcefd efd abdgcf | def ebgaf fed befcda
|
||||
fecag cag cfagbd agfcbde fabec eabg fdcge cgbfea fadebc ag | cfgbda dfgbeca efdcg dfgcaeb
|
||||
bgecfda ecdag dgfcbe bdgac adbgf afgdbe bfac gdcabf cbd bc | bc acbgefd fagcdb fcba
|
||||
ba efacg cfbgde cfdbg bacgf bgfdea abf bcad cfbeadg bgcfad | bcdgef fdgaeb ab cagfe
|
||||
cbdaf bafdgc eacbd fd dcf fcabg bcdfeg bedgcfa dgfa agbecf | dfga bgfac df agdf
|
||||
edcabf cadbf bgfdcea bgcfad bgcde dfg fg bdfgc cgadfe abfg | adfecg gfbcd acgdfeb cbgdaf
|
||||
badgfc dg bagcde bceda dbcfea beafg debag adg fcbadeg edgc | gebda dcagbf dceba egfab
|
||||
edcf dacfbg dbcefag fbd df bdegfc ebdagc bgfea begcd bfedg | dgebc cbgde dgfbac bdf
|
||||
bdcfg acegfb acebfd fdcag egadcf da daf cgeaf edag bafcegd | gdcaf fgaec bafdec fdaecb
|
||||
cagefd fde gdfba fcgaedb abefd ef dafbeg ebfg afcbgd ebdca | egdbfa bceda dfabg bdace
|
||||
fcgb gcdae bg gfadeb cbfegd fcabed bdg gcdbe fdcbe adbefcg | dgb gfbdec befdc gfbc
|
||||
fabde bgfde bgecda cedgb gf cabfdeg ebfdgc fgbeac fcdg gfb | fgbde efdgb edgbc afedb
|
||||
ebacf cedfab fde eabfd fd baecgf bagde agdebfc dfcb egfadc | ebfdgac acdegf abdefc ebfad
|
||||
gdcb cd cfgae cgbedf fbegd efgdc fadcbe gfeacdb dce dfagbe | gbcd cde gacfe gefdbc
|
||||
geb afedgb bfegca bgade eg dgef gadbc eafdb afebdcg fcbead | cagbd defcba dbafec geafcb
|
||||
fgbdc gbfade gba gefa dbafg cbadge bfgecda ga edbafc dfabe | afbdeg dgfba bgdfa dcfgb
|
||||
agef badce ef febad cabfdg gdfab cbgeafd egfbdc defgba fbe | abefd geaf gafdbe ebcad
|
||||
gd gad bfdg gecba fedabcg fcgeda aedfbc adebf agbdfe dgeab | ebcdaf agd gcfbdae egacb
|
||||
cedbfa ba cgbfa abf dfegac cafeg gabe befgca ebdfcag cbfdg | fab aegcf faecbd fdcebga
|
||||
daefg febdga aegfdbc efgdca eafb bge eb agbdec febgd gbdfc | gbcfd edbfg egb bacegd
|
||||
fbdecg bdafec cfaeb gedac def dceaf abfd fd gfecba gfdaecb | ebfac bdfa gbcdef fd
|
||||
fcbga cbdfeag bafgce fdacg dc fcd fcgbad fadge efcdgb cdab | gaefcb bafegcd acdb abcgf
|
||||
ecgabd acgdf abge ae bcfead fgdaceb ead daegc bcdefg gcbed | egba gaecd cgadbe gdbce
|
||||
aegfbc gf afebdc agebdfc ebcdf feg dcefg bdfg dcgea bgedcf | edbfcg fdgb bdgafce febgcd
|
||||
dcg bcdefa dbfceg fdeacg acbeg bfeagcd cfdae dg dfag agdec | dfcgea dg egdca edagc
|
||||
agcfeb fagbed fdbceg bag gebfd afgd agbfcde acbed ag badeg | cbdea fcedgb gfebac abcegf
|
||||
adbegfc fgdace cadge afcg ebdfca ebgad eac bfgdce cgefd ca | acged fcedg ebagd dgacefb
|
||||
gfeadb gfeab bcfa agebcfd aebgfc fecgbd efc fc gadec egcfa | fgbace fc debgcf afgceb
|
||||
bacg ab cfgbd bfadge acfed fgdecb agedcbf fcabgd bfa dbafc | gfdcb cbga abcg afecbdg
|
||||
ge beagc cfgabd bgaced bgcda fbadgec age ecdagf egbd fcbae | aeg gedbac cadfeg fbgcda
|
||||
dgbafe abfdgec gdf fd agebcf gadec dfcgba befd edfga aebfg | abcgefd dagec dfg df
|
||||
edfcga bcegd baeg cbgdae agdbc gce acgdebf eg gfadbc cefbd | dcbeg bgedc cedbg edcbg
|
||||
adfbe dg cagef dfgb gdbeca aefdg gda edcbaf fdgeba gdecbfa | cdabef eafbd bafcegd dg
|
||||
cd edcbfg dbage fcaebdg facd bgcfea afbedc afbec dbc adecb | adegb bcefag abegd cbgedf
|
||||
gdcbf da ecgbfda adc adgb bagcfd dfbcea egfac dfbceg gdacf | gdba cfdbg adbfec fcaeg
|
||||
bcg bc gdcbae dbca abfgde gdeba ebfacdg egcba faceg dgfbce | geadb badecg ecbfgd baecg
|
||||
@@ -0,0 +1,28 @@
|
||||
from math import prod
|
||||
with open("input") as f:
|
||||
data = [[int(x) for x in line] for line in f.read().strip().split('\n')]
|
||||
data = [[9]*len(data[0])] + data + [[9]*len(data[0])]
|
||||
data = [[9]+line+[9] for line in data]
|
||||
|
||||
print(sum(1+data[i][j] for i in range(1, len(data)-1) for j in range(1, len(data[0])-1) if all(data[i][j]<data[i+di][j+dj] for di, dj in [(1,0), (0, 1), (-1, 0), (0, -1)])))
|
||||
|
||||
low = [(i,j) for i in range(1, len(data)-1) for j in range(1, len(data[0])-1) if all(data[i][j]<data[i+di][j+dj] for di, dj in [(1,0), (0, 1), (-1, 0), (0, -1)])]
|
||||
directions = [(1,0), (0, 1), (-1, 0), (0, -1)]
|
||||
def basin_area(i, j):
|
||||
s = 0
|
||||
visited = set()
|
||||
def find_basin(i, j):
|
||||
nonlocal s
|
||||
if (i, j) in visited or data[i][j]==9:
|
||||
return
|
||||
visited.add((i,j))
|
||||
s += 1
|
||||
for di, dj in directions:
|
||||
find_basin(i+di, j+dj)
|
||||
find_basin(i, j)
|
||||
return s
|
||||
print(prod(sorted([basin_area(*l) for l in low], reverse=True)[:3]))
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
9987532143456789996545678998976545699965434567899998795698764323456789543457899986533467894569896501
|
||||
9876321012367899989434567987997956989896546789998998634569843214567898732326789765422589923456789413
|
||||
8765432123478999878923459876789899878789987899987889545698755323678987651015697996201289312347994324
|
||||
9876553266599998967894569985895699768677898998765678956799898745689998542123456789412378925456795435
|
||||
7987654345678987656789698743434987654556789987654789897987987656789899653435667894323459434687896745
|
||||
6598766566789886545678987652329876543345898976543456789876599887999789876545678965436568945799998767
|
||||
5459887677899765434567998761012986532234567897856789899965410998998674987679789876547878957897659878
|
||||
6668998889998774323478965432123499540167898929878995999854329109989543598989899987898989878989543989
|
||||
7978989999987653212589896743334598751358969212989997898765498999878932429694998798989799989878932598
|
||||
8989678998798743203456789654545679862349654101599998959876987886767891019543234679878678999967893457
|
||||
9294569876569764212567898767957989983458943213459859345989876745456789998956745998764567898656989598
|
||||
2123458965459876327678959879898994594567894324599743232399765432347997897897859876543458987549878989
|
||||
2012567894346987434799543998789543987678965436987654101999876921259876786789967987656789898798765879
|
||||
3488998965457898567898932198698932498789876945698543219899987810398765665689989998767896789997654567
|
||||
4567899876567987678997899989587894979999989896987654598789998323997654344578999899878945699876543238
|
||||
5678921988678998789986798975456789865678998789998765999678989439876543213567898789989434989999654123
|
||||
8789992399789559999875987654345679764589897678999879876569876545987432103459987698996599879898763245
|
||||
9899889965992346789663976543256789543456789567899989986432987699876543212349896577898989768799854345
|
||||
2998769894321245696542987654368995432367893458789999994321298789997654323656789456999876645679865456
|
||||
1987656789540787789531098765459996545698912345678929865410129891398865434567892349898765432459876567
|
||||
0299545678921656897642129876799987656789101476789019865321234990239976545689921298769879821266997678
|
||||
9987834567892345698743458988998798789893213567899198986492949989945987656789652397654998732345698799
|
||||
8756423478943466789964567899543679899954324678998987597989898979896799768996543987642349643456899899
|
||||
9543212367894578999987679910964567998765435699987895439876787656789899879898659876521298759567899998
|
||||
8732101456896689789998799929878678999896846989876986589965982545678999989789798765434999898978998867
|
||||
7653312345789795678999989894988789898987959878984987679854671234567898795679899876549899987899987757
|
||||
8764453468998964569989878793299898787899998769213498798743210125698989654367999987698769876789986545
|
||||
9875654567897653498876465689999987656967899658926599987655321238789478965456789798789659765678997756
|
||||
7986785678999542987675334567898976543456998767899989999867545678892367896567896569998769874789349897
|
||||
6097896799998943976543123589967896552347899978998778999878756789943456999678912478999879875697657998
|
||||
5298987893987899987655437678956794321456789989876567889999897897654567898989323489989989986789867899
|
||||
4349898932345678998786545889545989432345678998767455878999998998765698967999934569878798897894978932
|
||||
5656789931234568999897656795439878943456789999654344568989879999876789456798795998765656798923989921
|
||||
6787899890347679999998768976598767896567894987543123679878767899987892345997679899654345679212997890
|
||||
7898998789498998989999879987987854589678965987651012598765456789998943459876598789541245695499896889
|
||||
8969989688989987678989989499896743478989876798766323459854347878999656789985432678932359796989765678
|
||||
9659876567878998545678992398765432367893989899875454598743234767898787899987654569543498989879834569
|
||||
8798965456567987434567941299976543456932398999996765797643123456969898978998765678956697878965423498
|
||||
9987654367459876323458932989988658567891987998987976899854234569654929467899898789997976567893210987
|
||||
0199876212398765466567899878999867678999865467898987999976545678943212349953999899989895456965429876
|
||||
1399854323469896568789999657967978989098764379989698989987656789659333678932399999876789578977998765
|
||||
2989765459589987678892398743458989192129863238976569678998987899798944599953989998765678989989897654
|
||||
9979876567690198989991987652347891093998754347895454567899998998987895989899879987654567899998789543
|
||||
8765989678789389999989876541466789989899867656789363456789879997676789876798767898543478998767678932
|
||||
7654695989895478989878998732345678978789978969896212345698867896545898765987654987654567897656569893
|
||||
6543434597996569976768996543489789265679989899954343656987656789234987654394323498765678978543456789
|
||||
5432125456789698765459889676578990123498998789765654578996545892134998995999212349876789765412367895
|
||||
8742012347898798654348678987689321234987899678996767889987656943547899989898923556987899854303458954
|
||||
7632123456799987663234579998789495349876787466789878999999767898756789878767894567898998963212367893
|
||||
6545234767899876542127678929899989498765456365678989989879878999987899965456989878949987654325459921
|
||||
7656346978932976543549789212989678999874343234569999876765989987899969875345678989234598765456567910
|
||||
8967897989431097656656792109878569876543210145778999765434599876789656994234899892101469976567878921
|
||||
9878998999549198767767893298766456987654321246789998856323767965696547987345998766412359899878989432
|
||||
2989349478998999878898999349754357898975492997896987543212359876789439876567899654323498789999197545
|
||||
1293296569987989989929998998921238569987989879965987654323567987892123987689998765434987676789098856
|
||||
2394989678996577995439876587890123456798977768954398965454698998943239899799019879579896555678998767
|
||||
3989978989765456889549765456789234567899866657895239798767989989894598769898923998998765444599899878
|
||||
9876569899974345678998654345678945698921954346789123679899878679799987654967894997789974323486789989
|
||||
8765456789985239789886765234569756789939893235694234567987664545678976543456789875698763212345694395
|
||||
7654345678999398998765432125678969899898789126895645979876543234569876542367899764987654743656789234
|
||||
6543234789898987987654321036789998998798678937896799899987754345679965431478987653498987654577892101
|
||||
8752145898767656798765432123698987987657567898997898789998876789898765432789998542129498765788989212
|
||||
9643276987656345799876543234567896798543458939789989679979987892999896545699984321012349877999878923
|
||||
8754387896543235689998756345678935989432569023679875458965498921279987756789876434123899998989567894
|
||||
9965498987684034678959767896989129876521678954589965347894329440567998768899987546238789349765456989
|
||||
6798569998755126789549878987895436987833489765699987266789494321459439879999899677545690298765345678
|
||||
5987678987643234899434989699976545698954599896989998345899989432398921999998798798776789349979236899
|
||||
4598789299754345678949896545988656898765678999976899456999878949987890989865679899887899959898945678
|
||||
5979890156965676789898765432199767899876899998765978987898767898765999876754567999999999898787896789
|
||||
9867921239876989898789876545234978921987932987754567898987654679874789765532345689990198765676789897
|
||||
7657894345989991997678989658365989210198999876543456929999743599765678974321234567989297654545678976
|
||||
8546789956799910984569898767878996321459789997432347910998632989896789999210356779878987743634567895
|
||||
3237897897899899873497679878989985432345679876521257899876549876987899878931767898765696532124568934
|
||||
4348986789999789762398789989999876543959798765432456789987997654698978767899878997654597543035699323
|
||||
5467965623987689943479899997897998759898999896545598999999876543789765458998989998965698654145789212
|
||||
6569894219876567896567999876546789898767899987956679998978997954569654345987898769996798765345899901
|
||||
7698789398767466789778989965437897998545789998967899987969999895678965239876789654987909878656999893
|
||||
8997678987654345678989579876546986987656789899998998785459898789789654398985678943498912999767898789
|
||||
9986578998743234569995455987657895498767896789879987654398767678999965987674567892359533459898997678
|
||||
9875467895432101678994323498878954349878945678965698765987654578989899999543567891239644567929986567
|
||||
9954345976543212349989212569999761256999234589654579896796543439878788998674578932398755678919873459
|
||||
8765496989655458498978994569878972349754345678943989989987652129765677999895699899498766789998762688
|
||||
9876789898966567987867989698768993598965676789769899878999421019654376899976989798999877890987653567
|
||||
9987898787898679896955678969656789987896789899898789767989432198743265689999877567899988921998768778
|
||||
9998987676789798765634569654345679896789896923987679659876543989432134567898765456789999439879989989
|
||||
8939876545699987654323478967236598785678975439886568943987659876543245778969981345899876598765494597
|
||||
7921987436789498765654567892103497654567896798765458952199767987655356889654930234589987679896323456
|
||||
6899898526789219879765678954212985423456789999876567921019878998766867998969821345678998799999212345
|
||||
5498765434569423989979799765679876538967899899989878932123989349878978987898765456789999989898909499
|
||||
6309876565678934799998989878989989547898998789899989543234593234999989466799876578999899878787898987
|
||||
5214997878989545679887678989891097656789897656778997664567989945987894345698987679565698765656897876
|
||||
4323698989997656798776567898779198797898767545567998975979878899876743235567898996423987654345986765
|
||||
5434569997899987999534345696568999898999656333456789989897563789765432123468999543212399983239765634
|
||||
6545678986798998984321245689457899999989543212445693299765432678976321034567897432109999874129874323
|
||||
7656899345987899876510157893346899989878954301234892129898541567895434128978996543998898765034965210
|
||||
8767901239876567987823267892234998678967965412345691034987540458789545367899987659887789978239876391
|
||||
9898992398765459865439878921019876563556799563456789145996532345678955456987699798765678989347997989
|
||||
9979989987654346976545989765323985472345678974567897659876543456799766567898543987654567965456999878
|
||||
9765678987543257987858999875439876321234569985678998789997655687899889678976542398765679876597899954
|
||||
9876789997678349998967899986598765410123679876789219891298766799921998789987843459976789987698998765
|
||||
@@ -0,0 +1,48 @@
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split('\n')
|
||||
|
||||
scores = {
|
||||
')': 3,
|
||||
']': 57,
|
||||
'}': 1197,
|
||||
'>': 25137,
|
||||
}
|
||||
opens = {
|
||||
')': '(',
|
||||
']': '[',
|
||||
'}': '{',
|
||||
'>': '<',
|
||||
}
|
||||
closings = {v: k for k, v in opens.items()}
|
||||
second_scores = {
|
||||
')': 1,
|
||||
']': 2,
|
||||
'}': 3,
|
||||
'>': 4,
|
||||
}
|
||||
|
||||
|
||||
s = 0
|
||||
ss = []
|
||||
for line in data:
|
||||
parens = []
|
||||
for c in line:
|
||||
if c in scores:
|
||||
if opens[c] != parens[-1]:
|
||||
s += scores[c]
|
||||
break
|
||||
else:
|
||||
parens.pop()
|
||||
else:
|
||||
parens.append(c)
|
||||
else:
|
||||
if parens:
|
||||
x = 0
|
||||
for p in reversed(parens):
|
||||
x = x*5 + second_scores[closings[p]]
|
||||
ss.append(x)
|
||||
|
||||
print(s)
|
||||
print(sorted(ss)[len(ss)//2])
|
||||
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
{[<([<[[(<[({<<><>><()[]>}<(()())(())>)<(([]())){<()()><{}<>)}>][(((()<>)[{}{}]){<[]<>>({}{})})]>)[(({([{}[]]
|
||||
{{[[(<[[[<[<<{()()}(<>{})>[<<><>>[[]]]>[{{[]<>}[[]]}<<[]{}>[<>[]]>]]([[[{}<>]]<<()[]>{()<>}>]([<<
|
||||
([<{[[{{((([(<[]<>>{[]<>})<([]){<>{}}>][([<>[]][[]{}])])[[{{()[]}<()[]>}<{(){}}>]]]<{(<[{}<
|
||||
(({(<{(([<[({([]())(<>())}{([]{})[{}{}]})]{(({{}()}{<>()}](<[]<>>(()[])))({[[]{}]<[]<>>})}>[[[{<<>[]>(()
|
||||
[([<([{({{[{[([]{})[{}[]]][[{}{})]}<([<>{}]<<>()>)>]}([<{[()<>]{()<>}}[[{}{}]<(){}>]><{{{}[]}[()<>]}[{{
|
||||
<(([<{{<(<[(<{()()}>(({}()){()[]}))<[<[]()>[[]()]]<{[]()}<<>{}>>>](<[([]())]>(([()()][()<>])({()<>}<[]<>>))
|
||||
[{({<(<[{({{{[()[]](<>[])}{([]{})<<>{}>}}}{{<<{}[]>(<>)><(<><>)([]())>}<{({}<>)(<><>)}{[{}{}
|
||||
([(<{<[<{[({[<[]{}><<><>>]<({}[])({}<>)>}([{{}<>}<[]()>]<<<><>>>)){({<<><>>[[]{}]}(<()<>>{()}))<{<[
|
||||
({{([(<{{{{{{([]{}){<>{}}}}{<<()>{{}{}}>[({}())(()<>)]}}[[[[{}{}](<><>)]{<()[]><[][]>}](([[]](()()))<[[]
|
||||
(<<[<{{{({{<{{(){}}{<>()}}<({}{}){[][]}>>[{<[]{}>{<>()}}<{[]<>}[()<>]>]}}({([({}[])(<>{})][{<>}])[{[()<>]<{}
|
||||
{[(<<((<[[<{<{<>()}[{}[]]>}{{((){})[()<>]}<{(){})[{}{}]>}>]({((<<>()>){[<>()]{{}()}}){{[()()][<><>]}
|
||||
{(((([[(<[({({{}()}[<>[]])<(<><>)([]())>}{<[[]<>]><<()<>><()<>>>})<[[<[]{}><<>{}>]]>]<<{{[
|
||||
[{(<[[(<(<[{<({}[])<{}{}>>(<[]<>>)}]<{(<[]()>[()()])}>>{({<{{}()}[<>()]>})<[[(<>())(<>{})]{{{}[]}}][({{}[]}
|
||||
{[[<([{[(<<[<<()()>[[]]>[{()()}]](<[()]<()[]>><<{}()>{()()}>)>><[[([{}<>]{{}()})<{{}[]}<()[]>>]]})[([{{{<>()}
|
||||
((({[(<<{(((<<{}()>><{<><>}>)))[[{<({}[])[{}[]]>}(<[<><>][()()]><[[][]]<{}[]>>)]]}((({<(<>())>[({}{
|
||||
{<{{[(<<{(<{[({}<>)<{}[]>]([(){}](<>[]))}<(({}()){[][]}}[<()[]><{}()>]>>)}<<{(<[{}()]{<>{}}>[[[]()](()
|
||||
{(<<({{([<[<[<{}<>>{[][]}]<[<><>][()[]]>>{(({}{})){<()><()()>}}]>(<({{()()}({}<>)}<([]<>){[]{}}>){([[]<>
|
||||
<(<({{{([({{<<{}<>><()[]>>[{()<>}[<>{}]]}})({([{()[]}{(){}}]<(()<>)<{}<>>>)}<{{<{}<>>[[][]]}}<[{<>}[<>
|
||||
{({{(<<([({{[(()<>)[[]<>]][(<>{})({}())]}})]{(<[<(<>()){<><>}><<{}()>[[]]>][{{<>()}{[]()}}{[()<>]{<>()}}]>)
|
||||
([<({{{([[<<[[()[]][<><>]]<<<>[]><()()>>>(<{()<>}<()[]>><{<>()}<[]{}>>)>({(<()[]]<()()>)<[<>()][{}]>
|
||||
{[{<((<[<<({<{[]{}}[()()>>({[][]}[[]()])})(([{()}{{}()}]<<{}()>{{}{}}>)<([<>()])(<{}<>><{}[]>)>)>{[{
|
||||
{{([([{(<[[{[{()<>}({}())][[[]<>]<{}{}>]}]<<[({}[])(()<>)]({(){}}[()()])>{{(())<(){}>}}>]{[<{[[]()]{<>[]}}
|
||||
<(<({<{<<<([<([]<>)([]<>)>]<{{{}{}}<<>()>}>)<<{[[]()](<>{})}(([]())<[]()>)><[{<>{}}[(){}]]>>>>>(<{<[[[{
|
||||
(([({<{(<{[<({<><>}){{[][]}}>{<([]()){{}{}}>[([][])<{}{}>]}]}[((<{()<>}>)[{{()<>}{[][]}}])]
|
||||
(<<<(({{{([[<{(){}}>{(()())(()[])}]{({{}[]}<[][]>]<{{}<>}{()}>}])<(({[[][]]{{}{}}}(([][])<(){}>)
|
||||
{<{{[[({<<{{({{}()}({}{})><[()<>][<>{}]>}([<()[]>({}())][{()<>}[()]])}{<[{(){}}<[]{}>][[[]<>][[][]]]>([[<>]
|
||||
{{{[(<([[[[{[[(){}}<{}>]<{<>[]}{{}{}}>}]<[[(<>())((){})]((<>()))]{(<[]{}>([][])){<[]<>>(()[])}}>]
|
||||
(<{[([[<(<[<{[<>{}]}(<[]<>>{{}<>})>[{(())}]]>){<{(<(<>())<{}()>>]}({<<[]<>>[[]<>]>((()<>)[<><>])}
|
||||
[<{[[(({([((({[]{}}[()()])))]>[((<<[<><>][[]()]>{[()<>][()()]}>({{<>[]}({}<>)})))]})){((<[<[<[<>()]>
|
||||
<({[{{{<{[<[({[]{}}<[]>)(({}[])({}<>))]><{((()()))[[()<>]{<>[]}]}(<((){})<{}{}>><({}[])>)]][([<{
|
||||
<(<<<<<[(<<[{{[][]}{{}{}}}{{[][]}<()>}](<([]{})[()[]]>[[{}{}]{<>()}])>([{[[]()]<<>[]>}[<<>{}>{<>
|
||||
<(<[[<[[[<<(<(()[])<{}()>><(<>{})>)[([{}{}]([]{}))]><<<[<>[]]{<>[]}>{(()<>)({}[])}>>><[[[{<
|
||||
([[{[({<({(([<(){}><[]<>>]<{()<>}({})>))([([{}<>][{}[]]){[<>[]]({}<>)}][[({}[]){[]()}]])})>[({{(<(()[]){<>
|
||||
<[<{<[{(<<[[{{(){}}({}<>)}<(()[])>]<<<()()>(()<>)>({{}})>]({[(<>{})<{}()>]{<{}<>><<><>>}}<<{()<>}
|
||||
{[{({[[(({{{{<()()>{[]{}}}{[<>[]]<()<>>}}(<<<>()><{}<>>>({()<>}[()<>])}}{<{[()[]]{(){}}}>[<<[]{}>>[((){})<(
|
||||
{{(<[<(<(<{{(<[]()><()<>>)}{((<><>))[<<>{}>{()[]}]}}>{{<({{}{}}[()<>])[<(){}>(<>[])]><<(<>{}}[{}
|
||||
[{{{[[[[{(<{<[<>[]](()[])]{{<>{}}}}{[(()()){[][]}]{([][])}}><<{<<>()>([])}[[[]{}]<{}{}>]>(([{}<>]<[]()>)
|
||||
{[[(<([[[[((({<>{}}(<>())){<{}[]>})[([<>[]](<>[])}[({}[])([]())]])([<{{}()}(<>())><[[][]][<>()]>][([()()]<<>[
|
||||
<[{[{({(<(((<<<>{}><[]()>][{{}()}{[][]}])[(((){})([][]))[[()<>][[]{}]]])[[(((){})[()])[[(){}]<{}
|
||||
[{[[<[<{{(({([(){}]<()()>](([]<>)[()[]])}<<{[][]}([][])>>)<[[([]())<{}[]>]]>){[[[{{}()}[<>[]]]{<[]{}>
|
||||
[[<([([[<<<{{[{}[]][<><>]}}{{{{}{}}}}>>>[([[(<<>[]>({}<>))<([]())<<><>>>]{{<<>[]>{<>()}}}][<{{[
|
||||
({[<<<((<<<<<<[]{}>[()()]>{[()[]]{()<>}}>[((<>()){()()}){<[][]]<{}{}>}]>{{[[{}{}]<{}[]>]([[]<>])}((
|
||||
({<<[[{{<{[[{<()><<>>}<<()[]>([][])>]]([[({}<>)[()[]]](([]{})<<>[]])]<[([]<>){[]}]>)}(((<<{}[
|
||||
<(<(<(([([[[{{[]()}{<>()}}{<{}[]>[{}()]}]{{[{}{}]<()[]>}({<>()}<(){}>)}][[{<{}()><[][]>}](<[
|
||||
[[<{<[<[<({<<{[]}<()<>>>({<><>}{[]<>})><([<>()]([][]))>}[({[{}{}]<{}[]>})({[<><>]})])>]([[{<({
|
||||
<([{[[<<[({<<[{}()]({}[])>{<[][]>{()()}}>{<(<>[])([]{})>([{}[]}[<>])}}{{[<<>[]>{[]<>}][([][]){{}{}}]
|
||||
[([({((<[{{{[<{}><<>()>]<<()[]>>}<[{{}{}}([][])]{{()<>}<(){}>}>}<{<[[][]]>({{}<>}{()[]})}>
|
||||
[[[{([({{{<{[[[][]]{()()}]}{{<<>[]>[{}[]]}[[[]()]<<>>]}>({{(<>[])[{}[]]}({<>()}[{}[]])}{{(()<
|
||||
{<{{{<[{[<{(<{[]{}}{[][]}>{{[]<>}}}}[{((()[])<()()>)[<<>[]><{}()>]}<[{<>{}}[()<>]]<[<>[]][<>{}]>>]>[<[
|
||||
<[<{[[<{<[([{({}[])(()<>)}[[<>()]{()[]}]])][[<{[<>[]][<>[]]}<{<>{}}{<>{}}>>{<<()()><()<>>>{([]()
|
||||
<[{{({<[<([[[([]{})({}())]]<[{{}}[()<>]]<{<>{}}{()}>>])<[<[<<>()>]{<{}{}>[[]<>]}><({[]()}<<><>>)[(()<>)(<>())
|
||||
{<[[[<(<[<{<({<>{}}[<><>])([{}<>]<[][]>)><<[(){}](<>[])>[({}[])<<>[]}]>}{{{(<>())(<>{})}}<((<>())
|
||||
<{(<<[{[{<{<<((){})[[]{}]><([]<>)<{}[]>>>{[[[][]]<()()>]}}{({{<>()}<<>()>}{<{}<>><()[]>})}>}<[<([<()()>{()()
|
||||
{{([<{[[((<<{<<>()><<>[]>}<(()<>)>>><<[<[][]><{}<>>]>{<([]()){[]<>}>}>))]<{(((<[[]<>]([]<>)>[{{}()}<<
|
||||
([{{({{<[[(((<[][]>{<>{}}){<()[]>{[]()}})(<({}<>)([]<>)>(([])[()<>])))(([([][]){()<>}]{{[]<>}{[](
|
||||
[{{<{({[<{<{((<>())({}[]))<{<>()}({}[])>}(<[{}()]<{}<>>>({[][]}{()<>}))}{([({}[]){{}[]}]<([][])>)}}{<{({{}(
|
||||
[{(([[[([<<(<([]()){<>}>(({}<>)(()())))[((<>{})){[()<>]<<>{}>}]>>][<{{[<()<>>{{}[]}]<<{}[]><{}[]>]}[
|
||||
{<<<(<[<[{<[<({}[])>(([])<[]<>>)]<<<{}{}>({}())>{[<>{}}<[][]>}>>[{[<<>()><()()>]{[<>[]]<[]>}}[<<<>[]>{[]()
|
||||
([(((<<(<[[<[<{}<>>(<><>)]>([<{}[]>{<>{}}]({<>{}}[()()]))]](<({<<>[]>({}[])}<[[]<>]{<>[]}>)(<{
|
||||
([{({{{[(((<<{[]()}<{}<>>>((<><>){[]()>)>({<{}()><(){}>}<[<>()]>))){((([[][]]{<>{}})[([]<>){<>[]}]
|
||||
<(({{{[(([<[{<(){}>([]<>)}(<[]><()<>>)]><<([()[]]([]()))>{[(()<>}<{}>]}>]){{[{(({}{})<(){}>){[[]]{[]
|
||||
[<{(<({<{((<<<[]<>>([]())>(((){})[[]()])>{[[<>]<{}<>>]}){[<[<>[]]({}())]{{()[]}<()>}]})<([[([]())<<
|
||||
[[<<[<{{[{({<[()<>]{<>[]}>{([][]){<><>}}}<[[{}()]][<<><>>{{}[]}]>)}{<{{({}<>)(()())}[{{}{}}[{}()]]
|
||||
({<({[{[{(([<<()()>{<>[]}>[([]<>)<()<>>]]{<{<>()}[{}{}]>((<>{}){<>{}})})([<([][])[[]{}]>(<[]()>{<>
|
||||
{[[((<{[[<<({<[]<>>[()<>]}{[()]{<>}})>[<{<<>()><()[]>}{{()[]}<()<>>}>(([{}[]]))]>[[{({<><>})}
|
||||
{{(<[{{[{<[({(()){{}<>}}(<{}[]>[[]()]))]>}({(<((()[])((){}))<{<><>}[<>()]>>)}(<<[(())<{}<>>]{[[]]<{}
|
||||
<{{([<<<<[([<[<><>][[]]><<(){}>[()()]>]<{(<><>)<<><>>}([{}{}])>)][[([<()()><<>()>])(({[]<>}([]{}]){<[]><[]
|
||||
{(<<[[<{{((([<[]<>>[{}<>]][([][]){{}{}}>)(<<<><>><[]{}>>{{(){}}[<>{}]}))({<(())[<>()]><{<>{}}(<>[])>}(({
|
||||
[[[([({([<<[[[<>{}]{<>{}}]<[<><>]{{}<>}>]>[({[()()]<<>()>}{[()()][{}()]}){({{}()}[(){}))}]>[(<{[()<>
|
||||
[{{(<<<[{(((<<()<>>([])>({<>{}}<()[]>)))[{(([]){()<>})(({}[])<{}})}<{([]{})({}())}<(<>[])<<>[]>>>
|
||||
{<<<<[{[{({{[<<>()><{}[]>]<[[]{}][{}{}]>}(<({}{})<()<>>>{{()<>}})}{[[{{}{}}[{}{}]]<[<><>](<>{})>]})(([{[<>()
|
||||
<(<[<{(<{[{<{[[]{}]{{}[]}}>[{[[]<>][{}{}]}(([]())(<>))]}<{{[{}{}]([]{})}[({}())]}{<<<>()>>([(
|
||||
<{{[{[<{[[<[{<[]{}><<>{}>}]{({()<>}(<><>)){[<>[]]}}>{([[<>{}]({}{})](({}{})<[]{}>))<{[{}<>
|
||||
{{<<{<<<[{[[([[]()][()()])(({}()))][[({}[])<()()>]]]{<[<{}[]>{{}{}}]>}}[[[[([]())]([<>[]][[]{}]>]]
|
||||
[[<<[({{{(<[(<()<>>[<>])]([(()<>){<>())]([<>[]][[]<>]))>{{[[[]()]([]())]{<[]{}>{()<>}}}[<([]<>)<()>>({<>{}}[<
|
||||
([[([<{<[<((<(<>[])(<>[])>(<<><>><{}[]>)){<<{}<>>>({{}{}}<()[]>)}>[{{(<><>)(()<>)}[<<>[]>]}]>]<{{
|
||||
{{{((<<{[[{<([[]{}][{}<>])>}<[((()())<()<>>)[[[]{}]{[][]}]]<<<[]{}>{{}[]}>(<<>()><(){}>)>>](<
|
||||
{(([[{{<[[<{(({}<>)[<>[]])}<{({}{}){{}}}[[()[]](()())]>>]([<[{()[]})({<>}[<>{}])>{[{{}{}}{(){}}]{<{}{}>}}])
|
||||
{([(<{<<({[<[{()()}<[]<>>]{<[]{}>}><[[<>][()<>]]>]{<{{[]{}}<(){}>}[({})]>{{<{}{}><()<>>}([{}
|
||||
{{[[({{({[(([{{}()}[{}]]({{}<>}([][]))){({{}<>}[[]{}])<<()<>>>})]{(<[<{}{}>{<>()}](({}())((){
|
||||
{<({{<<{{([{{{[]<>}{<>{}}}((<><>)<()<>>)}[<[{}<>][()[]]><[<>()][<><>]>]]{{[[()<>]<<>[]>]<(<><>)
|
||||
<(<[(<<[[<<<[({}())<[][]>](({}<>)[{}<>])>>[<{{{}}<()<>>}<(()<>){{}{}}>>]>({{<[<><>](<><>)>[(<>{}
|
||||
[((<{[{{(<{[({{}[]}((){}))([[][]]{<>[]})]<{<{}[]>[{}<>]}[<{}()><{}<>>]>]>)}}]}{{{(<[(<{{()()}}>{[<{}<>><<>[]>
|
||||
{([<<{(<([[({{{}<>}<(){}>}<<()[]>{<>{}}>)((<[][]>[<><>])<<[][]>{<>()}>)]((<{<>[]}{[][]}>[[<>()]{<>[]}]]{{[
|
||||
[<{(<{([{{(([<<>()>]{<(){}><()<>>}){(([]{}>)<(<><>)>})}({({[<>]{<>[]}}[[{}<>]])}[{<[()[]]<{}<>
|
||||
{[(<(<{(<<[{[<[]()>(<>[])][{{}}[()[]]]}{{[[]{}]{()()}}<<<>>[[]()]>}]>{{<[<{}()>([]())]({(){}}(()<>))>([(<>(
|
||||
{{([[([[[<(({<{}<>>[<>[]]}{([]<>)<<>{}>})<{{[]<>}{{}<>}}([()()]<<>[]>>>){{[[()<>]]<((){})<[]{}>>}{<<[]<>><()
|
||||
<({([[[[[({[[{{}<>}({}<>)]({<>[]}[<>{}])][([<>[]](<>()))<([]())[{}{}]>]}(((({}[])[()[]])[{{}{}}(<>)])(<<<>
|
||||
[({{<{[([(((<{[]{}}{<>()}><[{}<>>{<>[]}>)){([<{}{}><()[]>]<([]{})[{}{}]>){{[[]]<[]{}>}((()[])[(
|
||||
(({<[<<{{[[<{(<>{})([]())}([[]{}]{{}()})><[<{}()><{}{}>]<<<>()>[[]()]>>]<[<<()[]><<>()>>[{{}<>}[<>]]]>]
|
||||
((<[[<{{{[({<(()[])<()<>>>})]{<(([()()][[]]))({[[]()]{[]<>}}{[<>()]})><<(({}[])[{}{}])>>}}}[[[{{{{[]{}}({}[
|
||||
([<[<{{{{[<<{{<>[]}([]<>)}><{{()[]}[<><>]}{<[]>[()<>]}>><{[{[][]}<()[]>]({[][]}(()<>))}<{(<>())(
|
||||
{((<(([[<[(<[{()[]}([]())>>[<[<>()]<[]{}>>(<()<>><[]>)])<(<{()}>(([]<>){<>{}}))<[[[]<>]{[]()}
|
||||
[(<[([([{{{<([[]<>]<<>>)[{<>[]}{{}<>}]}({(())[{}()]}[<{}<>>{<>()}])}([<[(){}]([][])><(()())
|
||||
@@ -0,0 +1,64 @@
|
||||
from collections import defaultdict
|
||||
data = '''
|
||||
5483143223
|
||||
2745854711
|
||||
5264556173
|
||||
6141336146
|
||||
6357385478
|
||||
4167524645
|
||||
2176841721
|
||||
6882881134
|
||||
4846848554
|
||||
5283751526
|
||||
'''.strip().split('\n')
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split('\n')
|
||||
data = [list(map(int, line)) for line in data]
|
||||
N = len(data)*len(data[0])
|
||||
d = defaultdict(lambda: -100000)
|
||||
d.update({(i,j): x for i, row in enumerate(data) for j, x in enumerate(row)})
|
||||
|
||||
directions = {(x,y) for x in [-1,0,1] for y in [-1,0,1]}-{(0,0)}
|
||||
|
||||
s = 0
|
||||
for _ in range(100):
|
||||
for c, x in d.items():
|
||||
d[c] = x+1
|
||||
ready = set()
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
while flashed:
|
||||
s += len(flashed)
|
||||
ready = ready | flashed
|
||||
for i, j in flashed:
|
||||
for di, dj in directions:
|
||||
d[(i+di, j+dj)] += 1
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
for c in ready:
|
||||
d[c] = 0
|
||||
|
||||
print(s)
|
||||
|
||||
step = 0
|
||||
ready = set()
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
while flashed:
|
||||
ready = ready | flashed
|
||||
for i, j in flashed:
|
||||
for di, dj in directions:
|
||||
d[(i+di, j+dj)] += 1
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
while len(ready)!=N:
|
||||
for c in ready:
|
||||
d[c] = 0
|
||||
step += 1
|
||||
for c, x in d.items():
|
||||
d[c] = x+1
|
||||
ready = set()
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
while flashed:
|
||||
ready = ready | flashed
|
||||
for i, j in flashed:
|
||||
for di, dj in directions:
|
||||
d[(i+di, j+dj)] += 1
|
||||
flashed = {c for c, x in d.items() if x>9 and c not in ready}
|
||||
print(step+100)
|
||||
@@ -0,0 +1,10 @@
|
||||
8826876714
|
||||
3127787238
|
||||
8182852861
|
||||
4655371483
|
||||
3864551365
|
||||
1878253581
|
||||
8317422437
|
||||
1517254266
|
||||
2621124761
|
||||
3473331514
|
||||
@@ -0,0 +1,57 @@
|
||||
from timeit import timeit
|
||||
data = """
|
||||
fs-end
|
||||
he-DX
|
||||
fs-he
|
||||
start-DX
|
||||
pj-DX
|
||||
end-zg
|
||||
zg-sl
|
||||
zg-pj
|
||||
pj-he
|
||||
RW-he
|
||||
fs-DX
|
||||
pj-RW
|
||||
zg-RW
|
||||
start-pj
|
||||
he-WI
|
||||
zg-he
|
||||
pj-fs
|
||||
start-RW
|
||||
""".strip().split('\n')
|
||||
|
||||
with open("input") as f:
|
||||
data = f.read().strip().split('\n')
|
||||
|
||||
d = {tuple(line.split('-')) for line in data}
|
||||
small = {x for pair in d for x in pair if x.islower()} - {'start', 'end'}
|
||||
|
||||
|
||||
def make_paths(d, valid_path):
|
||||
def f(v, path):
|
||||
if path.count('start')>1:
|
||||
return
|
||||
if not valid_path(path):
|
||||
return
|
||||
if v=='end':
|
||||
yield path
|
||||
return
|
||||
for next_v in {x for x, y in d if y==v}|{y for x, y in d if x==v}:
|
||||
yield from f(next_v, path+[next_v])
|
||||
yield from f('start', ['start'])
|
||||
|
||||
valid_path = lambda x: all(x.count(v)<=1 for v in small)
|
||||
print(sum(1 for p in make_paths(d, valid_path)))
|
||||
|
||||
def valid_path(path):
|
||||
if any(path.count(v)>2 for v in small):
|
||||
return False
|
||||
if sum(1 for v in small if path.count(v)==2)>1:
|
||||
return False
|
||||
return True
|
||||
|
||||
print(timeit('print(sum(1 for p in make_paths(d, valid_path)))', globals=globals(), number=1))
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
start-YY
|
||||
av-rz
|
||||
rz-VH
|
||||
fh-av
|
||||
end-fh
|
||||
sk-gp
|
||||
ae-av
|
||||
YY-gp
|
||||
end-VH
|
||||
CF-qz
|
||||
qz-end
|
||||
qz-VG
|
||||
start-gp
|
||||
VG-sk
|
||||
rz-YY
|
||||
VH-sk
|
||||
rz-gp
|
||||
VH-av
|
||||
VH-fh
|
||||
sk-rz
|
||||
YY-sk
|
||||
av-gp
|
||||
rz-qz
|
||||
VG-start
|
||||
sk-fh
|
||||
VG-av
|
||||
@@ -0,0 +1,38 @@
|
||||
with open("input") as f:
|
||||
data, folds = f.read().strip().split('\n\n')
|
||||
data = {tuple(map(int, line.split(','))) for line in data.split('\n')}
|
||||
folds = [(d[0], d[1]) for x in folds.split('\n') if (y := x.split('=')) and (d := (y[0][-1], int(y[1])))]
|
||||
|
||||
def print_data(data):
|
||||
for y in range(max(a[1] for a in data)+1):
|
||||
for x in range(max(a[0] for a in data), -1, -1):
|
||||
if (x, y) in data:
|
||||
print('#', end='')
|
||||
else:
|
||||
print('.', end='')
|
||||
print()
|
||||
|
||||
def make_fold(data, fold):
|
||||
d, n = fold
|
||||
if d=='x':
|
||||
first_pred = lambda x: x[0]<n
|
||||
second_pred = lambda x: x[0]>n
|
||||
else:
|
||||
first_pred = lambda x: x[1]<n
|
||||
second_pred = lambda x: x[1]>n
|
||||
|
||||
first = set(filter(first_pred, data))
|
||||
second = set(filter(second_pred, data))
|
||||
if d=='y':
|
||||
second = {(x, n-(y-n)) for x, y in second}
|
||||
else:
|
||||
second = {(x-n-1, y) for x, y in second}
|
||||
first = {(-x+n-1, y) for x, y in first}
|
||||
return first | second
|
||||
|
||||
for fold in folds[:1]:
|
||||
data = make_fold(data, fold)
|
||||
print(len(data))
|
||||
for fold in folds[1:]:
|
||||
data = make_fold(data, fold)
|
||||
print_data(data)
|
||||
@@ -0,0 +1,876 @@
|
||||
159,344
|
||||
771,626
|
||||
1140,868
|
||||
790,25
|
||||
607,254
|
||||
375,140
|
||||
924,198
|
||||
293,548
|
||||
1068,798
|
||||
1140,26
|
||||
890,750
|
||||
960,506
|
||||
510,886
|
||||
592,87
|
||||
72,627
|
||||
1131,110
|
||||
1173,760
|
||||
249,690
|
||||
291,841
|
||||
1019,501
|
||||
465,312
|
||||
1062,84
|
||||
1206,696
|
||||
594,414
|
||||
1191,651
|
||||
5,33
|
||||
557,16
|
||||
388,480
|
||||
246,862
|
||||
1082,446
|
||||
582,822
|
||||
556,222
|
||||
266,739
|
||||
304,506
|
||||
137,121
|
||||
301,519
|
||||
596,343
|
||||
654,479
|
||||
497,715
|
||||
309,250
|
||||
966,520
|
||||
1176,119
|
||||
587,728
|
||||
239,767
|
||||
1109,539
|
||||
433,826
|
||||
587,480
|
||||
1169,383
|
||||
49,257
|
||||
1260,297
|
||||
1280,44
|
||||
141,455
|
||||
671,112
|
||||
835,784
|
||||
1268,215
|
||||
1092,266
|
||||
1268,7
|
||||
428,87
|
||||
206,551
|
||||
25,519
|
||||
1252,775
|
||||
771,275
|
||||
393,654
|
||||
1206,198
|
||||
1034,530
|
||||
826,387
|
||||
274,719
|
||||
335,605
|
||||
1173,691
|
||||
59,304
|
||||
967,232
|
||||
377,749
|
||||
651,158
|
||||
691,119
|
||||
335,737
|
||||
45,156
|
||||
1280,492
|
||||
6,868
|
||||
813,795
|
||||
512,869
|
||||
1285,375
|
||||
649,257
|
||||
199,186
|
||||
1091,121
|
||||
1295,176
|
||||
95,250
|
||||
335,829
|
||||
274,175
|
||||
816,357
|
||||
42,7
|
||||
321,459
|
||||
380,719
|
||||
93,637
|
||||
771,619
|
||||
475,784
|
||||
318,179
|
||||
810,491
|
||||
279,700
|
||||
261,215
|
||||
1121,536
|
||||
137,760
|
||||
1292,631
|
||||
219,569
|
||||
743,879
|
||||
248,810
|
||||
403,444
|
||||
278,595
|
||||
465,569
|
||||
103,763
|
||||
899,707
|
||||
498,698
|
||||
1297,555
|
||||
1250,739
|
||||
2,637
|
||||
395,463
|
||||
734,574
|
||||
619,36
|
||||
83,259
|
||||
1221,625
|
||||
909,196
|
||||
1014,477
|
||||
1248,680
|
||||
759,266
|
||||
30,641
|
||||
417,868
|
||||
1183,691
|
||||
783,87
|
||||
1195,306
|
||||
1215,868
|
||||
97,379
|
||||
619,53
|
||||
443,268
|
||||
1228,648
|
||||
1014,507
|
||||
1114,371
|
||||
544,206
|
||||
564,374
|
||||
890,872
|
||||
509,532
|
||||
483,737
|
||||
465,536
|
||||
1071,749
|
||||
1144,537
|
||||
58,306
|
||||
144,886
|
||||
1308,698
|
||||
733,624
|
||||
587,838
|
||||
301,534
|
||||
1121,858
|
||||
611,243
|
||||
867,268
|
||||
13,555
|
||||
703,640
|
||||
992,267
|
||||
753,515
|
||||
527,190
|
||||
413,568
|
||||
421,77
|
||||
1203,121
|
||||
1236,507
|
||||
652,644
|
||||
497,534
|
||||
642,873
|
||||
797,159
|
||||
20,892
|
||||
431,439
|
||||
248,285
|
||||
1128,31
|
||||
1129,33
|
||||
1083,26
|
||||
852,371
|
||||
659,102
|
||||
803,155
|
||||
279,194
|
||||
796,455
|
||||
191,432
|
||||
771,140
|
||||
1009,88
|
||||
883,26
|
||||
1155,381
|
||||
1144,357
|
||||
1294,117
|
||||
211,44
|
||||
182,863
|
||||
552,803
|
||||
639,827
|
||||
980,705
|
||||
1063,126
|
||||
763,708
|
||||
905,288
|
||||
445,704
|
||||
1066,638
|
||||
527,87
|
||||
509,301
|
||||
425,318
|
||||
345,642
|
||||
720,520
|
||||
967,616
|
||||
1078,518
|
||||
1009,375
|
||||
104,887
|
||||
714,159
|
||||
960,58
|
||||
840,25
|
||||
1250,155
|
||||
276,536
|
||||
170,868
|
||||
602,427
|
||||
0,52
|
||||
915,463
|
||||
853,375
|
||||
473,369
|
||||
837,369
|
||||
1113,843
|
||||
1038,516
|
||||
1165,77
|
||||
90,520
|
||||
254,851
|
||||
263,194
|
||||
17,637
|
||||
935,754
|
||||
594,155
|
||||
242,833
|
||||
853,395
|
||||
525,570
|
||||
662,698
|
||||
436,266
|
||||
236,598
|
||||
950,257
|
||||
810,641
|
||||
567,127
|
||||
703,642
|
||||
1221,420
|
||||
753,16
|
||||
889,77
|
||||
514,252
|
||||
472,456
|
||||
249,204
|
||||
845,536
|
||||
827,737
|
||||
754,222
|
||||
790,473
|
||||
38,245
|
||||
874,182
|
||||
1155,513
|
||||
698,7
|
||||
355,238
|
||||
80,382
|
||||
1099,460
|
||||
838,8
|
||||
1256,712
|
||||
1004,826
|
||||
233,33
|
||||
1250,403
|
||||
574,730
|
||||
602,19
|
||||
238,28
|
||||
1064,557
|
||||
1049,240
|
||||
596,159
|
||||
775,467
|
||||
639,379
|
||||
764,628
|
||||
60,491
|
||||
145,481
|
||||
835,54
|
||||
791,120
|
||||
718,456
|
||||
423,235
|
||||
552,539
|
||||
575,707
|
||||
704,595
|
||||
681,131
|
||||
557,515
|
||||
1213,291
|
||||
189,858
|
||||
291,393
|
||||
406,810
|
||||
594,29
|
||||
525,324
|
||||
306,739
|
||||
1176,473
|
||||
189,708
|
||||
1305,637
|
||||
1017,71
|
||||
1213,379
|
||||
1225,18
|
||||
209,190
|
||||
1027,651
|
||||
818,703
|
||||
1307,736
|
||||
701,604
|
||||
447,19
|
||||
1096,862
|
||||
1297,746
|
||||
1230,382
|
||||
877,826
|
||||
708,427
|
||||
720,117
|
||||
311,830
|
||||
1225,288
|
||||
736,606
|
||||
1093,264
|
||||
30,44
|
||||
1245,414
|
||||
1173,614
|
||||
574,288
|
||||
1079,340
|
||||
1165,810
|
||||
300,303
|
||||
251,179
|
||||
124,679
|
||||
845,235
|
||||
361,647
|
||||
1207,579
|
||||
589,567
|
||||
262,184
|
||||
840,2
|
||||
980,481
|
||||
1196,497
|
||||
1044,155
|
||||
877,75
|
||||
206,103
|
||||
783,203
|
||||
465,179
|
||||
833,756
|
||||
386,887
|
||||
189,355
|
||||
268,646
|
||||
279,340
|
||||
393,688
|
||||
719,472
|
||||
157,99
|
||||
375,340
|
||||
833,260
|
||||
1087,192
|
||||
271,260
|
||||
840,886
|
||||
527,651
|
||||
104,63
|
||||
232,518
|
||||
980,413
|
||||
888,376
|
||||
223,254
|
||||
574,836
|
||||
403,226
|
||||
448,551
|
||||
602,175
|
||||
1077,861
|
||||
1082,894
|
||||
473,749
|
||||
902,414
|
||||
55,708
|
||||
1156,253
|
||||
703,192
|
||||
144,415
|
||||
413,158
|
||||
1036,467
|
||||
589,327
|
||||
1006,518
|
||||
960,836
|
||||
810,627
|
||||
761,628
|
||||
874,628
|
||||
291,501
|
||||
95,698
|
||||
1295,782
|
||||
333,540
|
||||
330,705
|
||||
668,873
|
||||
1230,730
|
||||
1176,7
|
||||
88,70
|
||||
35,393
|
||||
594,739
|
||||
194,877
|
||||
955,238
|
||||
0,842
|
||||
977,540
|
||||
977,316
|
||||
935,642
|
||||
581,196
|
||||
862,791
|
||||
783,691
|
||||
147,840
|
||||
698,315
|
||||
803,739
|
||||
189,325
|
||||
649,705
|
||||
393,575
|
||||
1243,474
|
||||
64,744
|
||||
345,250
|
||||
184,869
|
||||
1121,708
|
||||
196,371
|
||||
304,56
|
||||
55,186
|
||||
1099,588
|
||||
20,378
|
||||
1307,774
|
||||
1019,138
|
||||
1072,866
|
||||
393,206
|
||||
716,739
|
||||
274,467
|
||||
393,319
|
||||
17,257
|
||||
965,250
|
||||
453,539
|
||||
1206,831
|
||||
1063,544
|
||||
723,166
|
||||
182,438
|
||||
1246,441
|
||||
242,798
|
||||
157,715
|
||||
1221,269
|
||||
805,756
|
||||
1150,357
|
||||
189,312
|
||||
253,196
|
||||
853,499
|
||||
427,84
|
||||
590,520
|
||||
1111,691
|
||||
793,121
|
||||
1251,142
|
||||
1161,298
|
||||
967,448
|
||||
304,836
|
||||
244,638
|
||||
775,691
|
||||
848,327
|
||||
229,196
|
||||
686,641
|
||||
349,467
|
||||
1121,312
|
||||
405,158
|
||||
1227,187
|
||||
500,253
|
||||
796,642
|
||||
137,582
|
||||
1304,868
|
||||
893,26
|
||||
730,387
|
||||
581,308
|
||||
1263,700
|
||||
52,467
|
||||
812,698
|
||||
35,858
|
||||
472,723
|
||||
743,767
|
||||
465,599
|
||||
1048,710
|
||||
238,866
|
||||
473,77
|
||||
674,527
|
||||
1001,705
|
||||
383,634
|
||||
1305,379
|
||||
1071,145
|
||||
659,288
|
||||
1042,159
|
||||
1087,254
|
||||
1252,588
|
||||
411,208
|
||||
790,775
|
||||
241,400
|
||||
917,43
|
||||
1280,726
|
||||
1001,250
|
||||
393,240
|
||||
930,719
|
||||
965,189
|
||||
223,192
|
||||
248,84
|
||||
1267,467
|
||||
43,243
|
||||
436,488
|
||||
1069,781
|
||||
1129,525
|
||||
682,292
|
||||
1248,214
|
||||
1099,306
|
||||
457,395
|
||||
867,476
|
||||
800,232
|
||||
1063,824
|
||||
863,19
|
||||
296,417
|
||||
831,229
|
||||
219,345
|
||||
648,698
|
||||
512,25
|
||||
62,680
|
||||
223,455
|
||||
5,481
|
||||
477,756
|
||||
1256,630
|
||||
1141,171
|
||||
582,520
|
||||
965,392
|
||||
114,621
|
||||
319,737
|
||||
334,499
|
||||
813,534
|
||||
1078,600
|
||||
228,446
|
||||
577,288
|
||||
60,539
|
||||
1176,869
|
||||
309,196
|
||||
607,640
|
||||
182,31
|
||||
1217,145
|
||||
330,180
|
||||
360,257
|
||||
95,144
|
||||
407,483
|
||||
517,569
|
||||
999,830
|
||||
1058,163
|
||||
639,247
|
||||
6,26
|
||||
1141,771
|
||||
1079,428
|
||||
177,472
|
||||
231,728
|
||||
920,662
|
||||
134,775
|
||||
309,257
|
||||
321,588
|
||||
671,827
|
||||
801,413
|
||||
243,187
|
||||
691,53
|
||||
547,186
|
||||
845,569
|
||||
510,415
|
||||
247,96
|
||||
771,306
|
||||
392,486
|
||||
1017,619
|
||||
607,702
|
||||
899,208
|
||||
656,842
|
||||
1017,395
|
||||
1205,68
|
||||
484,26
|
||||
375,442
|
||||
145,616
|
||||
1116,185
|
||||
463,120
|
||||
1203,773
|
||||
714,735
|
||||
425,739
|
||||
651,102
|
||||
838,662
|
||||
672,117
|
||||
1131,211
|
||||
1128,367
|
||||
691,36
|
||||
662,868
|
||||
281,19
|
||||
127,651
|
||||
219,840
|
||||
309,54
|
||||
845,325
|
||||
408,836
|
||||
517,728
|
||||
388,414
|
||||
1208,539
|
||||
82,246
|
||||
1289,254
|
||||
1168,8
|
||||
1289,640
|
||||
396,40
|
||||
882,807
|
||||
281,106
|
||||
228,894
|
||||
283,243
|
||||
321,435
|
||||
897,494
|
||||
547,392
|
||||
1170,455
|
||||
1096,166
|
||||
1061,606
|
||||
1223,463
|
||||
182,456
|
||||
874,404
|
||||
648,26
|
||||
908,731
|
||||
671,624
|
||||
720,632
|
||||
406,161
|
||||
349,875
|
||||
98,5
|
||||
1049,127
|
||||
803,211
|
||||
218,266
|
||||
1212,889
|
||||
704,635
|
||||
345,257
|
||||
1103,875
|
||||
658,257
|
||||
475,278
|
||||
552,701
|
||||
120,775
|
||||
761,714
|
||||
458,371
|
||||
519,774
|
||||
169,771
|
||||
892,519
|
||||
510,8
|
||||
343,662
|
||||
803,683
|
||||
1091,569
|
||||
1238,627
|
||||
182,415
|
||||
462,567
|
||||
1285,728
|
||||
897,158
|
||||
639,647
|
||||
422,376
|
||||
2,196
|
||||
1064,32
|
||||
758,193
|
||||
80,512
|
||||
746,374
|
||||
231,166
|
||||
393,215
|
||||
1252,119
|
||||
1293,705
|
||||
885,155
|
||||
206,791
|
||||
681,203
|
||||
93,145
|
||||
247,544
|
||||
443,418
|
||||
145,593
|
||||
1119,432
|
||||
917,319
|
||||
652,250
|
||||
1031,194
|
||||
672,777
|
||||
62,255
|
||||
674,695
|
||||
234,144
|
||||
15,176
|
||||
758,803
|
||||
624,253
|
||||
328,724
|
||||
654,842
|
||||
243,208
|
||||
1215,280
|
||||
1118,869
|
||||
1017,548
|
||||
304,376
|
||||
907,715
|
||||
170,26
|
||||
514,439
|
||||
299,120
|
||||
159,792
|
||||
559,78
|
||||
371,651
|
||||
1191,467
|
||||
986,637
|
||||
656,415
|
||||
639,278
|
||||
999,446
|
||||
965,698
|
||||
268,567
|
||||
333,683
|
||||
530,537
|
||||
793,728
|
||||
865,704
|
||||
803,879
|
||||
1079,302
|
||||
513,327
|
||||
95,78
|
||||
350,616
|
||||
436,628
|
||||
84,833
|
||||
1001,840
|
||||
343,232
|
||||
134,7
|
||||
1091,345
|
||||
1243,207
|
||||
1047,472
|
||||
1068,385
|
||||
417,26
|
||||
969,474
|
||||
989,528
|
||||
95,868
|
||||
1228,246
|
||||
668,469
|
||||
5,637
|
||||
1186,679
|
||||
345,644
|
||||
1066,256
|
||||
629,71
|
||||
281,754
|
||||
103,315
|
||||
724,182
|
||||
228,453
|
||||
1310,191
|
||||
1153,795
|
||||
770,273
|
||||
1031,700
|
||||
933,593
|
||||
539,82
|
||||
798,25
|
||||
783,634
|
||||
261,127
|
||||
488,357
|
||||
723,838
|
||||
1200,878
|
||||
497,179
|
||||
780,357
|
||||
837,749
|
||||
49,301
|
||||
898,294
|
||||
596,306
|
||||
1011,120
|
||||
241,333
|
||||
589,414
|
||||
982,170
|
||||
309,189
|
||||
574,830
|
||||
1001,196
|
||||
1044,865
|
||||
1304,698
|
||||
977,77
|
||||
417,756
|
||||
1150,89
|
||||
577,382
|
||||
736,730
|
||||
254,374
|
||||
649,481
|
||||
413,669
|
||||
90,879
|
||||
933,861
|
||||
42,215
|
||||
330,238
|
||||
887,235
|
||||
611,427
|
||||
642,21
|
||||
893,138
|
||||
1104,103
|
||||
612,579
|
||||
754,0
|
||||
472,8
|
||||
386,24
|
||||
433,490
|
||||
1196,397
|
||||
567,15
|
||||
1062,138
|
||||
231,302
|
||||
115,12
|
||||
960,616
|
||||
345,189
|
||||
805,876
|
||||
303,847
|
||||
89,420
|
||||
1006,58
|
||||
378,373
|
||||
393,43
|
||||
3,736
|
||||
875,345
|
||||
264,456
|
||||
800,886
|
||||
1252,63
|
||||
535,203
|
||||
875,54
|
||||
1006,388
|
||||
965,54
|
||||
89,625
|
||||
248,609
|
||||
15,616
|
||||
60,851
|
||||
268,159
|
||||
826,26
|
||||
525,499
|
||||
119,467
|
||||
1103,691
|
||||
879,192
|
||||
246,32
|
||||
266,865
|
||||
934,819
|
||||
254,491
|
||||
830,694
|
||||
505,18
|
||||
671,247
|
||||
559,302
|
||||
582,72
|
||||
246,557
|
||||
611,651
|
||||
1039,634
|
||||
736,830
|
||||
333,354
|
||||
189,536
|
||||
418,879
|
||||
433,819
|
||||
967,446
|
||||
1285,519
|
||||
692,467
|
||||
965,257
|
||||
739,259
|
||||
492,703
|
||||
54,404
|
||||
845,179
|
||||
462,697
|
||||
661,257
|
||||
1215,144
|
||||
738,190
|
||||
274,427
|
||||
1285,166
|
||||
95,18
|
||||
1255,186
|
||||
247,126
|
||||
36,467
|
||||
75,603
|
||||
641,250
|
||||
1154,238
|
||||
1121,569
|
||||
1063,70
|
||||
1099,754
|
||||
333,316
|
||||
1074,598
|
||||
418,519
|
||||
710,264
|
||||
1280,850
|
||||
658,644
|
||||
45,315
|
||||
335,65
|
||||
375,252
|
||||
1036,175
|
||||
634,135
|
||||
89,474
|
||||
607,666
|
||||
651,606
|
||||
840,869
|
||||
1191,691
|
||||
590,632
|
||||
709,121
|
||||
874,490
|
||||
1262,595
|
||||
991,289
|
||||
728,72
|
||||
1096,614
|
||||
83,187
|
||||
739,824
|
||||
892,851
|
||||
1016,819
|
||||
1051,32
|
||||
455,203
|
||||
965,642
|
||||
247,350
|
||||
624,402
|
||||
721,567
|
||||
937,875
|
||||
|
||||
fold along x=655
|
||||
fold along y=447
|
||||
fold along x=327
|
||||
fold along y=223
|
||||
fold along x=163
|
||||
fold along y=111
|
||||
fold along x=81
|
||||
fold along y=55
|
||||
fold along x=40
|
||||
fold along y=27
|
||||
fold along y=13
|
||||
fold along y=6
|
||||
@@ -0,0 +1,53 @@
|
||||
import csv
|
||||
from collections import Counter, defaultdict
|
||||
template, rules = """
|
||||
NNCB
|
||||
|
||||
CH -> B
|
||||
HH -> N
|
||||
CB -> H
|
||||
NH -> C
|
||||
HB -> C
|
||||
HC -> B
|
||||
HN -> C
|
||||
NN -> C
|
||||
BH -> H
|
||||
NC -> B
|
||||
NB -> B
|
||||
BN -> B
|
||||
BB -> N
|
||||
BC -> B
|
||||
CC -> N
|
||||
CN -> C
|
||||
""".strip().split('\n\n')
|
||||
with open("input") as f:
|
||||
template, rules = f.read().strip().split('\n\n')
|
||||
rules = {k: v for k, v in (line.split(' -> ') for line in rules.split('\n'))}
|
||||
|
||||
def f(template):
|
||||
for _ in range(5):
|
||||
new_template = []
|
||||
for a, b in zip(template, template[1:]):
|
||||
if a+b in rules:
|
||||
new_template.append(a+rules[a+b])
|
||||
else:
|
||||
new_template.append(a)
|
||||
new_template.append(template[-1])
|
||||
new_template = ''.join(new_template)
|
||||
template = new_template
|
||||
return template
|
||||
|
||||
c = Counter(f(f(template)))
|
||||
print(max(c.values()) - min(c.values()))
|
||||
|
||||
class MyCounter(Counter):
|
||||
def __mul__(self, n):
|
||||
return MyCounter({k: v*n for k, v in self.items()})
|
||||
|
||||
d = MyCounter(zip(template, template[1:]))
|
||||
for _ in range(8):
|
||||
d = sum((MyCounter(zip(l:=f(''.join(x)), l[1:]))*v for x, v in d.items()), start=MyCounter())
|
||||
res = defaultdict(int)
|
||||
for (a, b), v in d.items():
|
||||
res[b] += v
|
||||
print((max(res.values()) - min(res.values())))
|
||||
@@ -0,0 +1,102 @@
|
||||
VPPHOPVVSFSVFOCOSBKF
|
||||
|
||||
CO -> B
|
||||
CV -> N
|
||||
HV -> H
|
||||
ON -> O
|
||||
FS -> F
|
||||
NS -> S
|
||||
VK -> C
|
||||
BV -> F
|
||||
SC -> N
|
||||
NV -> V
|
||||
NC -> F
|
||||
NH -> B
|
||||
BO -> K
|
||||
FC -> H
|
||||
NB -> H
|
||||
HO -> F
|
||||
SB -> N
|
||||
KP -> V
|
||||
OS -> C
|
||||
OB -> P
|
||||
SH -> N
|
||||
BC -> H
|
||||
CK -> H
|
||||
SO -> N
|
||||
SP -> P
|
||||
CF -> P
|
||||
KV -> F
|
||||
CS -> V
|
||||
FF -> P
|
||||
VS -> V
|
||||
CP -> S
|
||||
PH -> V
|
||||
OP -> K
|
||||
KH -> B
|
||||
FB -> S
|
||||
CN -> H
|
||||
KS -> P
|
||||
FN -> O
|
||||
PV -> O
|
||||
VC -> S
|
||||
HF -> N
|
||||
OC -> O
|
||||
PK -> V
|
||||
KC -> C
|
||||
HK -> C
|
||||
PO -> N
|
||||
OO -> S
|
||||
VH -> N
|
||||
CC -> K
|
||||
BP -> K
|
||||
HC -> K
|
||||
FV -> K
|
||||
KF -> V
|
||||
VF -> C
|
||||
HN -> S
|
||||
VP -> B
|
||||
HH -> O
|
||||
FO -> O
|
||||
PC -> N
|
||||
KK -> C
|
||||
PN -> P
|
||||
NN -> C
|
||||
FH -> N
|
||||
VV -> O
|
||||
OK -> V
|
||||
CB -> N
|
||||
SN -> H
|
||||
VO -> H
|
||||
BB -> C
|
||||
PB -> F
|
||||
NF -> P
|
||||
KO -> S
|
||||
PP -> K
|
||||
NO -> O
|
||||
SF -> N
|
||||
KN -> S
|
||||
PS -> O
|
||||
VN -> V
|
||||
SS -> N
|
||||
BF -> O
|
||||
HP -> H
|
||||
HS -> N
|
||||
BS -> S
|
||||
VB -> F
|
||||
PF -> K
|
||||
SV -> V
|
||||
BH -> P
|
||||
FP -> O
|
||||
CH -> P
|
||||
OH -> K
|
||||
OF -> F
|
||||
HB -> V
|
||||
FK -> V
|
||||
BN -> V
|
||||
SK -> F
|
||||
OV -> C
|
||||
NP -> S
|
||||
NK -> S
|
||||
BK -> C
|
||||
KB -> F
|
||||
Reference in New Issue
Block a user