-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_day04.py
61 lines (55 loc) · 1.95 KB
/
test_day04.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import unittest
from day_04 import final_score
INPUT_PATH = './fixtures/day-04.txt'
class TestDay04(unittest.TestCase):
def setUp(self):
with open(INPUT_PATH, 'r') as bingo:
self.boards, current_board = [], []
for i, line in enumerate(bingo):
if i == 0:
self.draws = [int(x) for x in line.strip().split(',')]
elif line == '\n' and len(current_board) > 0:
self.boards.append(current_board)
current_board = [] # reset
else:
row = self.__row_from_line(line)
if len(row) > 0:
current_board.append(row)
def __row_from_line(self, line):
row, num_str = [], []
for i in range(len(line)):
char = line[i]
if char.isdigit():
num_str.append(char)
elif len(num_str) > 0:
row.append(int(''.join(num_str)))
num_str = [] # reset
return row
def test_example(self):
draws = [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]
boards = [
[
[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]
]
]
self.assertEqual(final_score(boards, draws), 4512)
def test_actual(self):
self.assertEqual(final_score(self.boards, self.draws), 44088)