This commit is contained in:
2024-12-13 14:11:23 +01:00
commit 58d0015201
2 changed files with 110 additions and 0 deletions

109
01/01.py Normal file
View File

@@ -0,0 +1,109 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
file = "./input.txt"
ex1 = ["R2", "L3"]
ex2 = ["R2", "R2", "R2"]
ex3 = ["R5", "L5", "R5", "R3"]
ex4 = ["R8", "R4", "R4", "R8"]
from time import time
start_time = time()
def read_file(f:str) -> list:
out = []
input_file = open(f, "r")
for line in input_file:
line = line.strip()
if line == "":
continue
else:
line = line.replace(" ","").split(',')
out.extend(line)
input_file.close()
return out
def check_position(pos:tuple[int, int]):
if pos in pos_list:
print(f'Solution P2: {abs(pos[0]) + abs(pos[1])}')
global part2
part2 = False
else:
pos_list.append(pos)
def go(pos:tuple[int, int, str], steps:str) -> tuple[int, int, str]:
global part2
we, ns, direction = pos
step = int(steps[1:])
if direction == "N":
if steps[0] == "R":
direction = "E"
for _ in range(step):
we += 1
if part2:
check_position((we,ns))
elif steps[0] == "L":
direction = "W"
for _ in range(step):
we -= 1
if part2:
check_position((we,ns))
elif direction == "S":
if steps[0] == "R":
direction = "W"
for _ in range(step):
we -= 1
if part2:
check_position((we,ns))
elif steps[0] == "L":
direction = "E"
for _ in range(step):
we += 1
if part2:
check_position((we,ns))
elif direction == "W":
if steps[0] == "R":
direction = "N"
for _ in range(step):
ns += 1
if part2:
check_position((we,ns))
elif steps[0] == "L":
direction = "S"
for _ in range(step):
ns -= 1
if part2:
check_position((we,ns))
elif direction == "E":
if steps[0] == "R":
direction = "S"
for _ in range(step):
ns -= 1
if part2:
check_position((we,ns))
elif steps[0] == "L":
direction = "N"
for _ in range(step):
ns += 1
if part2:
check_position((we,ns))
return we, ns, direction
if __name__ == "__main__":
position = (0,0,"N")
pos_list = [(0,0)]
part2 = True
input_list = read_file(file)
#input_list = ex1
#input_list = ex2
#input_list = ex3
# input_list = ex4
for elem in input_list:
position = go(position, elem)
solution = abs(position[0]) + abs(position[1])
# print(input_list)
print(f'Solution P1: {solution}')
print(f'Runtime: {time()-start_time:.2f} s')

1
01/input.txt Normal file
View File

@@ -0,0 +1 @@
L4, L3, R1, L4, R2, R2, L1, L2, R1, R1, L3, R5, L2, R5, L4, L3, R2, R2, L5, L1, R4, L1, R3, L3, R5, R2, L5, R2, R1, R1, L5, R1, L3, L2, L5, R4, R4, L2, L1, L1, R1, R1, L185, R4, L1, L1, R5, R1, L1, L3, L2, L1, R2, R2, R2, L1, L1, R4, R5, R53, L1, R1, R78, R3, R4, L1, R5, L1, L4, R3, R3, L3, L3, R191, R4, R1, L4, L1, R3, L1, L2, R3, R2, R4, R5, R5, L3, L5, R2, R3, L1, L1, L3, R1, R4, R1, R3, R4, R4, R4, R5, R2, L5, R1, R2, R5, L3, L4, R1, L5, R1, L4, L3, R5, R5, L3, L4, L4, R2, R2, L5, R3, R1, R2, R5, L5, L3, R4, L5, R5, L3, R1, L1, R4, R4, L3, R2, R5, R1, R2, L1, R4, R1, L3, L3, L5, R2, R5, L1, L4, R3, R3, L3, R2, L5, R1, R3, L3, R2, L1, R4, R3, L4, R5, L2, L2, R5, R1, R2, L4, L4, L5, R3, L4