adventofcode-2021/12/solve01.py

38 lines
738 B
Python
Raw Normal View History

2021-12-12 12:27:34 +01:00
#!/usr/bin/env python
import copy
graph = dict()
def calculate_paths(graph, current, small_seen, path):
found = 0
for n in graph.get(current):
if n == 'start':
continue
if n in small_seen:
continue
p = copy.copy(path)
p.append(n)
#print(p)
#print("%s -> %s" % (current, n))
if n == 'end':
found += 1
continue
sm = copy.copy(small_seen)
if n.lower() == n:
sm.append(n)
found += calculate_paths(graph, n, sm, p)
return found
with open("input01.txt","r") as f:
for line in f:
(x,y) = line.strip().split("-",2)
if x not in graph:
graph[x] = []
graph[x].append(y)
if y not in graph:
graph[y] = []
graph[y].append(x)
#print(graph)
print(calculate_paths(graph, 'start', [], ['start']))