Added 2017/19

This commit is contained in:
2024-11-28 13:58:15 +01:00
parent c970981aa9
commit 81990b5833
4 changed files with 152 additions and 109 deletions
+42 -109
View File
@@ -2,129 +2,62 @@
import sys,re
from pprint import pprint
sys.path.insert(0, '../../')
from fred import list2int
from fred import list2int,get_value_in_direction
input_f = 'test'
input_f = 'input'
part = 1
#########################################
# #
# Part 1 #
# Part 1+2 #
# #
#########################################
#########################################
grid = []
start = ()
prev = ()
with open(input_f) as file:
for line in file:
grid.append(line.rstrip())
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
start = (0,grid[0].index('|'))
if part == 1:
with open(input_f) as file:
for line in file:
grid.append(list(line.rstrip()))
dir = (1,0)
visited = []
cur = start
count = 1
for r, row in enumerate(grid):
for c, col in enumerate(row):
print(grid[r][c],end='')
print()
while get_value_in_direction(grid,cur) != 'S': # last letter in my input
new = (cur[0]+dir[0],cur[1]+dir[1])
if get_value_in_direction(grid,new) != ' ':
cur = new
count += 1
if get_value_in_direction(grid,cur).isalpha():
visited.append(get_value_in_direction(grid,cur))
if get_value_in_direction(grid,cur) == '+':
for r, row in enumerate(grid):
for c, col in enumerate(row):
if r == 0:
if grid[r][c] == '|':
start = (r,c)
if get_value_in_direction(grid,cur,'right') == '-' and dir[1] != -1:
dir = (0,1)
continue
end = False
cur = start
prev = (-1,-1)
prev_dir = {
'up': False,
'down': False,
'left': False,
'right': False
}
if get_value_in_direction(grid,cur,'left') == '-' and dir[1] != 1:
dir = (0,-1)
continue
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()
if get_value_in_direction(grid,cur,'up') == '|' and dir[0] != 1:
dir = (-1,0)
continue
if get_value_in_direction(grid,cur,'down') == '|' and dir[0] != -1:
dir = (1,0)
continue
for i in visited:
print(i,end='')
print()
print(count)
#########################################
# #
# Part 2 #
# #
#########################################
if part == 2:
exit()