AdventOfCode/2017/19/solution.py

131 lines
3.3 KiB
Python
Raw Normal View History

2024-11-27 23:20:51 +01:00
#!/bin/python3
import sys,re
from pprint import pprint
sys.path.insert(0, '../../')
from fred import list2int
input_f = 'test'
part = 1
#########################################
# #
# Part 1 #
# #
#########################################
grid = []
start = ()
prev = ()
def valid_n(grid,cur):
r,c = cur
count = 0
if grid[r-1][c] != ' ':
count += 1
if grid[r+1][c] != ' ':
count += 1
if grid[r][c+1] != ' ':
count += 1
if grid[r][c-1] != ' ':
count += 1
return count
if part == 1:
with open(input_f) as file:
for line in file:
grid.append(list(line.rstrip()))
for r, row in enumerate(grid):
for c, col in enumerate(row):
print(grid[r][c],end='')
print()
for r, row in enumerate(grid):
for c, col in enumerate(row):
if r == 0:
if grid[r][c] == '|':
start = (r,c)
end = False
cur = start
prev = (-1,-1)
prev_dir = {
'up': False,
'down': False,
'left': False,
'right': False
}
while not end:
r,c = cur
try:
if grid[r-1][c] != ' ' and prev != (r-1,c):
print('up',grid[r-1][c])
prev = cur
prev_dir = {
'up': True,
'down': False,
'left': False,
'right': False
}
cur = (r-1,c)
except Exception as e:
print(e)
try:
if grid[r+1][c] != ' ' and prev != (r+1,c):
print('down',grid[r+1][c])
if valid_n(grid,cur) >= 1 and prev_dir['down']:
prev = cur
prev_dir = {
'up': False,
'down': True,
'left': False,
'right': False
}
cur = (r+1,c)
except Exception as e:
print(e)
try:
if grid[r][c-1] != ' ' and prev != (r,c-1) and not prev_dir['left']:
print('left',grid[r][c-1])
prev = cur
prev_dir = {
'up': False,
'down': False,
'left': True,
'right': False
}
cur = (r,c-1)
except Exception as e:
print(e)
try:
if grid[r][c+1] != ' ' and prev != (r,c+1) and not prev_dir['right']:
print('right',grid[r][c+1])
prev = cur
prev_dir = {
'up': False,
'down': False,
'left': False,
'right': True
}
cur = (r,c+1)
except Exception as e:
print(e)
input()
#########################################
# #
# Part 2 #
# #
#########################################
if part == 2:
exit()