Syncing z2
This commit is contained in:
@@ -51,10 +51,10 @@ for one_item in working_list:
|
|||||||
if one_item['ecl'] in ['amb', 'blu', 'brn', 'gry', 'grn','hzl', 'oth']:
|
if one_item['ecl'] in ['amb', 'blu', 'brn', 'gry', 'grn','hzl', 'oth']:
|
||||||
test_check += 1
|
test_check += 1
|
||||||
test_str = test_str + "eye|"
|
test_str = test_str + "eye|"
|
||||||
if set('0123456789').issubset(one_item['pid']) and len(one_item['pid']) == 9:
|
if len(one_item['pid']) == 9:
|
||||||
test_check += 1
|
test_check += 1
|
||||||
test_str = test_str + "passport|"
|
test_str = test_str + "passport|"
|
||||||
if test_check == 8:
|
if test_check == 7:
|
||||||
valid_count += 1
|
valid_count += 1
|
||||||
print(test_check)
|
print(test_check)
|
||||||
print(test_str)
|
print(test_str)
|
||||||
|
|||||||
1601
2021/03.input
1601
2021/03.input
File diff suppressed because it is too large
Load Diff
49
2021/04-1.py
Normal file
49
2021/04-1.py
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
class Board:
|
||||||
|
def __init__(self, board):
|
||||||
|
self.board = board
|
||||||
|
self.width = len(self.board[0])
|
||||||
|
self.height = len(self.board)
|
||||||
|
self.matches = [[False] * self.width for _ in range(self.height)]
|
||||||
|
self.last_number = 0
|
||||||
|
|
||||||
|
def check_number(self, number):
|
||||||
|
self.last_number = number
|
||||||
|
for i in range(self.width):
|
||||||
|
for j in range(self.height):
|
||||||
|
if self.board[i][j] == number:
|
||||||
|
self.matches[i][j] = True
|
||||||
|
|
||||||
|
def check_win(self):
|
||||||
|
return (any(all(row) for row in self.matches) or
|
||||||
|
any(all(col) for col in zip(*self.matches)))
|
||||||
|
|
||||||
|
def sum_score(self):
|
||||||
|
match_sum = 0
|
||||||
|
for i in range(self.width):
|
||||||
|
for j in range(self.height):
|
||||||
|
if not self.matches[i][j]:
|
||||||
|
match_sum += int(self.board[i][j])
|
||||||
|
return match_sum
|
||||||
|
|
||||||
|
|
||||||
|
with open('2021/04.input') as f:
|
||||||
|
numbers, *boards = f.read().rstrip().split('\n\n')
|
||||||
|
|
||||||
|
numbers = [int(num) for num in numbers.split(',')]
|
||||||
|
|
||||||
|
boards = [[line.split() for line in board.split('\n')] for board in boards]
|
||||||
|
boards = [[[int(elt) for elt in line] for line in board] for board in boards]
|
||||||
|
boards = [Board(board) for board in boards]
|
||||||
|
|
||||||
|
winners = []
|
||||||
|
for number in numbers:
|
||||||
|
for i in range(len(boards) - 1, -1, -1):
|
||||||
|
boards[i].check_number(number)
|
||||||
|
if boards[i].check_win():
|
||||||
|
winners.append(boards[i])
|
||||||
|
boards.pop(i)
|
||||||
|
|
||||||
|
first = winners[0]
|
||||||
|
last = winners[-1]
|
||||||
|
print(first.sum_score() * first.last_number)
|
||||||
|
print(last.sum_score() * last.last_number)
|
||||||
601
2021/04.input
Normal file
601
2021/04.input
Normal file
@@ -0,0 +1,601 @@
|
|||||||
|
6,69,28,50,36,84,49,13,48,90,1,33,71,0,94,59,53,58,60,96,30,34,29,91,11,41,77,95,17,80,85,93,7,9,74,89,18,25,26,8,87,38,68,5,12,43,27,46,62,73,16,55,22,4,65,76,54,52,83,10,21,67,15,47,45,40,35,66,79,51,75,39,64,24,37,72,3,44,82,32,78,63,57,2,86,31,19,92,14,97,20,56,88,81,70,61,42,99,23,98
|
||||||
|
|
||||||
|
22 59 7 10 6
|
||||||
|
33 36 96 55 23
|
||||||
|
13 85 18 29 28
|
||||||
|
75 46 83 73 58
|
||||||
|
34 40 87 56 98
|
||||||
|
|
||||||
|
73 96 47 14 10
|
||||||
|
28 11 79 84 20
|
||||||
|
74 30 0 59 71
|
||||||
|
80 93 42 22 17
|
||||||
|
44 2 81 29 15
|
||||||
|
|
||||||
|
73 32 37 93 39
|
||||||
|
2 87 38 99 97
|
||||||
|
15 12 42 49 33
|
||||||
|
9 23 25 94 19
|
||||||
|
57 4 18 70 79
|
||||||
|
|
||||||
|
43 79 59 71 78
|
||||||
|
51 97 37 28 26
|
||||||
|
46 21 84 8 86
|
||||||
|
96 30 17 34 49
|
||||||
|
55 90 99 75 61
|
||||||
|
|
||||||
|
43 86 35 51 24
|
||||||
|
16 25 29 21 3
|
||||||
|
2 13 4 36 54
|
||||||
|
89 27 8 85 34
|
||||||
|
96 59 65 14 56
|
||||||
|
|
||||||
|
5 57 43 4 1
|
||||||
|
86 80 67 30 20
|
||||||
|
22 16 99 0 14
|
||||||
|
40 25 59 91 54
|
||||||
|
82 95 96 37 24
|
||||||
|
|
||||||
|
97 20 87 66 21
|
||||||
|
25 40 9 78 89
|
||||||
|
52 75 95 63 62
|
||||||
|
32 43 13 47 69
|
||||||
|
53 48 56 29 4
|
||||||
|
|
||||||
|
24 4 65 12 8
|
||||||
|
76 3 81 99 49
|
||||||
|
45 33 31 66 34
|
||||||
|
17 94 75 35 88
|
||||||
|
64 10 7 93 95
|
||||||
|
|
||||||
|
88 20 99 15 83
|
||||||
|
81 40 5 6 98
|
||||||
|
49 74 18 27 9
|
||||||
|
43 69 28 37 71
|
||||||
|
87 82 90 14 47
|
||||||
|
|
||||||
|
21 97 92 42 60
|
||||||
|
11 65 98 95 29
|
||||||
|
2 49 75 20 74
|
||||||
|
56 40 78 66 81
|
||||||
|
68 4 46 77 61
|
||||||
|
|
||||||
|
26 14 39 76 11
|
||||||
|
41 74 34 91 4
|
||||||
|
51 9 97 29 75
|
||||||
|
83 86 23 35 77
|
||||||
|
90 2 49 30 89
|
||||||
|
|
||||||
|
34 97 0 22 15
|
||||||
|
65 60 82 66 47
|
||||||
|
30 9 49 95 48
|
||||||
|
54 73 67 17 78
|
||||||
|
33 96 44 1 32
|
||||||
|
|
||||||
|
90 29 10 49 63
|
||||||
|
8 26 95 61 0
|
||||||
|
54 13 51 12 44
|
||||||
|
32 48 16 47 84
|
||||||
|
55 46 93 14 3
|
||||||
|
|
||||||
|
68 55 46 16 54
|
||||||
|
97 59 49 6 21
|
||||||
|
52 32 15 96 70
|
||||||
|
57 56 61 51 0
|
||||||
|
40 31 62 24 48
|
||||||
|
|
||||||
|
75 56 70 42 14
|
||||||
|
77 9 23 62 25
|
||||||
|
29 27 54 17 2
|
||||||
|
55 72 43 15 96
|
||||||
|
45 30 88 86 1
|
||||||
|
|
||||||
|
65 12 22 6 51
|
||||||
|
77 81 15 91 19
|
||||||
|
80 71 27 89 52
|
||||||
|
75 92 41 83 57
|
||||||
|
40 44 66 84 98
|
||||||
|
|
||||||
|
89 80 73 59 18
|
||||||
|
74 55 67 71 10
|
||||||
|
78 27 37 57 3
|
||||||
|
92 26 17 5 72
|
||||||
|
52 83 28 76 51
|
||||||
|
|
||||||
|
64 0 87 4 13
|
||||||
|
14 43 42 62 31
|
||||||
|
17 84 72 91 83
|
||||||
|
53 80 59 61 74
|
||||||
|
47 22 38 28 77
|
||||||
|
|
||||||
|
65 49 91 94 19
|
||||||
|
25 81 64 57 9
|
||||||
|
50 95 82 12 66
|
||||||
|
53 54 85 36 11
|
||||||
|
31 56 83 18 60
|
||||||
|
|
||||||
|
6 12 76 37 33
|
||||||
|
14 96 16 31 40
|
||||||
|
17 82 27 94 83
|
||||||
|
1 50 49 9 54
|
||||||
|
29 70 59 91 77
|
||||||
|
|
||||||
|
85 0 33 41 16
|
||||||
|
7 86 80 53 65
|
||||||
|
94 19 28 35 32
|
||||||
|
4 55 93 97 63
|
||||||
|
83 22 67 56 36
|
||||||
|
|
||||||
|
28 70 65 17 19
|
||||||
|
88 51 15 73 12
|
||||||
|
11 49 80 23 42
|
||||||
|
26 54 90 75 29
|
||||||
|
74 77 91 86 66
|
||||||
|
|
||||||
|
88 22 83 10 43
|
||||||
|
57 34 15 23 8
|
||||||
|
94 42 68 67 37
|
||||||
|
84 3 6 71 62
|
||||||
|
89 45 72 55 38
|
||||||
|
|
||||||
|
68 27 93 7 15
|
||||||
|
85 96 1 56 6
|
||||||
|
32 2 30 55 17
|
||||||
|
99 90 37 80 50
|
||||||
|
77 78 58 98 57
|
||||||
|
|
||||||
|
5 95 22 13 97
|
||||||
|
19 2 52 92 20
|
||||||
|
75 49 86 31 41
|
||||||
|
51 63 56 33 10
|
||||||
|
82 27 79 94 57
|
||||||
|
|
||||||
|
15 44 91 26 4
|
||||||
|
41 78 53 95 86
|
||||||
|
90 92 46 56 33
|
||||||
|
80 93 68 66 70
|
||||||
|
36 10 38 0 6
|
||||||
|
|
||||||
|
11 47 52 64 17
|
||||||
|
16 60 39 55 78
|
||||||
|
46 18 33 83 35
|
||||||
|
13 92 4 23 50
|
||||||
|
40 5 29 6 90
|
||||||
|
|
||||||
|
20 60 2 23 74
|
||||||
|
43 39 91 75 12
|
||||||
|
58 67 50 29 79
|
||||||
|
10 40 92 95 25
|
||||||
|
13 24 53 72 36
|
||||||
|
|
||||||
|
69 64 15 53 86
|
||||||
|
61 11 48 71 27
|
||||||
|
26 93 38 70 73
|
||||||
|
96 29 30 98 45
|
||||||
|
13 7 31 59 84
|
||||||
|
|
||||||
|
13 55 50 54 57
|
||||||
|
32 24 45 5 77
|
||||||
|
82 86 0 4 99
|
||||||
|
75 72 14 40 56
|
||||||
|
76 94 89 17 30
|
||||||
|
|
||||||
|
66 71 86 41 0
|
||||||
|
80 64 3 29 78
|
||||||
|
23 21 42 99 87
|
||||||
|
96 60 75 61 49
|
||||||
|
2 83 85 12 1
|
||||||
|
|
||||||
|
78 96 4 82 6
|
||||||
|
73 36 57 99 8
|
||||||
|
11 83 15 35 30
|
||||||
|
85 87 25 22 66
|
||||||
|
32 64 16 50 43
|
||||||
|
|
||||||
|
6 39 55 2 4
|
||||||
|
1 61 99 71 80
|
||||||
|
46 88 22 31 60
|
||||||
|
62 66 37 97 76
|
||||||
|
74 34 10 52 24
|
||||||
|
|
||||||
|
42 38 13 65 12
|
||||||
|
4 39 60 62 21
|
||||||
|
81 99 1 69 40
|
||||||
|
59 15 11 95 53
|
||||||
|
91 78 72 30 73
|
||||||
|
|
||||||
|
43 68 82 72 2
|
||||||
|
34 92 33 97 89
|
||||||
|
63 70 9 0 45
|
||||||
|
69 10 12 65 21
|
||||||
|
40 20 55 57 49
|
||||||
|
|
||||||
|
41 22 8 16 49
|
||||||
|
71 64 19 65 92
|
||||||
|
17 10 26 36 29
|
||||||
|
30 88 7 54 11
|
||||||
|
77 55 70 72 47
|
||||||
|
|
||||||
|
15 94 90 6 39
|
||||||
|
99 55 16 54 91
|
||||||
|
18 7 82 44 51
|
||||||
|
25 34 83 14 12
|
||||||
|
30 2 77 27 66
|
||||||
|
|
||||||
|
44 50 74 97 58
|
||||||
|
87 42 56 92 28
|
||||||
|
49 82 52 17 78
|
||||||
|
54 89 63 77 27
|
||||||
|
83 14 24 16 84
|
||||||
|
|
||||||
|
47 32 8 55 22
|
||||||
|
19 14 24 82 4
|
||||||
|
76 73 9 10 64
|
||||||
|
40 6 92 67 17
|
||||||
|
68 44 43 3 54
|
||||||
|
|
||||||
|
26 10 9 92 81
|
||||||
|
46 98 13 0 14
|
||||||
|
68 99 35 18 72
|
||||||
|
74 33 22 61 93
|
||||||
|
80 38 71 6 75
|
||||||
|
|
||||||
|
17 23 54 55 22
|
||||||
|
10 8 60 76 24
|
||||||
|
71 28 16 62 82
|
||||||
|
13 12 21 78 39
|
||||||
|
26 66 89 64 79
|
||||||
|
|
||||||
|
72 12 91 79 99
|
||||||
|
84 18 37 98 41
|
||||||
|
10 71 88 23 24
|
||||||
|
11 34 26 83 74
|
||||||
|
58 27 77 5 8
|
||||||
|
|
||||||
|
9 90 13 0 46
|
||||||
|
6 58 74 92 8
|
||||||
|
75 77 56 76 80
|
||||||
|
55 60 44 68 91
|
||||||
|
67 28 96 66 18
|
||||||
|
|
||||||
|
14 26 54 21 35
|
||||||
|
69 67 16 76 62
|
||||||
|
78 45 87 44 94
|
||||||
|
27 89 39 85 28
|
||||||
|
3 81 93 64 74
|
||||||
|
|
||||||
|
10 28 35 84 76
|
||||||
|
40 11 95 59 57
|
||||||
|
53 4 24 50 45
|
||||||
|
7 43 78 17 81
|
||||||
|
1 74 82 16 27
|
||||||
|
|
||||||
|
6 26 72 53 52
|
||||||
|
51 91 80 11 18
|
||||||
|
20 63 74 25 33
|
||||||
|
79 4 8 59 67
|
||||||
|
3 13 55 81 83
|
||||||
|
|
||||||
|
98 85 27 84 42
|
||||||
|
90 15 17 61 34
|
||||||
|
40 64 86 96 45
|
||||||
|
59 47 53 5 35
|
||||||
|
11 7 41 80 13
|
||||||
|
|
||||||
|
47 48 54 31 76
|
||||||
|
99 32 98 20 15
|
||||||
|
61 41 30 94 37
|
||||||
|
34 59 86 55 45
|
||||||
|
9 83 92 53 3
|
||||||
|
|
||||||
|
3 80 24 94 25
|
||||||
|
17 23 64 76 71
|
||||||
|
20 97 0 56 72
|
||||||
|
95 73 28 59 21
|
||||||
|
14 81 46 67 88
|
||||||
|
|
||||||
|
2 95 5 38 90
|
||||||
|
63 62 11 24 34
|
||||||
|
19 31 57 84 80
|
||||||
|
47 86 36 85 74
|
||||||
|
13 39 73 94 42
|
||||||
|
|
||||||
|
28 6 60 34 15
|
||||||
|
63 36 51 30 92
|
||||||
|
43 10 7 88 49
|
||||||
|
78 76 31 19 66
|
||||||
|
22 20 35 45 79
|
||||||
|
|
||||||
|
19 42 49 57 73
|
||||||
|
99 50 97 93 43
|
||||||
|
67 52 40 16 33
|
||||||
|
2 55 0 71 46
|
||||||
|
21 75 59 66 83
|
||||||
|
|
||||||
|
19 86 30 25 3
|
||||||
|
32 39 65 54 29
|
||||||
|
38 6 85 52 13
|
||||||
|
43 95 18 44 15
|
||||||
|
53 70 16 31 71
|
||||||
|
|
||||||
|
68 73 74 83 70
|
||||||
|
56 15 12 78 4
|
||||||
|
43 87 63 90 86
|
||||||
|
41 16 23 17 77
|
||||||
|
80 14 61 30 50
|
||||||
|
|
||||||
|
88 28 45 80 65
|
||||||
|
64 11 68 33 27
|
||||||
|
29 70 44 82 37
|
||||||
|
42 66 9 32 87
|
||||||
|
10 24 15 3 46
|
||||||
|
|
||||||
|
99 81 5 62 97
|
||||||
|
4 36 23 38 35
|
||||||
|
42 16 37 98 54
|
||||||
|
34 41 25 30 48
|
||||||
|
8 60 63 89 72
|
||||||
|
|
||||||
|
25 33 94 23 14
|
||||||
|
45 10 79 30 3
|
||||||
|
22 28 95 27 11
|
||||||
|
74 13 39 84 83
|
||||||
|
72 88 56 53 97
|
||||||
|
|
||||||
|
31 92 91 84 71
|
||||||
|
54 90 89 80 0
|
||||||
|
98 96 65 66 68
|
||||||
|
35 39 70 11 82
|
||||||
|
15 34 42 52 2
|
||||||
|
|
||||||
|
68 71 86 82 37
|
||||||
|
28 48 12 34 54
|
||||||
|
62 55 10 25 89
|
||||||
|
60 4 50 21 22
|
||||||
|
3 2 18 40 84
|
||||||
|
|
||||||
|
18 96 95 47 45
|
||||||
|
14 51 2 88 43
|
||||||
|
94 56 19 15 8
|
||||||
|
48 65 62 6 75
|
||||||
|
35 28 25 72 30
|
||||||
|
|
||||||
|
43 85 69 92 26
|
||||||
|
61 75 5 73 66
|
||||||
|
16 87 4 99 48
|
||||||
|
18 19 79 23 83
|
||||||
|
37 88 31 38 40
|
||||||
|
|
||||||
|
23 10 89 84 76
|
||||||
|
45 39 62 55 66
|
||||||
|
25 73 79 43 60
|
||||||
|
12 69 36 93 71
|
||||||
|
9 77 14 58 49
|
||||||
|
|
||||||
|
9 24 26 53 79
|
||||||
|
99 15 30 50 16
|
||||||
|
14 95 12 25 33
|
||||||
|
54 40 58 46 66
|
||||||
|
5 23 39 29 48
|
||||||
|
|
||||||
|
64 67 11 10 92
|
||||||
|
59 99 80 97 66
|
||||||
|
45 51 88 47 82
|
||||||
|
35 27 72 85 16
|
||||||
|
54 58 2 1 52
|
||||||
|
|
||||||
|
10 97 27 54 66
|
||||||
|
89 85 39 99 98
|
||||||
|
8 68 95 51 19
|
||||||
|
4 17 79 87 3
|
||||||
|
72 43 76 58 33
|
||||||
|
|
||||||
|
95 72 0 18 17
|
||||||
|
3 42 24 86 34
|
||||||
|
52 79 46 58 98
|
||||||
|
76 77 78 19 10
|
||||||
|
81 61 88 85 54
|
||||||
|
|
||||||
|
74 70 15 80 72
|
||||||
|
77 89 11 19 22
|
||||||
|
34 59 56 65 91
|
||||||
|
58 6 50 40 16
|
||||||
|
93 30 95 26 85
|
||||||
|
|
||||||
|
47 62 57 6 25
|
||||||
|
40 79 22 95 29
|
||||||
|
42 11 70 10 92
|
||||||
|
60 53 84 96 17
|
||||||
|
75 86 74 89 18
|
||||||
|
|
||||||
|
30 42 4 19 92
|
||||||
|
40 58 72 7 70
|
||||||
|
17 98 45 76 50
|
||||||
|
93 57 65 79 2
|
||||||
|
56 94 73 84 62
|
||||||
|
|
||||||
|
51 0 14 7 53
|
||||||
|
63 36 48 81 84
|
||||||
|
50 22 11 88 6
|
||||||
|
83 99 21 31 91
|
||||||
|
86 17 72 42 94
|
||||||
|
|
||||||
|
83 0 20 26 7
|
||||||
|
42 24 37 86 65
|
||||||
|
73 82 63 21 27
|
||||||
|
30 35 9 47 80
|
||||||
|
79 53 3 14 84
|
||||||
|
|
||||||
|
50 99 83 86 42
|
||||||
|
81 36 24 4 76
|
||||||
|
0 71 66 41 57
|
||||||
|
7 54 94 78 97
|
||||||
|
12 8 82 45 31
|
||||||
|
|
||||||
|
4 91 57 50 37
|
||||||
|
22 46 86 24 26
|
||||||
|
39 54 48 7 42
|
||||||
|
2 45 95 29 12
|
||||||
|
38 25 52 0 72
|
||||||
|
|
||||||
|
51 94 46 44 62
|
||||||
|
95 60 0 48 61
|
||||||
|
38 13 85 32 8
|
||||||
|
22 56 53 30 80
|
||||||
|
43 65 58 68 88
|
||||||
|
|
||||||
|
49 76 41 43 51
|
||||||
|
57 46 45 82 90
|
||||||
|
48 33 36 5 23
|
||||||
|
81 30 3 61 75
|
||||||
|
56 70 29 91 59
|
||||||
|
|
||||||
|
58 74 50 47 84
|
||||||
|
2 1 62 36 60
|
||||||
|
32 16 95 43 27
|
||||||
|
79 12 39 56 11
|
||||||
|
9 33 4 25 61
|
||||||
|
|
||||||
|
23 84 16 51 39
|
||||||
|
72 19 53 64 43
|
||||||
|
9 44 10 52 26
|
||||||
|
45 68 29 56 74
|
||||||
|
62 42 46 95 0
|
||||||
|
|
||||||
|
16 83 27 85 56
|
||||||
|
13 41 49 79 53
|
||||||
|
18 63 7 60 3
|
||||||
|
45 15 48 69 29
|
||||||
|
46 86 35 34 32
|
||||||
|
|
||||||
|
85 2 96 15 43
|
||||||
|
33 30 29 53 98
|
||||||
|
21 55 61 73 40
|
||||||
|
31 4 66 75 59
|
||||||
|
26 32 91 38 80
|
||||||
|
|
||||||
|
69 81 65 30 77
|
||||||
|
82 22 83 0 38
|
||||||
|
2 3 29 47 94
|
||||||
|
42 55 9 18 97
|
||||||
|
53 45 90 31 44
|
||||||
|
|
||||||
|
23 86 0 35 84
|
||||||
|
27 80 3 64 12
|
||||||
|
1 96 48 93 85
|
||||||
|
69 24 61 15 22
|
||||||
|
91 72 62 13 76
|
||||||
|
|
||||||
|
81 51 67 60 16
|
||||||
|
65 48 86 39 97
|
||||||
|
92 93 49 77 59
|
||||||
|
15 94 88 52 19
|
||||||
|
80 83 23 61 4
|
||||||
|
|
||||||
|
47 84 46 79 55
|
||||||
|
92 38 65 42 76
|
||||||
|
9 58 26 95 86
|
||||||
|
30 49 56 69 59
|
||||||
|
94 4 25 89 44
|
||||||
|
|
||||||
|
73 10 29 0 48
|
||||||
|
56 40 19 84 61
|
||||||
|
52 31 25 86 21
|
||||||
|
79 55 53 51 5
|
||||||
|
81 9 35 72 15
|
||||||
|
|
||||||
|
41 95 30 58 73
|
||||||
|
26 80 4 21 96
|
||||||
|
61 92 76 93 74
|
||||||
|
2 69 60 8 20
|
||||||
|
46 98 70 72 83
|
||||||
|
|
||||||
|
1 99 31 4 86
|
||||||
|
93 64 8 43 61
|
||||||
|
33 36 75 90 50
|
||||||
|
52 13 3 42 34
|
||||||
|
22 65 60 18 76
|
||||||
|
|
||||||
|
17 63 6 66 92
|
||||||
|
51 67 86 88 18
|
||||||
|
82 83 32 74 30
|
||||||
|
5 33 9 28 61
|
||||||
|
72 75 25 23 60
|
||||||
|
|
||||||
|
43 28 40 53 52
|
||||||
|
54 12 77 10 83
|
||||||
|
21 44 63 0 1
|
||||||
|
15 22 33 49 2
|
||||||
|
80 41 3 46 55
|
||||||
|
|
||||||
|
1 97 75 37 4
|
||||||
|
47 33 13 21 40
|
||||||
|
27 62 15 90 30
|
||||||
|
11 83 63 36 35
|
||||||
|
0 12 60 91 42
|
||||||
|
|
||||||
|
0 45 17 88 18
|
||||||
|
66 10 63 62 8
|
||||||
|
36 5 47 39 67
|
||||||
|
21 3 61 29 19
|
||||||
|
82 58 33 6 59
|
||||||
|
|
||||||
|
37 92 69 56 52
|
||||||
|
46 66 20 78 13
|
||||||
|
83 99 16 31 0
|
||||||
|
36 35 2 68 9
|
||||||
|
70 82 94 96 29
|
||||||
|
|
||||||
|
62 65 85 37 3
|
||||||
|
74 95 34 96 58
|
||||||
|
15 33 49 21 93
|
||||||
|
19 83 66 6 25
|
||||||
|
81 84 23 0 76
|
||||||
|
|
||||||
|
95 84 71 92 52
|
||||||
|
54 36 66 59 82
|
||||||
|
0 76 32 45 83
|
||||||
|
69 27 25 88 38
|
||||||
|
81 96 63 4 61
|
||||||
|
|
||||||
|
73 51 28 48 40
|
||||||
|
3 38 11 14 35
|
||||||
|
66 91 86 20 81
|
||||||
|
53 39 46 71 1
|
||||||
|
97 60 21 93 23
|
||||||
|
|
||||||
|
92 70 4 60 95
|
||||||
|
58 49 20 15 25
|
||||||
|
55 68 21 84 80
|
||||||
|
56 41 82 23 19
|
||||||
|
30 74 65 27 29
|
||||||
|
|
||||||
|
81 97 68 46 75
|
||||||
|
62 73 63 36 41
|
||||||
|
1 5 91 84 37
|
||||||
|
45 92 20 49 7
|
||||||
|
25 26 3 88 56
|
||||||
|
|
||||||
|
25 9 94 37 26
|
||||||
|
44 58 84 91 38
|
||||||
|
39 46 57 98 50
|
||||||
|
96 42 73 24 70
|
||||||
|
71 32 53 48 13
|
||||||
|
|
||||||
|
98 72 25 96 77
|
||||||
|
80 64 88 53 23
|
||||||
|
21 37 45 24 18
|
||||||
|
41 86 59 68 5
|
||||||
|
76 50 36 26 12
|
||||||
|
|
||||||
|
77 79 88 74 12
|
||||||
|
21 9 85 26 68
|
||||||
|
11 62 64 4 5
|
||||||
|
47 33 76 63 87
|
||||||
|
55 19 2 60 95
|
||||||
|
|
||||||
|
74 79 30 14 35
|
||||||
|
90 52 17 29 63
|
||||||
|
18 69 78 34 26
|
||||||
|
92 42 85 71 56
|
||||||
|
12 2 5 0 98
|
||||||
100
2021/04.py
Normal file
100
2021/04.py
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
|
def test_winner(board, drawn_numbers):
|
||||||
|
for one_combination in board['winning_combinations']:
|
||||||
|
total = 0
|
||||||
|
if set(one_combination).issubset(set(drawn_numbers)):
|
||||||
|
for one_number in one_bingo['numbers']:
|
||||||
|
if one_number not in drawn_numbers:
|
||||||
|
total += int(one_number)
|
||||||
|
return int(total) * int(drawn_numbers[-1])
|
||||||
|
return -1
|
||||||
|
|
||||||
|
with open('./2021/04.input', 'r') as input_file:
|
||||||
|
# with open('./2021/04.test', 'r') as input_file:
|
||||||
|
input_data = input_file.read()
|
||||||
|
|
||||||
|
number_list = input_data.split('\n\n')[0].split(',')
|
||||||
|
|
||||||
|
print(number_list)
|
||||||
|
|
||||||
|
bingo_boards = input_data.split('\n\n')[1:]
|
||||||
|
|
||||||
|
bingo_dicts = []
|
||||||
|
for one_board in bingo_boards:
|
||||||
|
one_bingo = {}
|
||||||
|
one_bingo['numbers'] = []
|
||||||
|
one_bingo['winning_combinations'] = []
|
||||||
|
rows = one_board.split('\n')
|
||||||
|
|
||||||
|
for row in range(len(rows)):
|
||||||
|
columns = rows[row].split(' ')
|
||||||
|
columns = list(filter("".__ne__, columns))
|
||||||
|
one_bingo['numbers'].extend(columns)
|
||||||
|
|
||||||
|
one_bingo['winning_combinations'].append(columns)
|
||||||
|
for column in range(len(columns)):
|
||||||
|
winning_column = []
|
||||||
|
for row in range(len(rows)):
|
||||||
|
print(row, column, row * column)
|
||||||
|
winning_column.append(one_bingo['numbers'][row * len(columns) + column])
|
||||||
|
print(winning_column)
|
||||||
|
one_bingo['winning_combinations'].append(winning_column)
|
||||||
|
bingo_dicts.append(one_bingo)
|
||||||
|
|
||||||
|
# Find a winning board.
|
||||||
|
winner_found = False
|
||||||
|
for i in range(4, len(number_list)):
|
||||||
|
drawn_numbers = number_list[:i]
|
||||||
|
print("Drawn numbers", drawn_numbers)
|
||||||
|
|
||||||
|
for one_bingo in bingo_dicts:
|
||||||
|
for one_combination in one_bingo['winning_combinations']:
|
||||||
|
total = 0
|
||||||
|
if set(one_combination).issubset(set(drawn_numbers)):
|
||||||
|
# Get the board
|
||||||
|
print("Winning Combination", one_combination)
|
||||||
|
print("Winning Board", one_bingo['numbers'])
|
||||||
|
one_bingo['numbers'].sort()
|
||||||
|
print("Winning Sorted", one_bingo['numbers'])
|
||||||
|
|
||||||
|
for one_number in one_bingo['numbers']:
|
||||||
|
if one_number not in drawn_numbers:
|
||||||
|
total += int(one_number)
|
||||||
|
print(total)
|
||||||
|
winner_found = True
|
||||||
|
print(total, drawn_numbers[-1], int(total) * int(drawn_numbers[-1]))
|
||||||
|
if winner_found:
|
||||||
|
break
|
||||||
|
if winner_found:
|
||||||
|
break
|
||||||
|
if winner_found:
|
||||||
|
break
|
||||||
|
|
||||||
|
boards_left = bingo_dicts.copy()
|
||||||
|
|
||||||
|
|
||||||
|
for i in range(4, len(number_list)):
|
||||||
|
drawn_numbers = number_list[:i]
|
||||||
|
|
||||||
|
# Test for winner. If winner, eliminate.
|
||||||
|
for one_board in range(len(boards_left) - 1, 0, -1):
|
||||||
|
total = 0
|
||||||
|
for one_combination in boards_left[one_board]:
|
||||||
|
if set(one_combination).issubset(set(drawn_numbers)) and len(boards_left) > 1:
|
||||||
|
# Remove the board
|
||||||
|
del boards_left[one_board]
|
||||||
|
|
||||||
|
for one_number in one_bingo['numbers']:
|
||||||
|
if one_number not in drawn_numbers:
|
||||||
|
total += int(one_number)
|
||||||
|
print(len(boards_left))
|
||||||
|
print(total)
|
||||||
|
winner_found = True
|
||||||
|
print(total, drawn_numbers[-1], int(total) * int(drawn_numbers[-1]))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
19
2021/04.test
Normal file
19
2021/04.test
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
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
|
||||||
500
2021/05.input
Normal file
500
2021/05.input
Normal file
@@ -0,0 +1,500 @@
|
|||||||
|
445,187 -> 912,654
|
||||||
|
820,46 -> 25,841
|
||||||
|
216,621 -> 458,379
|
||||||
|
955,898 -> 67,10
|
||||||
|
549,572 -> 549,520
|
||||||
|
796,107 -> 109,794
|
||||||
|
729,698 -> 338,698
|
||||||
|
11,987 -> 968,30
|
||||||
|
381,840 -> 381,409
|
||||||
|
80,467 -> 80,48
|
||||||
|
132,197 -> 132,92
|
||||||
|
343,96 -> 343,710
|
||||||
|
42,854 -> 346,550
|
||||||
|
503,56 -> 804,56
|
||||||
|
599,206 -> 60,206
|
||||||
|
702,920 -> 474,920
|
||||||
|
496,790 -> 223,517
|
||||||
|
969,579 -> 583,579
|
||||||
|
897,66 -> 604,66
|
||||||
|
484,754 -> 640,910
|
||||||
|
330,49 -> 949,49
|
||||||
|
908,132 -> 714,132
|
||||||
|
517,153 -> 97,573
|
||||||
|
317,865 -> 678,504
|
||||||
|
800,61 -> 800,51
|
||||||
|
179,242 -> 179,202
|
||||||
|
529,757 -> 529,838
|
||||||
|
288,953 -> 393,953
|
||||||
|
372,15 -> 925,568
|
||||||
|
100,85 -> 654,639
|
||||||
|
663,562 -> 737,636
|
||||||
|
576,981 -> 245,981
|
||||||
|
347,240 -> 347,928
|
||||||
|
91,119 -> 413,441
|
||||||
|
637,397 -> 330,90
|
||||||
|
534,257 -> 950,257
|
||||||
|
155,636 -> 694,97
|
||||||
|
539,274 -> 539,327
|
||||||
|
329,795 -> 824,300
|
||||||
|
103,51 -> 961,909
|
||||||
|
87,868 -> 168,787
|
||||||
|
21,250 -> 157,386
|
||||||
|
591,316 -> 670,395
|
||||||
|
722,670 -> 630,670
|
||||||
|
28,167 -> 28,489
|
||||||
|
480,210 -> 68,622
|
||||||
|
573,700 -> 354,919
|
||||||
|
186,59 -> 700,59
|
||||||
|
121,186 -> 670,186
|
||||||
|
797,985 -> 671,985
|
||||||
|
836,804 -> 335,804
|
||||||
|
701,835 -> 104,238
|
||||||
|
456,718 -> 456,964
|
||||||
|
694,891 -> 694,839
|
||||||
|
205,637 -> 205,318
|
||||||
|
40,958 -> 773,225
|
||||||
|
151,391 -> 151,779
|
||||||
|
693,894 -> 417,894
|
||||||
|
418,700 -> 656,700
|
||||||
|
196,985 -> 896,985
|
||||||
|
357,509 -> 608,258
|
||||||
|
552,558 -> 552,482
|
||||||
|
184,412 -> 170,412
|
||||||
|
122,746 -> 643,225
|
||||||
|
268,930 -> 247,930
|
||||||
|
979,820 -> 407,248
|
||||||
|
755,893 -> 845,893
|
||||||
|
706,843 -> 706,225
|
||||||
|
162,726 -> 895,726
|
||||||
|
140,888 -> 289,888
|
||||||
|
614,432 -> 903,721
|
||||||
|
272,725 -> 272,598
|
||||||
|
529,672 -> 967,234
|
||||||
|
903,989 -> 785,871
|
||||||
|
422,355 -> 422,360
|
||||||
|
313,722 -> 713,322
|
||||||
|
460,121 -> 460,151
|
||||||
|
55,944 -> 946,944
|
||||||
|
795,744 -> 221,744
|
||||||
|
816,953 -> 471,953
|
||||||
|
865,186 -> 557,186
|
||||||
|
94,976 -> 747,323
|
||||||
|
302,961 -> 811,452
|
||||||
|
361,966 -> 921,406
|
||||||
|
197,988 -> 571,988
|
||||||
|
310,905 -> 722,493
|
||||||
|
699,91 -> 272,518
|
||||||
|
295,306 -> 84,95
|
||||||
|
220,116 -> 395,291
|
||||||
|
183,364 -> 523,364
|
||||||
|
16,986 -> 16,319
|
||||||
|
54,980 -> 635,399
|
||||||
|
340,110 -> 651,421
|
||||||
|
788,76 -> 788,635
|
||||||
|
933,375 -> 458,375
|
||||||
|
12,434 -> 494,916
|
||||||
|
253,892 -> 962,183
|
||||||
|
240,508 -> 240,234
|
||||||
|
763,934 -> 506,677
|
||||||
|
308,135 -> 239,66
|
||||||
|
117,649 -> 751,15
|
||||||
|
95,535 -> 428,868
|
||||||
|
16,937 -> 902,51
|
||||||
|
547,404 -> 547,830
|
||||||
|
128,581 -> 970,581
|
||||||
|
959,810 -> 564,415
|
||||||
|
971,738 -> 378,145
|
||||||
|
919,210 -> 295,210
|
||||||
|
737,43 -> 231,43
|
||||||
|
82,577 -> 455,204
|
||||||
|
821,337 -> 570,337
|
||||||
|
688,753 -> 538,753
|
||||||
|
891,844 -> 124,844
|
||||||
|
74,957 -> 946,85
|
||||||
|
43,942 -> 43,210
|
||||||
|
100,391 -> 100,142
|
||||||
|
975,527 -> 175,527
|
||||||
|
510,844 -> 395,959
|
||||||
|
558,231 -> 558,858
|
||||||
|
839,915 -> 262,338
|
||||||
|
784,290 -> 875,199
|
||||||
|
644,824 -> 812,824
|
||||||
|
899,657 -> 500,657
|
||||||
|
263,668 -> 263,964
|
||||||
|
157,374 -> 820,374
|
||||||
|
530,301 -> 530,67
|
||||||
|
15,688 -> 15,572
|
||||||
|
216,844 -> 479,581
|
||||||
|
973,59 -> 68,964
|
||||||
|
104,92 -> 104,547
|
||||||
|
421,472 -> 421,176
|
||||||
|
887,805 -> 231,149
|
||||||
|
140,980 -> 852,980
|
||||||
|
248,602 -> 346,602
|
||||||
|
334,961 -> 334,471
|
||||||
|
892,892 -> 958,958
|
||||||
|
270,83 -> 270,135
|
||||||
|
950,105 -> 404,651
|
||||||
|
979,476 -> 930,427
|
||||||
|
416,430 -> 879,430
|
||||||
|
796,937 -> 796,415
|
||||||
|
670,679 -> 72,679
|
||||||
|
733,884 -> 733,302
|
||||||
|
745,196 -> 306,196
|
||||||
|
174,353 -> 667,846
|
||||||
|
285,978 -> 254,978
|
||||||
|
10,63 -> 936,989
|
||||||
|
242,107 -> 242,725
|
||||||
|
238,341 -> 238,800
|
||||||
|
975,102 -> 174,903
|
||||||
|
530,474 -> 530,853
|
||||||
|
931,47 -> 467,47
|
||||||
|
86,141 -> 821,141
|
||||||
|
263,15 -> 654,15
|
||||||
|
688,542 -> 378,232
|
||||||
|
826,793 -> 989,793
|
||||||
|
729,285 -> 729,192
|
||||||
|
587,915 -> 587,79
|
||||||
|
548,667 -> 877,667
|
||||||
|
15,836 -> 783,68
|
||||||
|
662,673 -> 71,82
|
||||||
|
312,681 -> 910,83
|
||||||
|
760,418 -> 491,418
|
||||||
|
175,502 -> 443,502
|
||||||
|
817,878 -> 29,90
|
||||||
|
798,569 -> 811,582
|
||||||
|
703,141 -> 743,181
|
||||||
|
941,849 -> 941,778
|
||||||
|
63,24 -> 500,461
|
||||||
|
697,183 -> 119,761
|
||||||
|
705,672 -> 152,672
|
||||||
|
150,567 -> 656,567
|
||||||
|
158,411 -> 965,411
|
||||||
|
702,872 -> 276,446
|
||||||
|
141,179 -> 741,779
|
||||||
|
533,886 -> 817,886
|
||||||
|
569,949 -> 285,949
|
||||||
|
699,764 -> 699,780
|
||||||
|
333,863 -> 805,391
|
||||||
|
861,804 -> 524,467
|
||||||
|
791,501 -> 718,501
|
||||||
|
976,265 -> 976,713
|
||||||
|
129,342 -> 339,132
|
||||||
|
322,738 -> 212,738
|
||||||
|
700,534 -> 622,456
|
||||||
|
68,314 -> 14,314
|
||||||
|
146,112 -> 215,181
|
||||||
|
170,211 -> 482,211
|
||||||
|
159,412 -> 159,32
|
||||||
|
312,939 -> 312,95
|
||||||
|
232,18 -> 912,698
|
||||||
|
950,114 -> 950,826
|
||||||
|
620,848 -> 620,11
|
||||||
|
624,288 -> 544,208
|
||||||
|
752,479 -> 752,577
|
||||||
|
784,796 -> 784,872
|
||||||
|
130,55 -> 974,899
|
||||||
|
434,82 -> 434,481
|
||||||
|
988,230 -> 892,134
|
||||||
|
159,252 -> 159,291
|
||||||
|
462,14 -> 462,977
|
||||||
|
553,981 -> 553,390
|
||||||
|
231,936 -> 51,936
|
||||||
|
58,759 -> 60,759
|
||||||
|
572,891 -> 584,891
|
||||||
|
705,303 -> 124,303
|
||||||
|
144,894 -> 970,68
|
||||||
|
865,275 -> 865,956
|
||||||
|
492,491 -> 470,491
|
||||||
|
971,15 -> 977,15
|
||||||
|
750,521 -> 33,521
|
||||||
|
913,947 -> 387,421
|
||||||
|
368,677 -> 570,677
|
||||||
|
795,186 -> 882,186
|
||||||
|
404,840 -> 678,840
|
||||||
|
187,488 -> 403,488
|
||||||
|
824,706 -> 642,706
|
||||||
|
330,541 -> 330,195
|
||||||
|
564,531 -> 774,531
|
||||||
|
271,857 -> 20,606
|
||||||
|
976,975 -> 976,843
|
||||||
|
323,341 -> 21,39
|
||||||
|
575,643 -> 267,643
|
||||||
|
827,295 -> 827,854
|
||||||
|
749,486 -> 749,780
|
||||||
|
656,716 -> 656,470
|
||||||
|
635,187 -> 417,187
|
||||||
|
503,488 -> 503,393
|
||||||
|
592,688 -> 592,567
|
||||||
|
515,408 -> 128,795
|
||||||
|
608,158 -> 780,158
|
||||||
|
677,96 -> 11,762
|
||||||
|
127,452 -> 339,452
|
||||||
|
117,985 -> 291,811
|
||||||
|
157,371 -> 157,916
|
||||||
|
640,758 -> 983,758
|
||||||
|
906,413 -> 906,776
|
||||||
|
224,842 -> 627,439
|
||||||
|
903,728 -> 903,459
|
||||||
|
358,138 -> 822,602
|
||||||
|
30,16 -> 929,915
|
||||||
|
440,900 -> 294,900
|
||||||
|
809,73 -> 987,73
|
||||||
|
55,410 -> 304,161
|
||||||
|
441,672 -> 315,672
|
||||||
|
939,40 -> 234,40
|
||||||
|
334,698 -> 309,698
|
||||||
|
572,738 -> 572,226
|
||||||
|
445,71 -> 445,468
|
||||||
|
225,660 -> 427,458
|
||||||
|
390,320 -> 449,320
|
||||||
|
507,635 -> 507,169
|
||||||
|
47,116 -> 738,807
|
||||||
|
127,14 -> 689,14
|
||||||
|
316,760 -> 316,432
|
||||||
|
831,101 -> 250,682
|
||||||
|
370,807 -> 370,898
|
||||||
|
678,186 -> 491,186
|
||||||
|
866,83 -> 539,83
|
||||||
|
518,848 -> 518,962
|
||||||
|
188,135 -> 81,28
|
||||||
|
378,226 -> 597,226
|
||||||
|
646,534 -> 141,534
|
||||||
|
275,672 -> 275,854
|
||||||
|
67,421 -> 676,421
|
||||||
|
386,323 -> 988,323
|
||||||
|
903,984 -> 10,91
|
||||||
|
37,348 -> 529,840
|
||||||
|
872,134 -> 358,648
|
||||||
|
42,826 -> 42,822
|
||||||
|
688,922 -> 21,922
|
||||||
|
47,539 -> 942,539
|
||||||
|
739,483 -> 375,847
|
||||||
|
23,217 -> 800,217
|
||||||
|
589,512 -> 589,953
|
||||||
|
292,229 -> 107,229
|
||||||
|
873,678 -> 873,770
|
||||||
|
794,295 -> 739,240
|
||||||
|
464,559 -> 936,559
|
||||||
|
685,736 -> 368,736
|
||||||
|
114,941 -> 114,307
|
||||||
|
571,643 -> 74,643
|
||||||
|
281,185 -> 273,177
|
||||||
|
497,937 -> 497,469
|
||||||
|
152,815 -> 702,815
|
||||||
|
76,43 -> 980,947
|
||||||
|
272,149 -> 101,149
|
||||||
|
934,945 -> 107,118
|
||||||
|
532,476 -> 759,476
|
||||||
|
955,942 -> 397,942
|
||||||
|
31,918 -> 931,18
|
||||||
|
790,420 -> 389,420
|
||||||
|
36,496 -> 215,317
|
||||||
|
252,209 -> 139,209
|
||||||
|
704,148 -> 719,133
|
||||||
|
413,571 -> 165,571
|
||||||
|
690,433 -> 864,607
|
||||||
|
976,417 -> 517,876
|
||||||
|
803,568 -> 443,568
|
||||||
|
335,558 -> 335,334
|
||||||
|
405,807 -> 691,521
|
||||||
|
194,482 -> 486,190
|
||||||
|
377,856 -> 377,802
|
||||||
|
313,842 -> 313,254
|
||||||
|
449,961 -> 198,710
|
||||||
|
197,916 -> 197,797
|
||||||
|
82,965 -> 959,88
|
||||||
|
371,239 -> 829,697
|
||||||
|
471,70 -> 596,70
|
||||||
|
835,144 -> 835,950
|
||||||
|
283,486 -> 506,486
|
||||||
|
147,29 -> 147,747
|
||||||
|
187,485 -> 187,195
|
||||||
|
781,144 -> 480,144
|
||||||
|
801,839 -> 925,715
|
||||||
|
415,960 -> 415,442
|
||||||
|
877,939 -> 29,91
|
||||||
|
22,118 -> 22,439
|
||||||
|
460,315 -> 450,315
|
||||||
|
982,960 -> 71,49
|
||||||
|
105,231 -> 105,331
|
||||||
|
98,174 -> 551,174
|
||||||
|
721,978 -> 38,295
|
||||||
|
167,290 -> 167,133
|
||||||
|
218,158 -> 218,908
|
||||||
|
819,812 -> 758,812
|
||||||
|
123,92 -> 123,132
|
||||||
|
66,721 -> 66,906
|
||||||
|
478,441 -> 967,930
|
||||||
|
284,58 -> 464,58
|
||||||
|
958,15 -> 37,936
|
||||||
|
310,337 -> 359,288
|
||||||
|
212,763 -> 212,373
|
||||||
|
101,279 -> 101,267
|
||||||
|
622,409 -> 106,925
|
||||||
|
318,657 -> 318,432
|
||||||
|
938,631 -> 938,650
|
||||||
|
142,881 -> 254,881
|
||||||
|
848,987 -> 848,451
|
||||||
|
686,223 -> 481,223
|
||||||
|
124,248 -> 812,248
|
||||||
|
246,267 -> 246,148
|
||||||
|
96,670 -> 324,442
|
||||||
|
645,888 -> 385,628
|
||||||
|
417,555 -> 417,858
|
||||||
|
543,495 -> 543,150
|
||||||
|
73,350 -> 440,717
|
||||||
|
459,704 -> 459,179
|
||||||
|
871,493 -> 871,764
|
||||||
|
911,34 -> 64,881
|
||||||
|
544,791 -> 703,791
|
||||||
|
447,218 -> 62,218
|
||||||
|
202,649 -> 396,649
|
||||||
|
935,916 -> 55,36
|
||||||
|
124,408 -> 477,761
|
||||||
|
608,850 -> 484,850
|
||||||
|
935,876 -> 582,876
|
||||||
|
377,612 -> 269,612
|
||||||
|
413,727 -> 365,679
|
||||||
|
64,451 -> 850,451
|
||||||
|
684,807 -> 357,807
|
||||||
|
323,364 -> 372,364
|
||||||
|
887,300 -> 419,300
|
||||||
|
837,831 -> 837,927
|
||||||
|
294,255 -> 768,729
|
||||||
|
878,23 -> 141,760
|
||||||
|
36,627 -> 157,627
|
||||||
|
824,703 -> 824,968
|
||||||
|
356,109 -> 657,109
|
||||||
|
799,266 -> 313,752
|
||||||
|
71,600 -> 650,21
|
||||||
|
564,863 -> 564,54
|
||||||
|
36,720 -> 109,720
|
||||||
|
318,488 -> 682,488
|
||||||
|
249,350 -> 979,350
|
||||||
|
560,502 -> 255,502
|
||||||
|
132,327 -> 132,246
|
||||||
|
287,906 -> 791,906
|
||||||
|
818,110 -> 818,882
|
||||||
|
937,17 -> 113,841
|
||||||
|
50,710 -> 673,87
|
||||||
|
702,952 -> 702,533
|
||||||
|
666,552 -> 611,552
|
||||||
|
612,962 -> 112,462
|
||||||
|
260,529 -> 351,529
|
||||||
|
440,313 -> 440,663
|
||||||
|
605,341 -> 405,141
|
||||||
|
277,287 -> 461,287
|
||||||
|
268,890 -> 268,92
|
||||||
|
764,526 -> 877,639
|
||||||
|
165,697 -> 832,697
|
||||||
|
240,716 -> 801,155
|
||||||
|
872,429 -> 578,429
|
||||||
|
88,816 -> 338,816
|
||||||
|
981,881 -> 981,138
|
||||||
|
457,351 -> 457,679
|
||||||
|
850,526 -> 850,447
|
||||||
|
139,449 -> 165,449
|
||||||
|
127,544 -> 127,934
|
||||||
|
160,890 -> 745,305
|
||||||
|
526,113 -> 303,336
|
||||||
|
17,500 -> 17,621
|
||||||
|
796,311 -> 181,926
|
||||||
|
260,218 -> 787,218
|
||||||
|
536,989 -> 536,261
|
||||||
|
257,826 -> 257,180
|
||||||
|
531,37 -> 531,493
|
||||||
|
961,942 -> 206,187
|
||||||
|
536,668 -> 536,868
|
||||||
|
154,967 -> 154,931
|
||||||
|
808,317 -> 808,873
|
||||||
|
487,258 -> 599,258
|
||||||
|
59,962 -> 802,219
|
||||||
|
322,945 -> 322,837
|
||||||
|
378,973 -> 33,628
|
||||||
|
668,556 -> 691,556
|
||||||
|
819,728 -> 787,728
|
||||||
|
484,261 -> 484,874
|
||||||
|
333,271 -> 278,271
|
||||||
|
733,515 -> 741,523
|
||||||
|
775,854 -> 523,602
|
||||||
|
67,215 -> 616,215
|
||||||
|
951,685 -> 951,433
|
||||||
|
372,105 -> 372,494
|
||||||
|
917,788 -> 917,23
|
||||||
|
890,584 -> 245,584
|
||||||
|
748,276 -> 893,276
|
||||||
|
733,721 -> 733,747
|
||||||
|
225,908 -> 897,908
|
||||||
|
437,140 -> 423,140
|
||||||
|
456,513 -> 136,833
|
||||||
|
413,135 -> 413,596
|
||||||
|
143,245 -> 879,981
|
||||||
|
870,639 -> 942,639
|
||||||
|
28,175 -> 696,843
|
||||||
|
393,303 -> 393,197
|
||||||
|
169,986 -> 458,986
|
||||||
|
43,44 -> 952,953
|
||||||
|
236,405 -> 60,229
|
||||||
|
266,845 -> 292,845
|
||||||
|
529,98 -> 95,532
|
||||||
|
95,658 -> 695,658
|
||||||
|
368,454 -> 112,710
|
||||||
|
506,776 -> 662,776
|
||||||
|
928,494 -> 604,170
|
||||||
|
179,138 -> 900,859
|
||||||
|
45,560 -> 408,197
|
||||||
|
655,654 -> 37,36
|
||||||
|
56,432 -> 56,456
|
||||||
|
844,614 -> 844,898
|
||||||
|
240,191 -> 240,112
|
||||||
|
639,911 -> 213,911
|
||||||
|
47,887 -> 830,104
|
||||||
|
57,50 -> 977,970
|
||||||
|
899,928 -> 111,928
|
||||||
|
962,676 -> 962,518
|
||||||
|
129,585 -> 469,245
|
||||||
|
988,775 -> 988,553
|
||||||
|
417,344 -> 842,769
|
||||||
|
468,110 -> 506,72
|
||||||
|
687,204 -> 687,345
|
||||||
|
828,553 -> 765,490
|
||||||
|
75,894 -> 75,93
|
||||||
|
26,798 -> 11,783
|
||||||
|
967,44 -> 967,478
|
||||||
|
240,481 -> 947,481
|
||||||
|
794,254 -> 162,254
|
||||||
|
502,944 -> 812,944
|
||||||
|
331,417 -> 410,417
|
||||||
|
850,275 -> 850,980
|
||||||
|
671,130 -> 671,941
|
||||||
|
240,99 -> 240,381
|
||||||
|
771,399 -> 318,399
|
||||||
|
946,11 -> 28,929
|
||||||
|
731,939 -> 824,846
|
||||||
|
268,71 -> 832,635
|
||||||
|
968,37 -> 968,642
|
||||||
|
935,365 -> 515,365
|
||||||
|
199,792 -> 932,792
|
||||||
|
32,116 -> 371,116
|
||||||
|
324,67 -> 941,67
|
||||||
|
453,181 -> 453,128
|
||||||
|
958,982 -> 115,139
|
||||||
|
962,168 -> 154,976
|
||||||
|
474,215 -> 333,215
|
||||||
|
458,675 -> 458,315
|
||||||
|
577,302 -> 300,302
|
||||||
|
704,493 -> 704,876
|
||||||
|
887,549 -> 887,439
|
||||||
|
81,328 -> 724,328
|
||||||
|
575,490 -> 670,490
|
||||||
|
576,17 -> 576,218
|
||||||
|
21,46 -> 963,988
|
||||||
|
532,235 -> 532,615
|
||||||
|
796,213 -> 796,407
|
||||||
|
55,948 -> 980,23
|
||||||
|
775,471 -> 272,471
|
||||||
|
26,138 -> 344,138
|
||||||
|
635,518 -> 915,518
|
||||||
|
727,365 -> 727,216
|
||||||
8
2021/05.py
Normal file
8
2021/05.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import sys
|
||||||
|
from collections import Counter
|
||||||
|
with open('./2021/05.input', 'r') as f:
|
||||||
|
# with open('./2021/05.test', 'r') as f:
|
||||||
|
f = [[list(map(int, y.split(','))) for y in x.split("->")] for x in f.read().splitlines()]
|
||||||
|
|
||||||
|
print(sum([1 for k, v in Counter([item for sublist in [[(x, y) for x in range(min(x0, x1), max(x0, x1) + 1) for y in range(min(y0, y1), max(y0, y1) + 1) if ((x - x0) * (y1 - y0) - (y - y0) * (x1 - x0)) == 0] for (x0, y0), (x1, y1) in f if x0 == x1 or y0 == y1] for item in sublist]).items() if v >= 2]))
|
||||||
|
print(sum([1 for k, v in Counter([item for sublist in [[(x, y) for x in range(min(x0, x1), max(x0, x1) + 1) for y in range(min(y0, y1), max(y0, y1) + 1) if ((x - x0) * (y1 - y0) - (y - y0) * (x1 - x0)) == 0] for (x0, y0), (x1, y1) in f] for item in sublist]).items() if v >= 2]))
|
||||||
10
2021/05.test
Normal file
10
2021/05.test
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
0,9 -> 5,9
|
||||||
|
8,0 -> 0,8
|
||||||
|
9,4 -> 3,4
|
||||||
|
2,2 -> 2,1
|
||||||
|
7,0 -> 7,4
|
||||||
|
6,4 -> 2,0
|
||||||
|
0,9 -> 2,9
|
||||||
|
3,4 -> 1,4
|
||||||
|
0,0 -> 8,8
|
||||||
|
5,5 -> 8,2
|
||||||
Reference in New Issue
Block a user