Day 12 part 1
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
kleph 2021-12-13 04:40:26 +01:00
parent 014a263cd1
commit b3234118da
5 changed files with 129 additions and 0 deletions

68
12/12.py Executable file
View file

@ -0,0 +1,68 @@
#!/usr/bin/env python
# 2021 - Advent Of Code - 11
GRID_SIZE = 10
def parse_file(file):
with open(file) as f:
return [x.strip() for x in f.readlines()]
def explore_tree(current_node, visited, paths_list, gen):
possible_path = [c for c in connections if current_node in c.split('-')]
print(f'\n{gen} current_node: {current_node}\t possible path: {possible_path}')
print(f'{gen} visited: {visited}')
for path in possible_path:
print(f'{gen} exploring {path}')
new_visited = list(visited)
# check end
if 'end' in path:
visited.append('end')
paths_list.append(visited)
print(f'{gen} keeping path: {visited}')
continue
nodes = path.split('-')
if nodes[0] == current_node:
if nodes[1] not in visited or nodes[1].isupper():
print(f'{gen} destination: {nodes[1]}')
new_visited.append(nodes[1])
explore_tree(nodes[1], list(new_visited), paths_list, gen+1)
else:
print(f'{gen} removing dest: {nodes[1]}')
else:
if nodes[0] not in visited or nodes[0].isupper():
print(f'{gen} destination: {nodes[0]}')
new_visited.append(nodes[0])
explore_tree(nodes[0], list(new_visited), paths_list, gen+1)
else:
print(f'{gen} removing dest: {nodes[0]}')
connections = parse_file('input.txt')
print(f'connections: {connections}')
points = set()
for conn in connections:
p = conn.split('-')
points.add(p[0])
points.add(p[1])
print(f'unique points: {points}')
print()
starting_positions = [c for c in connections if 'start' in c]
ending_positions = [c for c in connections if 'end' in c]
visited_nodes = ['start']
all_path = []
explore_tree('start', visited_nodes, all_path, 0)
print()
print(f'listing all paths')
for p in all_path:
print(p)
print(f'{len(all_path)} paths')

26
12/input.txt Normal file
View file

@ -0,0 +1,26 @@
end-ry
jf-jb
jf-IO
jb-hz
jo-LM
hw-end
hw-LM
hz-ry
WI-start
LM-start
kd-jf
xi-WI
hw-jb
hz-jf
LM-jb
jb-xi
ry-jf
WI-jb
end-hz
jo-start
WI-jo
xi-ry
xi-LM
xi-hw
jo-xi
WI-jf

7
12/input_example1.txt Normal file
View file

@ -0,0 +1,7 @@
start-A
start-b
A-c
A-b
b-d
A-end
b-end

10
12/input_example2.txt Normal file
View file

@ -0,0 +1,10 @@
dc-end
HN-start
start-kj
dc-start
dc-HN
LN-dc
HN-end
kj-sa
kj-HN
kj-dc

18
12/input_example3.txt Normal file
View file

@ -0,0 +1,18 @@
fs-end
he-DX
fs-he
start-DX
pj-DX
end-zg
zg-sl
zg-pj
pj-he
RW-he
fs-DX
pj-RW
zg-RW
start-pj
he-WI
zg-he
pj-fs
start-RW