From db9787b4bd95712c4f8d2449eb7c97c9daa363a9 Mon Sep 17 00:00:00 2001 From: Tim Stallard Date: Sat, 12 Dec 2020 11:32:21 +0000 Subject: [PATCH] day 12 --- 12/1.py | 26 ++ 12/2.py | 30 +++ 12/input | 755 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 12/test | 5 + 4 files changed, 816 insertions(+) create mode 100644 12/1.py create mode 100644 12/2.py create mode 100644 12/input create mode 100644 12/test diff --git a/12/1.py b/12/1.py new file mode 100644 index 0000000..5831659 --- /dev/null +++ b/12/1.py @@ -0,0 +1,26 @@ +direction = (1, 0) +position = [0, 0] + +def D(x, y): + def mv(n): + position[0] += x*n + position[1] += y*n + return mv + +def F(n): + position[0] += direction[0]*n + position[1] += direction[1]*n + +def R(d): + def rt(n): + global direction + directions = [(1, 0), (0, -1), (-1, 0), (0, 1)] + direction = directions[int(directions.index(direction) + d * (n/90)) % len(directions)] + return rt + +methods = {"N": D(0, 1), "S": D(0, -1), "E": D(1, 0), "W": D(-1, 0), "L": R(-1), "R": R(1), "F": F} + +[methods[s[0]](int(s[1:])) for s in open("input", "r").read().split("\n") if s] + +print(position) +print(abs(position[0]) + abs(position[1])) diff --git a/12/2.py b/12/2.py new file mode 100644 index 0000000..f5c7190 --- /dev/null +++ b/12/2.py @@ -0,0 +1,30 @@ +direction = [10, 1] +position = [0, 0] + +def D(x, y): + def mv(n): + direction[0] += x*n + direction[1] += y*n + return mv + +def F(n): + position[0] += direction[0]*n + position[1] += direction[1]*n + +def R90(): + global direction + direction = [direction[1], -1 * direction[0]] + +def R(d): + def rt(n): + count = int(d*(n/90)) + count = 4 + count if count < 0 else count + [R90() for a in range(0, count)] + return rt + +methods = {"N": D(0, 1), "S": D(0, -1), "E": D(1, 0), "W": D(-1, 0), "L": R(-1), "R": R(1), "F": F} + +[methods[s[0]](int(s[1:])) for s in open("input", "r").read().split("\n") if s] + +print(position) +print(abs(position[0]) + abs(position[1])) diff --git a/12/input b/12/input new file mode 100644 index 0000000..292642b --- /dev/null +++ b/12/input @@ -0,0 +1,755 @@ +W5 +N3 +W4 +F2 +N3 +R180 +E2 +S4 +E5 +N4 +E2 +L90 +F81 +E5 +R180 +E2 +F88 +L90 +N4 +E1 +F90 +S3 +W3 +R90 +F80 +E4 +F28 +R180 +S1 +F80 +E4 +F18 +S5 +W4 +F13 +R90 +S3 +W5 +N2 +F76 +L90 +N4 +F49 +L180 +E5 +R90 +F51 +E4 +L180 +F86 +S5 +L180 +F3 +E5 +W1 +R90 +F54 +N4 +E5 +R90 +E4 +N3 +W1 +E4 +R180 +W2 +F2 +S5 +W4 +E3 +R90 +F49 +R90 +W5 +N3 +F47 +E1 +L90 +E2 +F86 +E3 +R90 +F100 +F84 +N2 +F12 +L90 +N4 +W5 +F40 +N5 +F68 +W3 +R90 +W4 +N1 +F63 +W5 +S3 +F52 +R180 +W1 +W4 +L90 +N4 +R90 +S4 +L90 +F77 +R90 +E5 +F20 +N3 +W5 +R90 +E5 +R180 +F63 +S1 +W1 +W5 +F12 +E5 +L90 +N4 +F83 +W4 +F92 +W2 +F41 +E3 +S5 +R90 +S5 +W2 +N1 +F4 +N1 +F50 +L180 +F73 +N2 +L90 +E2 +S5 +F19 +L90 +E1 +N4 +L90 +S2 +L90 +F90 +L90 +N3 +E1 +F32 +E1 +F66 +R180 +E1 +S2 +F72 +R90 +S2 +E1 +N3 +F24 +W4 +F32 +W5 +S3 +E2 +F52 +W5 +F54 +E4 +F97 +N1 +R90 +W3 +R180 +E2 +S3 +R90 +N1 +N3 +F76 +R90 +F43 +E3 +N4 +L90 +E4 +F32 +E4 +S3 +F46 +R90 +N4 +E5 +L90 +F33 +W1 +W1 +N1 +E3 +S1 +R90 +W3 +L90 +F59 +W3 +S1 +F7 +W3 +F85 +R90 +F61 +E5 +S5 +F25 +F8 +L90 +N3 +F80 +W4 +F89 +N3 +E5 +N5 +L90 +F50 +F19 +L90 +N2 +R90 +F8 +W5 +S5 +L90 +F63 +S5 +S2 +F44 +N1 +W1 +L90 +R90 +W2 +F24 +W3 +S4 +R90 +F69 +E5 +F77 +W4 +F38 +R180 +W3 +S5 +N2 +F91 +F44 +N2 +W2 +R90 +W5 +F48 +W3 +R90 +F74 +E4 +S3 +R90 +E3 +L90 +F81 +W1 +F69 +W2 +N3 +R90 +E1 +R90 +L90 +E5 +S4 +E2 +S5 +F58 +N3 +F50 +L90 +N1 +L90 +N4 +L180 +W2 +L90 +F61 +L90 +S5 +E1 +S4 +W1 +S3 +E4 +F62 +S2 +L270 +F97 +R90 +S5 +L180 +F66 +E1 +R90 +E3 +L180 +F98 +R90 +F37 +R90 +F18 +N3 +R90 +E2 +S3 +L90 +S4 +F82 +W3 +F72 +N1 +E4 +F67 +L90 +W1 +S2 +F94 +R90 +F62 +N4 +W2 +S5 +R180 +F41 +W5 +F9 +W2 +F34 +L90 +N3 +R90 +F1 +N4 +E4 +R90 +F39 +S5 +W5 +N5 +R180 +F32 +W5 +F97 +R90 +N4 +W3 +R90 +N4 +W2 +N5 +W5 +R90 +S4 +L90 +F99 +N2 +R90 +E4 +N5 +E1 +F67 +R180 +W3 +S2 +E2 +F95 +E1 +S1 +W5 +S3 +E2 +F64 +L90 +F29 +S3 +F33 +F46 +S2 +R90 +N4 +E1 +F11 +F50 +L90 +E2 +F72 +L180 +N2 +E4 +N1 +E3 +S1 +F37 +W1 +R90 +N3 +L90 +W3 +F62 +R90 +F88 +W1 +S4 +E3 +L90 +S4 +R90 +E4 +S2 +F81 +W5 +F82 +L90 +F19 +R90 +R270 +E4 +F27 +R90 +N1 +W3 +R90 +W1 +S4 +L90 +W1 +F24 +L180 +R90 +S1 +E3 +S4 +L90 +E3 +F71 +R180 +S1 +F33 +S1 +F49 +S1 +R180 +E4 +L180 +F44 +R90 +W2 +F26 +R90 +L180 +L180 +F31 +S3 +E4 +R90 +W1 +L90 +W1 +N5 +F25 +N3 +L180 +F4 +N3 +S5 +E4 +R90 +S2 +L90 +F28 +E4 +N3 +L90 +S1 +R90 +N4 +W1 +N2 +R180 +E4 +L90 +S5 +R180 +S5 +F14 +E3 +F38 +S2 +F1 +E1 +F46 +R270 +F69 +L180 +N1 +R90 +W5 +N4 +F22 +R90 +N1 +L180 +F16 +N2 +E1 +N4 +F68 +L90 +E2 +F6 +E2 +F2 +E4 +R90 +W4 +E2 +R90 +S1 +W1 +S5 +F87 +S5 +F9 +W5 +F91 +L90 +S2 +R270 +F73 +L90 +F17 +L90 +E4 +W1 +R90 +F40 +E5 +F7 +R180 +R90 +R180 +E5 +F89 +R180 +W2 +L180 +F31 +E2 +S1 +W2 +F11 +L180 +E1 +F55 +E5 +S4 +L90 +S5 +W4 +R180 +F23 +E3 +R90 +F12 +E3 +F3 +S3 +W3 +L90 +W2 +N5 +E2 +F77 +E4 +S3 +F11 +W4 +F23 +E1 +R90 +F61 +E3 +L90 +S3 +N5 +W2 +R180 +W2 +S2 +N5 +E1 +S2 +L90 +W3 +R90 +F89 +R270 +N3 +L90 +R90 +W4 +S2 +W4 +L90 +S1 +E4 +E4 +S3 +R270 +F47 +L90 +E1 +F10 +L180 +W4 +R90 +N2 +F97 +L180 +F82 +N5 +L90 +S1 +E3 +F14 +R90 +F23 +N2 +F34 +L270 +E2 +F77 +E5 +L90 +S3 +R270 +F12 +N1 +E3 +R90 +E2 +F4 +W3 +E3 +F33 +S4 +R180 +S5 +R90 +E1 +R270 +F53 +N4 +L90 +N1 +W2 +S5 +E2 +R180 +W2 +S3 +L90 +N4 +W3 +N3 +F84 +E5 +N3 +L90 +F48 +W4 +F18 +L90 +W3 +S4 +E2 +S4 +F64 +N1 +F96 +S3 +E5 +N4 +W2 +F22 +W5 +L90 +F23 +E2 +N1 +F92 +F16 +L180 +E4 +N1 +F75 +L90 +W4 +L270 +W3 +S4 +L90 +F29 +W4 +S2 +F47 +R90 +N3 +L90 +S3 +W3 +N1 +F45 +N2 +L90 +E4 +N1 +L90 +E3 +R90 +N3 +F86 +W1 +N5 +W3 +S5 +L90 +S4 +W2 +F44 diff --git a/12/test b/12/test new file mode 100644 index 0000000..d382291 --- /dev/null +++ b/12/test @@ -0,0 +1,5 @@ +F10 +N3 +F7 +R90 +F11