-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathday_6.py
More file actions
59 lines (39 loc) · 1.62 KB
/
day_6.py
File metadata and controls
59 lines (39 loc) · 1.62 KB
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
#!/bin/env python
""" Advent of Code Day 6 """
def count_task1_group(answers):
""" Return the answer for Task 1 """
return len(set.union(*answers))
def count_task2_group(answers):
""" Return the answer for Task 2 """
return len(set.intersection(*answers))
def process_lines(lines):
""" Process all lines in the input """
total_task1 = 0
total_task2 = 0
answers = []
for l_count, line in enumerate(lines):
if line != "":
answers.append(set(line.strip()))
if line == "" or l_count == len(lines)-1:
total_task1 += count_task1_group(answers)
total_task2 += count_task2_group(answers)
answers = []
print(f"Task1: {total_task1}")
print(f"Task2: {total_task2}")
with open("input6", "r") as in_file:
all_lines = [line.rstrip('\n') for line in in_file]
process_lines(all_lines)
# TESTS #
with open("test_input6", "r") as in_file:
all_lines = [line.rstrip('\n') for line in in_file]
process_lines(all_lines)
assert count_task1_group([set('abc')]) == 3
assert count_task1_group([set('a'), set('a'), set('b'), set('c')]) == 3
assert count_task1_group([set('ab'), set('ac')]) == 3
assert count_task1_group([set('a'), set('a'), set('a'), set('a')]) == 1
assert count_task1_group([set('abcx'), set('abcy'), set('abcz')]) == 6
assert count_task2_group([set('abc')]) == 3
assert count_task2_group([set('a'), set('a'), set('b'), set('c')]) == 0
assert count_task2_group([set('ab'), set('ac')]) == 1
assert count_task2_group([set('a'), set('a'), set('a'), set('a')]) == 1
assert count_task2_group([set('abcx'), set('abcy'), set('abcz')]) == 3