Initial commit

This commit is contained in:
2023-07-07 00:47:08 -04:00
commit 6f916c29d1
43 changed files with 13417 additions and 0 deletions

1
2016/day1 Normal file
View File

@ -0,0 +1 @@
R1, L4, L5, L5, R2, R2, L1, L1, R2, L3, R4, R3, R2, L4, L2, R5, L1, R5, L5, L2, L3, L1, R1, R4, R5, L3, R2, L4, L5, R1, R2, L3, R3, L3, L1, L2, R5, R4, R5, L5, R1, L190, L3, L3, R3, R4, R47, L3, R5, R79, R5, R3, R1, L4, L3, L2, R194, L2, R1, L2, L2, R4, L5, L5, R1, R1, L1, L3, L2, R5, L3, L3, R4, R1, R5, L4, R3, R1, L1, L2, R4, R1, L2, R4, R4, L5, R3, L5, L3, R1, R1, L3, L1, L1, L3, L4, L1, L2, R1, L5, L3, R2, L5, L3, R5, R3, L4, L2, R2, R4, R4, L4, R5, L1, L3, R3, R4, R4, L5, R4, R2, L3, R4, R2, R1, R2, L4, L2, R2, L5, L5, L3, R5, L5, L1, R4, L1, R1, L1, R4, L5, L3, R4, R1, L3, R4, R1, L3, L1, R1, R2, L4, L2, R1, L5, L4, L5

98
2016/day1.py Executable file
View File

@ -0,0 +1,98 @@
#!/usr/bin/env python3
def turn(direction, facing):
match facing:
case 'North':
if direction == 'R':
facing = 'East'
else:
facing = 'West'
case 'East':
if direction == 'R':
facing = 'South'
else:
facing = 'North'
case 'South':
if direction == 'R':
facing = 'West'
else:
facing = 'East'
case 'West':
if direction == 'R':
facing = 'North'
else:
facing = 'South'
return facing
def check_locations(blocks, facing, x_coord, y_coord, locations):
x_coord, y_coord = locations[-1]
match facing:
case 'North':
for block in range(1, blocks + 1):
if [x_coord + block, y_coord] in locations:
return [x_coord + block, y_coord]
locations.append([x_coord + block, y_coord])
case 'East':
for block in range(1, blocks + 1):
if [x_coord, y_coord + block] in locations:
return [x_coord, y_coord + block]
locations.append([x_coord, y_coord + block])
case 'South':
for block in range(1, blocks + 1):
if [x_coord - block, y_coord] in locations:
return [x_coord - block, y_coord]
locations.append([x_coord - block, y_coord])
case 'West':
for block in range(1, blocks + 1):
if [x_coord, y_coord - block] in locations:
return [x_coord, y_coord - block]
locations.append([x_coord, y_coord - block])
def walk(blocks, facing, x_coord, y_coord):
match facing:
case 'North':
x_coord += blocks
case 'East':
y_coord += blocks
case 'South':
x_coord -= blocks
case 'West':
y_coord -= blocks
return x_coord, y_coord
def main():
x_coord = 0
y_coord = 0
facing = 'North'
with open('day1', 'r') as file:
line = file.readlines()[0][:-1]
sequences = line.split(', ')
locations = [[0,0]]
hq_loc = []
for sequence in sequences:
direction = sequence[0]
blocks = int(sequence[1:])
facing = turn(direction, facing)
x_coord, y_coord = walk(blocks , facing, x_coord, y_coord)
for sequence in sequences:
direction = sequence[0]
blocks = int(sequence[1:])
facing = turn(direction, facing)
hq_loc = check_locations(blocks, facing, x_coord, y_coord, locations)
if hq_loc:
break
print(abs(x_coord) + abs(y_coord))
print(abs(hq_loc[0]) + abs(hq_loc[1]))
if __name__ == '__main__':
main()