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