Solve 2016 day 1 to get rolling again.
This commit is contained in:
39
2016/d1.py
Normal file
39
2016/d1.py
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
from lib import *
|
||||||
|
|
||||||
|
EXAMPLE = "R5, L5, R5, R3"
|
||||||
|
EXAMPLE = "R2, R2, R2"
|
||||||
|
EXAMPLE = "R8, R4, R4, R8"
|
||||||
|
|
||||||
|
DIRS = "NESW"
|
||||||
|
MOVES = {
|
||||||
|
"N": (-1, 0),
|
||||||
|
"E": (0, 1),
|
||||||
|
"S": (1, 0),
|
||||||
|
"W": (0, -1),
|
||||||
|
}
|
||||||
|
|
||||||
|
def solve(input: Input, second=False):
|
||||||
|
steps = input.text.split(", ")
|
||||||
|
coord, dir = (0, 0), "N"
|
||||||
|
allcoords = set([coord])
|
||||||
|
for step in steps:
|
||||||
|
turn, nsteps = step[0], int(step[1:])
|
||||||
|
os = -1 if turn == "L" else 1
|
||||||
|
dir = DIRS[(DIRS.index(dir) + os) % len(DIRS)]
|
||||||
|
rowo, colo = MOVES[dir]
|
||||||
|
if second:
|
||||||
|
for n in range(1, nsteps):
|
||||||
|
tcoord = (coord[0] + rowo * n, coord[1] + colo * n)
|
||||||
|
if tcoord in allcoords:
|
||||||
|
return abs(tcoord[0]) + abs(tcoord[1])
|
||||||
|
allcoords.add(tcoord)
|
||||||
|
coord = (coord[0] + rowo * nsteps, coord[1] + colo * nsteps)
|
||||||
|
return abs(coord[0]) + abs(coord[1])
|
||||||
|
|
||||||
|
def main():
|
||||||
|
DAY_INPUT = "i1.txt"
|
||||||
|
print("Solution 1:", solve(Input(DAY_INPUT)))
|
||||||
|
print("Solution 2:", solve(Input(DAY_INPUT), True))
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/lib.py
Symbolic link
1
2016/lib.py
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../lib.py
|
||||||
@@ -24,4 +24,11 @@ written in Python.
|
|||||||
- Day 17: 9:05
|
- Day 17: 9:05
|
||||||
- Day 18: 10:39
|
- Day 18: 10:39
|
||||||
- Day 19:
|
- Day 19:
|
||||||
- Day 20:
|
- Day 20: 10:54
|
||||||
|
- Day 21: 25:52 cute bug where I didn't consider that no armor is an option
|
||||||
|
- Day 22: That was bad. Did not know how to choose between dfs/bfs and logic errors.
|
||||||
|
- Day 23:
|
||||||
|
|
||||||
|
# 2016
|
||||||
|
|
||||||
|
- Day 1: 29:00 That was emberassingly slow. Out of my rhythm?
|
||||||
|
|||||||
Reference in New Issue
Block a user