Day 4: Add Python solution
This commit is contained in:
parent
5766390cb0
commit
dcaada736d
3 changed files with 658 additions and 0 deletions
601
04/input.txt
Normal file
601
04/input.txt
Normal file
|
@ -0,0 +1,601 @@
|
|||
91,17,64,45,8,13,47,19,52,68,63,76,82,44,28,56,37,2,78,48,32,58,72,53,9,85,77,89,36,22,49,86,51,99,6,92,80,87,7,25,31,66,84,4,98,67,46,61,59,79,0,3,38,27,23,95,20,35,14,30,26,33,42,93,12,57,11,54,50,75,90,41,88,96,40,81,24,94,18,39,70,34,21,55,5,29,71,83,1,60,74,69,10,62,43,73,97,65,15,16
|
||||
|
||||
83 40 67 98 4
|
||||
50 74 31 30 3
|
||||
75 64 79 61 5
|
||||
12 59 26 25 72
|
||||
36 33 18 54 10
|
||||
|
||||
68 56 28 57 12
|
||||
78 66 20 85 51
|
||||
35 23 7 99 44
|
||||
86 37 8 45 49
|
||||
40 77 32 6 88
|
||||
|
||||
75 15 20 79 8
|
||||
81 69 54 33 28
|
||||
9 53 48 95 27
|
||||
65 84 40 71 36
|
||||
13 31 6 68 29
|
||||
|
||||
94 6 30 16 74
|
||||
91 47 66 31 90
|
||||
14 56 45 55 20
|
||||
58 70 27 46 73
|
||||
77 67 97 51 54
|
||||
|
||||
60 12 49 80 52
|
||||
15 27 85 82 48
|
||||
21 76 83 55 54
|
||||
8 5 4 38 47
|
||||
73 2 86 44 99
|
||||
|
||||
64 60 6 38 37
|
||||
3 69 21 24 11
|
||||
36 88 16 55 41
|
||||
78 7 81 95 91
|
||||
27 34 92 39 30
|
||||
|
||||
38 57 20 68 49
|
||||
21 18 69 97 60
|
||||
34 92 0 59 62
|
||||
10 43 93 87 64
|
||||
53 35 94 76 61
|
||||
|
||||
48 74 58 13 54
|
||||
57 18 37 92 78
|
||||
89 10 25 97 43
|
||||
38 99 64 6 66
|
||||
21 83 29 93 95
|
||||
|
||||
94 37 98 87 51
|
||||
50 65 77 83 95
|
||||
68 4 91 53 32
|
||||
56 26 15 2 80
|
||||
20 55 58 81 33
|
||||
|
||||
73 32 66 38 89
|
||||
18 79 40 78 55
|
||||
26 63 93 60 98
|
||||
42 65 96 47 57
|
||||
45 75 72 23 35
|
||||
|
||||
64 28 21 80 27
|
||||
93 58 71 67 11
|
||||
61 20 74 13 90
|
||||
76 35 46 94 40
|
||||
92 2 4 85 69
|
||||
|
||||
22 70 87 31 61
|
||||
74 78 58 4 90
|
||||
63 28 24 35 84
|
||||
59 8 89 88 47
|
||||
17 48 80 33 32
|
||||
|
||||
57 7 30 39 19
|
||||
1 13 41 15 50
|
||||
44 72 2 5 70
|
||||
34 93 60 80 69
|
||||
49 14 25 10 33
|
||||
|
||||
45 41 77 89 27
|
||||
68 99 11 32 95
|
||||
15 4 72 98 52
|
||||
53 28 14 75 44
|
||||
57 9 62 92 69
|
||||
|
||||
7 21 2 73 40
|
||||
52 60 57 53 65
|
||||
63 86 36 82 44
|
||||
14 28 39 12 80
|
||||
66 64 91 50 51
|
||||
|
||||
82 5 38 41 95
|
||||
70 52 11 21 51
|
||||
81 20 0 14 83
|
||||
57 36 60 59 42
|
||||
77 13 85 32 63
|
||||
|
||||
91 40 42 3 50
|
||||
22 24 81 31 93
|
||||
9 79 82 43 89
|
||||
6 77 76 26 37
|
||||
29 8 53 23 4
|
||||
|
||||
7 78 32 44 74
|
||||
29 3 84 38 79
|
||||
58 41 87 88 30
|
||||
68 19 72 81 47
|
||||
15 63 52 6 26
|
||||
|
||||
20 41 92 84 25
|
||||
9 4 96 85 66
|
||||
49 15 50 89 19
|
||||
48 45 82 86 60
|
||||
29 18 53 47 16
|
||||
|
||||
75 39 45 31 73
|
||||
91 86 69 94 66
|
||||
28 61 17 20 0
|
||||
88 21 89 41 37
|
||||
35 2 10 18 82
|
||||
|
||||
80 23 4 73 93
|
||||
89 8 20 12 45
|
||||
74 99 58 90 67
|
||||
50 85 35 88 55
|
||||
18 65 42 47 48
|
||||
|
||||
16 38 65 64 25
|
||||
20 74 37 15 82
|
||||
23 76 97 48 53
|
||||
60 93 85 1 35
|
||||
77 10 59 2 58
|
||||
|
||||
11 9 57 40 46
|
||||
35 88 29 52 17
|
||||
30 2 7 6 0
|
||||
13 63 44 68 59
|
||||
83 98 5 50 65
|
||||
|
||||
82 40 2 14 50
|
||||
7 31 91 19 11
|
||||
51 42 56 44 6
|
||||
66 74 22 95 64
|
||||
63 1 17 86 24
|
||||
|
||||
18 19 66 63 80
|
||||
65 23 74 22 85
|
||||
5 7 37 75 51
|
||||
38 58 68 83 32
|
||||
40 29 31 15 43
|
||||
|
||||
37 54 13 77 31
|
||||
57 96 28 87 95
|
||||
10 11 19 49 45
|
||||
12 21 79 56 24
|
||||
34 64 84 69 17
|
||||
|
||||
6 33 48 61 0
|
||||
85 34 7 84 37
|
||||
25 46 59 76 82
|
||||
18 62 20 44 2
|
||||
12 78 60 56 99
|
||||
|
||||
95 6 1 39 2
|
||||
46 34 28 64 22
|
||||
48 23 89 56 55
|
||||
44 81 82 43 74
|
||||
65 31 94 49 91
|
||||
|
||||
69 42 27 52 54
|
||||
79 60 62 83 38
|
||||
5 21 56 48 99
|
||||
51 40 15 7 24
|
||||
92 10 66 64 88
|
||||
|
||||
99 18 22 52 81
|
||||
21 42 13 71 59
|
||||
91 38 68 10 25
|
||||
54 19 76 60 24
|
||||
41 92 2 3 64
|
||||
|
||||
76 5 25 55 84
|
||||
70 15 89 67 68
|
||||
34 86 11 4 6
|
||||
9 23 43 41 52
|
||||
58 10 88 38 0
|
||||
|
||||
83 91 85 81 86
|
||||
5 10 89 6 48
|
||||
45 77 2 9 90
|
||||
74 8 57 75 67
|
||||
73 30 49 96 15
|
||||
|
||||
66 13 82 89 20
|
||||
5 67 94 64 0
|
||||
58 73 4 62 49
|
||||
59 28 75 79 44
|
||||
54 71 57 33 36
|
||||
|
||||
23 36 29 80 30
|
||||
51 91 77 2 84
|
||||
78 90 15 21 75
|
||||
28 93 22 55 16
|
||||
67 50 58 60 68
|
||||
|
||||
82 80 37 91 7
|
||||
54 81 85 25 24
|
||||
33 36 89 30 56
|
||||
83 95 99 48 10
|
||||
4 44 1 55 79
|
||||
|
||||
9 13 53 20 26
|
||||
7 31 49 84 58
|
||||
51 91 90 68 55
|
||||
19 38 23 81 33
|
||||
34 99 85 37 54
|
||||
|
||||
44 66 81 78 15
|
||||
31 14 48 65 0
|
||||
26 10 20 4 41
|
||||
77 68 95 34 73
|
||||
74 12 36 3 60
|
||||
|
||||
6 24 78 58 36
|
||||
30 51 75 13 40
|
||||
17 1 3 42 59
|
||||
64 20 4 18 79
|
||||
37 61 84 63 7
|
||||
|
||||
41 83 1 75 18
|
||||
14 56 67 32 22
|
||||
69 80 46 84 49
|
||||
72 21 9 10 35
|
||||
4 37 28 40 12
|
||||
|
||||
56 80 47 17 70
|
||||
12 22 77 81 11
|
||||
61 30 58 60 71
|
||||
52 0 25 86 65
|
||||
59 28 79 20 26
|
||||
|
||||
70 75 81 18 67
|
||||
2 85 73 8 17
|
||||
74 3 34 92 30
|
||||
51 72 84 56 45
|
||||
37 90 31 97 78
|
||||
|
||||
2 73 71 43 69
|
||||
6 54 89 57 93
|
||||
81 0 39 25 90
|
||||
79 27 92 29 15
|
||||
45 76 87 11 91
|
||||
|
||||
98 35 51 49 34
|
||||
23 12 77 27 82
|
||||
6 89 0 76 46
|
||||
81 48 99 45 90
|
||||
10 75 17 96 29
|
||||
|
||||
45 19 82 93 0
|
||||
84 24 73 2 98
|
||||
94 46 7 48 56
|
||||
80 34 5 18 31
|
||||
58 33 83 29 55
|
||||
|
||||
66 81 99 54 63
|
||||
21 94 72 77 64
|
||||
58 52 85 46 68
|
||||
5 6 78 42 4
|
||||
76 38 51 24 33
|
||||
|
||||
93 26 5 59 67
|
||||
13 84 76 4 69
|
||||
0 17 30 83 48
|
||||
8 53 32 14 92
|
||||
94 18 66 46 61
|
||||
|
||||
28 48 38 6 25
|
||||
70 39 71 77 22
|
||||
66 94 18 43 36
|
||||
30 67 57 9 90
|
||||
15 34 50 3 86
|
||||
|
||||
11 90 99 92 87
|
||||
78 79 56 21 50
|
||||
19 18 22 20 30
|
||||
95 41 59 85 26
|
||||
66 58 46 38 57
|
||||
|
||||
49 92 2 93 77
|
||||
46 89 44 57 19
|
||||
53 8 32 18 88
|
||||
54 95 59 70 10
|
||||
72 84 86 42 81
|
||||
|
||||
44 78 25 4 57
|
||||
72 7 42 94 8
|
||||
61 79 11 29 59
|
||||
22 82 6 90 12
|
||||
98 77 5 68 50
|
||||
|
||||
48 41 64 15 57
|
||||
76 7 52 53 93
|
||||
70 84 94 38 35
|
||||
47 18 13 51 21
|
||||
77 62 63 3 65
|
||||
|
||||
31 33 48 79 69
|
||||
30 9 83 53 50
|
||||
60 94 36 2 28
|
||||
59 19 10 5 40
|
||||
26 41 72 14 96
|
||||
|
||||
0 16 49 75 17
|
||||
28 20 21 99 94
|
||||
15 8 4 68 71
|
||||
23 53 76 19 74
|
||||
79 61 72 70 52
|
||||
|
||||
70 89 12 80 76
|
||||
14 18 16 4 91
|
||||
34 64 43 51 71
|
||||
6 78 30 5 13
|
||||
57 42 15 73 24
|
||||
|
||||
64 99 72 41 54
|
||||
21 29 25 40 9
|
||||
92 48 82 70 98
|
||||
65 62 8 78 27
|
||||
71 86 36 34 23
|
||||
|
||||
23 19 72 77 63
|
||||
85 0 61 40 14
|
||||
69 76 18 56 95
|
||||
68 66 28 79 13
|
||||
83 84 45 89 2
|
||||
|
||||
18 40 28 70 37
|
||||
80 30 67 96 34
|
||||
77 25 97 32 11
|
||||
48 46 89 14 29
|
||||
2 8 95 0 12
|
||||
|
||||
0 26 1 9 30
|
||||
17 2 78 18 65
|
||||
84 7 61 93 81
|
||||
80 44 82 23 99
|
||||
72 95 19 60 28
|
||||
|
||||
37 39 0 20 21
|
||||
91 36 93 16 22
|
||||
53 95 26 72 25
|
||||
97 33 60 55 65
|
||||
79 56 73 29 75
|
||||
|
||||
22 58 99 57 28
|
||||
2 56 93 91 18
|
||||
44 64 92 85 46
|
||||
70 47 89 27 54
|
||||
83 5 48 97 72
|
||||
|
||||
72 1 73 68 36
|
||||
31 8 14 41 35
|
||||
23 96 7 92 83
|
||||
56 39 77 93 91
|
||||
20 28 67 10 11
|
||||
|
||||
62 27 17 54 0
|
||||
35 60 73 20 5
|
||||
23 58 46 99 75
|
||||
19 53 79 70 88
|
||||
31 85 77 1 32
|
||||
|
||||
22 90 81 42 55
|
||||
70 78 86 19 94
|
||||
1 43 15 33 51
|
||||
84 96 87 58 6
|
||||
49 64 4 59 23
|
||||
|
||||
82 63 58 75 89
|
||||
35 37 52 80 24
|
||||
93 50 76 79 1
|
||||
86 59 30 92 7
|
||||
42 11 55 70 22
|
||||
|
||||
83 3 71 28 95
|
||||
70 23 68 57 1
|
||||
60 6 19 63 32
|
||||
64 55 97 81 49
|
||||
91 80 88 5 35
|
||||
|
||||
23 68 51 62 20
|
||||
70 52 98 34 41
|
||||
12 21 85 43 84
|
||||
69 49 36 28 0
|
||||
76 30 58 91 60
|
||||
|
||||
30 72 6 41 43
|
||||
67 79 46 96 99
|
||||
58 71 39 87 69
|
||||
17 18 11 57 25
|
||||
45 75 16 33 42
|
||||
|
||||
22 75 24 74 90
|
||||
34 70 44 86 23
|
||||
29 59 68 4 48
|
||||
88 45 92 27 49
|
||||
47 77 26 99 82
|
||||
|
||||
42 29 21 74 33
|
||||
64 37 38 50 84
|
||||
46 44 41 1 67
|
||||
53 66 96 68 59
|
||||
6 94 11 31 99
|
||||
|
||||
24 32 71 87 57
|
||||
42 26 55 80 99
|
||||
82 27 16 19 92
|
||||
96 48 62 31 61
|
||||
60 89 95 18 6
|
||||
|
||||
99 33 55 71 29
|
||||
75 37 23 27 98
|
||||
2 78 90 18 35
|
||||
59 10 56 0 6
|
||||
12 19 76 70 96
|
||||
|
||||
33 37 23 61 80
|
||||
6 13 68 51 76
|
||||
92 25 3 95 55
|
||||
99 63 17 52 30
|
||||
11 94 42 5 98
|
||||
|
||||
77 37 25 14 73
|
||||
95 90 10 19 72
|
||||
78 30 44 47 91
|
||||
3 60 32 5 66
|
||||
21 55 87 98 6
|
||||
|
||||
6 60 82 90 98
|
||||
21 70 54 66 27
|
||||
37 64 55 10 14
|
||||
57 25 84 50 20
|
||||
42 59 85 3 73
|
||||
|
||||
74 84 92 10 51
|
||||
57 82 93 90 44
|
||||
41 43 76 48 59
|
||||
79 49 69 16 72
|
||||
37 29 63 15 68
|
||||
|
||||
37 90 97 86 18
|
||||
2 83 30 53 92
|
||||
45 35 78 47 40
|
||||
67 61 17 14 84
|
||||
32 33 81 10 11
|
||||
|
||||
46 48 39 3 50
|
||||
83 29 91 73 67
|
||||
25 43 89 71 36
|
||||
63 62 78 95 18
|
||||
82 34 23 85 11
|
||||
|
||||
19 68 80 50 13
|
||||
1 45 51 27 39
|
||||
98 26 24 46 49
|
||||
14 92 63 88 66
|
||||
15 44 84 47 94
|
||||
|
||||
19 39 93 43 86
|
||||
91 58 3 69 41
|
||||
18 36 95 52 83
|
||||
12 6 22 48 0
|
||||
25 70 40 88 73
|
||||
|
||||
95 11 94 13 14
|
||||
64 87 57 98 49
|
||||
47 88 84 61 2
|
||||
46 21 15 74 59
|
||||
82 73 78 3 51
|
||||
|
||||
18 72 29 7 36
|
||||
96 67 81 78 23
|
||||
43 40 44 47 98
|
||||
41 26 15 90 71
|
||||
42 62 93 70 2
|
||||
|
||||
17 8 59 25 33
|
||||
81 47 55 99 48
|
||||
86 14 71 54 50
|
||||
90 11 23 18 0
|
||||
97 65 82 68 42
|
||||
|
||||
50 54 68 90 83
|
||||
10 28 77 55 61
|
||||
38 60 52 80 44
|
||||
40 81 14 24 87
|
||||
51 82 42 30 8
|
||||
|
||||
54 5 64 22 60
|
||||
70 19 83 11 45
|
||||
46 39 2 56 6
|
||||
61 8 28 20 94
|
||||
0 4 81 34 84
|
||||
|
||||
96 21 48 89 15
|
||||
91 40 9 97 65
|
||||
26 58 10 18 78
|
||||
98 79 29 80 28
|
||||
17 59 43 84 99
|
||||
|
||||
67 73 21 9 31
|
||||
68 37 26 65 84
|
||||
63 24 42 27 40
|
||||
61 25 30 34 35
|
||||
53 23 48 81 29
|
||||
|
||||
24 34 5 67 62
|
||||
89 85 68 37 78
|
||||
42 87 13 49 41
|
||||
74 55 70 86 76
|
||||
73 94 97 63 48
|
||||
|
||||
88 24 6 75 30
|
||||
77 64 16 34 93
|
||||
36 76 0 40 81
|
||||
67 14 89 84 95
|
||||
32 19 18 66 9
|
||||
|
||||
97 71 65 30 69
|
||||
41 21 40 31 33
|
||||
50 55 35 52 53
|
||||
4 51 13 81 72
|
||||
12 83 14 64 18
|
||||
|
||||
97 7 8 74 10
|
||||
3 92 31 25 41
|
||||
20 32 45 72 55
|
||||
1 43 49 98 27
|
||||
99 54 57 13 76
|
||||
|
||||
86 81 67 6 97
|
||||
34 18 96 43 56
|
||||
59 75 17 26 9
|
||||
0 38 60 94 14
|
||||
4 55 64 61 88
|
||||
|
||||
37 15 48 43 66
|
||||
45 54 90 81 47
|
||||
63 64 28 82 93
|
||||
34 52 6 99 61
|
||||
49 12 71 23 46
|
||||
|
||||
90 87 89 97 1
|
||||
48 0 82 60 43
|
||||
55 30 68 25 83
|
||||
78 3 23 16 66
|
||||
98 2 19 63 17
|
||||
|
||||
89 52 49 14 38
|
||||
69 12 50 17 90
|
||||
58 53 26 20 29
|
||||
39 65 43 7 5
|
||||
84 68 94 85 25
|
||||
|
||||
95 25 42 36 47
|
||||
50 54 83 84 37
|
||||
94 70 99 79 18
|
||||
57 8 69 52 31
|
||||
66 20 35 71 38
|
||||
|
||||
81 18 47 68 15
|
||||
3 50 16 83 37
|
||||
34 31 9 57 76
|
||||
74 95 40 63 48
|
||||
13 28 20 43 66
|
||||
|
||||
52 21 62 41 67
|
||||
22 56 36 18 23
|
||||
59 44 27 73 3
|
||||
72 50 19 33 76
|
||||
45 55 70 46 92
|
||||
|
||||
72 96 50 83 68
|
||||
31 78 59 57 93
|
||||
43 58 17 52 35
|
||||
87 34 91 76 0
|
||||
54 75 53 25 62
|
||||
|
||||
21 53 68 5 80
|
||||
47 67 6 81 9
|
||||
64 46 35 26 39
|
||||
50 24 84 45 71
|
||||
66 15 83 3 97
|
||||
|
||||
22 97 31 90 63
|
||||
21 51 38 74 78
|
||||
10 64 92 82 1
|
||||
70 12 75 16 14
|
||||
68 50 35 73 26
|
29
04/solution_1.py
Executable file
29
04/solution_1.py
Executable file
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env python3
|
||||
with open("input.txt", "r") as _input:
|
||||
seq = [int(n) for n in _input.readline().rstrip().split(",")]
|
||||
boards = []
|
||||
|
||||
for line in _input.readlines():
|
||||
if len(line.rstrip()) == 0:
|
||||
boards.append([])
|
||||
else:
|
||||
boards[-1].append([int(n) for n in line.split()])
|
||||
|
||||
for num in seq:
|
||||
for board in boards:
|
||||
def calcscore():
|
||||
for row in board:
|
||||
if num in row:
|
||||
row[row.index(num)] = False
|
||||
if row == [False] * len(row):
|
||||
return True
|
||||
for column in zip(*board[::-1]):
|
||||
if list(column) == [False] * len(column):
|
||||
return True
|
||||
|
||||
if (calcscore()):
|
||||
score = num * sum([sum(row) for row in board])
|
||||
|
||||
if "score" in locals():
|
||||
print("Answer:", score)
|
||||
break
|
28
04/solution_2.py
Executable file
28
04/solution_2.py
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env python3
|
||||
with open("input.txt", "r") as _input:
|
||||
seq = [int(n) for n in _input.readline().rstrip().split(",")]
|
||||
boards = []
|
||||
|
||||
for line in _input.readlines():
|
||||
if len(line.rstrip()) == 0:
|
||||
boards.append([])
|
||||
else:
|
||||
boards[-1].append([int(n) for n in line.split()])
|
||||
|
||||
for num in seq:
|
||||
for board in boards:
|
||||
def calcscore():
|
||||
for row in board:
|
||||
if num in row:
|
||||
row[row.index(num)] = False
|
||||
if row == [False] * len(row):
|
||||
return True
|
||||
for column in zip(*board[::-1]):
|
||||
if list(column) == [False] * len(column):
|
||||
return True
|
||||
|
||||
if (calcscore()):
|
||||
score = num * sum([sum(row) for row in board])
|
||||
board.clear()
|
||||
|
||||
print("Answer:", score)
|
Loading…
Reference in a new issue