-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathday12.py
More file actions
38 lines (29 loc) · 971 Bytes
/
day12.py
File metadata and controls
38 lines (29 loc) · 971 Bytes
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
def calc_a(input):
programs = get_programs(input)
counted_programs = set()
return count_programs(programs, 0, counted_programs)
def calc_b(input):
programs = get_programs(input)
counted_programs = set()
group_count = 0
for prg, _ in enumerate(programs):
if prg not in counted_programs:
count_programs(programs, prg, counted_programs)
group_count += 1
return group_count
def get_programs(input):
programs = []
for row in input.split('\n'):
a = row.split('<->')
int(a[0])
links = list(map(lambda link: int(link), a[1].split(',')))
programs.append(links)
return programs
def count_programs(programs, program, counted_programs):
if program in counted_programs:
return 0
counted_programs.add(program)
l_count = 0
for link in programs[program]:
l_count += count_programs(programs, link, counted_programs)
return 1 + l_count