Solve AOC day 12 pt 1
This commit is contained in:
7
projects/aoc/src/year2020/Evasion.hx
Normal file
7
projects/aoc/src/year2020/Evasion.hx
Normal file
@@ -0,0 +1,7 @@
|
||||
package year2020;
|
||||
|
||||
import kiss.EmbeddedScript;
|
||||
import kiss.Prelude;
|
||||
|
||||
@:build(kiss.EmbeddedScript.build("src/year2020/EvasionDSL.kiss", "src/year2020/inputs/day12.txt"))
|
||||
class EvasionScript extends EmbeddedScript {}
|
38
projects/aoc/src/year2020/EvasionDSL.kiss
Normal file
38
projects/aoc/src/year2020/EvasionDSL.kiss
Normal file
@@ -0,0 +1,38 @@
|
||||
(defprop &mut x 0)
|
||||
(defprop &mut y 0)
|
||||
// 0 is east
|
||||
// 1 is south
|
||||
// 2 is west
|
||||
// 3 is north
|
||||
(defprop &mut facing 0)
|
||||
|
||||
(defun fixFacing [f]
|
||||
(Math.floor (% (if (> 0 f) (+ 4 f) f) 4)))
|
||||
|
||||
(defmethod N [num]
|
||||
(set y (+ y num)))
|
||||
(defmethod S [num]
|
||||
(set y (- y num)))
|
||||
(defmethod E [num]
|
||||
(set x (+ x num)))
|
||||
(defmethod W [num]
|
||||
(set x (- x num)))
|
||||
(defmethod R [angle]
|
||||
(set facing (fixFacing (+ facing (/ angle 90)))))
|
||||
(defmethod L [angle]
|
||||
(set facing (fixFacing (- facing (/ angle 90)))))
|
||||
(defmethod F [num]
|
||||
(case facing
|
||||
(0 (E num))
|
||||
(1 (S num))
|
||||
(2 (W num))
|
||||
(3 (N num))
|
||||
(otherwise (throw (+ "Bad facing" facing)))))
|
||||
|
||||
(defreadermacro "" [stream]
|
||||
(stream.dropWhitespace)
|
||||
(if (stream.isEmpty)
|
||||
null
|
||||
`(,(ReaderExp.Symbol
|
||||
(stream.expect "a ship command" (lambda [] (stream.takeChars 1))))
|
||||
,(ReaderExp.Symbol (stream.expect "a number argument" (lambda [] (stream.takeUntilAndDrop #|"\n"|#)))))))
|
@@ -15,6 +15,7 @@ import year2020.Customs;
|
||||
import year2020.Bags;
|
||||
import year2020.BootCode;
|
||||
import year2020.Adapters;
|
||||
import year2020.Evasion;
|
||||
|
||||
@:build(kiss.Kiss.build("src/year2020/Solutions.kiss"))
|
||||
class Solutions {}
|
||||
|
@@ -137,18 +137,38 @@
|
||||
(let [memoized (memoize Adapters.arrangementCount)]
|
||||
(set Adapters.arrangementCount #|cast memoized|#))
|
||||
(assert (= "347250213298688" (Int64.toStr (Adapters.arrangementCount adapters 0))))))
|
||||
// Day 11
|
||||
(when (<= 0 (days.indexOf 11)) (print "TODO day 11"))
|
||||
(when (<= 0 (days.indexOf 12)) (print "TODO day 12"))
|
||||
|
||||
// Day 12
|
||||
(when (<= 0 (days.indexOf 12))
|
||||
(let [script (new EvasionScript)]
|
||||
(script.run)
|
||||
(assert (= 441 (+ (Math.abs script.x) (Math.abs script.y))))))
|
||||
|
||||
// Day 13
|
||||
(when (<= 0 (days.indexOf 13)) (print "TODO day 13"))
|
||||
// Day 14
|
||||
(when (<= 0 (days.indexOf 14)) (print "TODO day 14"))
|
||||
// Day 15
|
||||
(when (<= 0 (days.indexOf 15)) (print "TODO day 15"))
|
||||
// Day 16
|
||||
(when (<= 0 (days.indexOf 16)) (print "TODO day 16"))
|
||||
// Day 17
|
||||
(when (<= 0 (days.indexOf 17)) (print "TODO day 17"))
|
||||
// Day 18
|
||||
(when (<= 0 (days.indexOf 18)) (print "TODO day 18"))
|
||||
// Day 19
|
||||
(when (<= 0 (days.indexOf 19)) (print "TODO day 19"))
|
||||
// Day 20
|
||||
(when (<= 0 (days.indexOf 20)) (print "TODO day 20"))
|
||||
// Day 21
|
||||
(when (<= 0 (days.indexOf 21)) (print "TODO day 21"))
|
||||
// Day 22
|
||||
(when (<= 0 (days.indexOf 22)) (print "TODO day 22"))
|
||||
// Day 23
|
||||
(when (<= 0 (days.indexOf 23)) (print "TODO day 23"))
|
||||
// Day 24
|
||||
(when (<= 0 (days.indexOf 24)) (print "TODO day 24"))
|
||||
// Day 25
|
||||
(when (<= 0 (days.indexOf 25)) (print "TODO day 25")))
|
768
projects/aoc/src/year2020/inputs/day12.txt
Normal file
768
projects/aoc/src/year2020/inputs/day12.txt
Normal file
@@ -0,0 +1,768 @@
|
||||
S1
|
||||
F17
|
||||
S3
|
||||
F56
|
||||
W5
|
||||
F11
|
||||
N4
|
||||
F94
|
||||
W4
|
||||
S1
|
||||
L180
|
||||
E2
|
||||
F38
|
||||
S3
|
||||
F46
|
||||
L90
|
||||
N2
|
||||
S3
|
||||
W3
|
||||
L90
|
||||
E1
|
||||
L180
|
||||
F73
|
||||
L90
|
||||
E1
|
||||
N3
|
||||
R90
|
||||
S5
|
||||
E5
|
||||
L90
|
||||
W2
|
||||
F1
|
||||
E5
|
||||
R270
|
||||
W3
|
||||
S4
|
||||
W5
|
||||
F55
|
||||
E2
|
||||
L90
|
||||
W5
|
||||
L90
|
||||
E1
|
||||
L90
|
||||
F9
|
||||
W5
|
||||
F21
|
||||
E4
|
||||
F63
|
||||
E1
|
||||
F48
|
||||
N1
|
||||
F80
|
||||
E5
|
||||
L90
|
||||
N1
|
||||
E1
|
||||
S4
|
||||
R180
|
||||
F48
|
||||
F87
|
||||
N5
|
||||
W2
|
||||
F90
|
||||
S4
|
||||
E5
|
||||
F76
|
||||
F37
|
||||
R180
|
||||
E5
|
||||
F51
|
||||
S3
|
||||
R90
|
||||
F79
|
||||
F25
|
||||
L90
|
||||
W1
|
||||
F100
|
||||
S2
|
||||
E3
|
||||
L90
|
||||
N1
|
||||
W4
|
||||
F41
|
||||
S5
|
||||
L90
|
||||
W5
|
||||
L90
|
||||
W2
|
||||
S4
|
||||
W3
|
||||
F75
|
||||
L90
|
||||
F20
|
||||
E5
|
||||
N5
|
||||
R90
|
||||
F99
|
||||
N4
|
||||
N1
|
||||
L90
|
||||
N5
|
||||
N2
|
||||
E2
|
||||
S4
|
||||
F29
|
||||
L180
|
||||
N1
|
||||
W3
|
||||
L90
|
||||
W3
|
||||
L180
|
||||
F84
|
||||
F25
|
||||
E1
|
||||
S3
|
||||
R90
|
||||
F64
|
||||
L90
|
||||
E1
|
||||
F40
|
||||
N3
|
||||
R90
|
||||
N3
|
||||
F67
|
||||
F37
|
||||
L90
|
||||
F17
|
||||
E4
|
||||
F87
|
||||
N3
|
||||
W5
|
||||
S2
|
||||
R90
|
||||
E4
|
||||
N1
|
||||
W4
|
||||
F75
|
||||
E2
|
||||
F18
|
||||
R90
|
||||
F6
|
||||
S4
|
||||
F13
|
||||
E1
|
||||
L270
|
||||
F50
|
||||
W2
|
||||
R90
|
||||
W4
|
||||
S5
|
||||
R90
|
||||
F14
|
||||
L180
|
||||
N5
|
||||
L180
|
||||
F78
|
||||
E1
|
||||
S3
|
||||
R90
|
||||
E2
|
||||
R270
|
||||
E4
|
||||
S1
|
||||
L90
|
||||
L180
|
||||
F91
|
||||
W3
|
||||
W5
|
||||
F45
|
||||
N4
|
||||
F44
|
||||
L90
|
||||
N3
|
||||
L90
|
||||
S2
|
||||
L90
|
||||
F76
|
||||
W3
|
||||
R90
|
||||
F3
|
||||
W3
|
||||
F24
|
||||
L90
|
||||
F83
|
||||
W2
|
||||
F19
|
||||
S4
|
||||
L90
|
||||
N4
|
||||
E5
|
||||
L180
|
||||
N5
|
||||
W5
|
||||
F67
|
||||
S3
|
||||
R90
|
||||
E4
|
||||
F51
|
||||
L90
|
||||
E5
|
||||
L90
|
||||
F79
|
||||
E2
|
||||
N2
|
||||
W4
|
||||
E2
|
||||
L90
|
||||
F41
|
||||
E4
|
||||
N2
|
||||
L90
|
||||
N2
|
||||
L90
|
||||
N3
|
||||
F51
|
||||
F79
|
||||
N2
|
||||
W2
|
||||
N5
|
||||
W4
|
||||
F60
|
||||
N3
|
||||
R90
|
||||
W4
|
||||
S1
|
||||
F59
|
||||
W1
|
||||
F3
|
||||
N5
|
||||
L180
|
||||
N5
|
||||
F23
|
||||
N4
|
||||
E3
|
||||
R90
|
||||
F14
|
||||
W4
|
||||
F86
|
||||
L90
|
||||
N2
|
||||
S1
|
||||
W3
|
||||
R90
|
||||
N1
|
||||
F25
|
||||
L90
|
||||
F22
|
||||
E5
|
||||
F88
|
||||
L270
|
||||
F14
|
||||
N5
|
||||
F32
|
||||
N1
|
||||
F98
|
||||
S1
|
||||
W2
|
||||
E5
|
||||
L180
|
||||
E4
|
||||
S2
|
||||
F46
|
||||
L180
|
||||
W4
|
||||
F87
|
||||
E2
|
||||
F83
|
||||
R90
|
||||
S5
|
||||
F68
|
||||
E5
|
||||
F95
|
||||
N1
|
||||
F43
|
||||
E2
|
||||
F64
|
||||
S3
|
||||
F5
|
||||
S1
|
||||
W3
|
||||
L90
|
||||
E4
|
||||
L90
|
||||
F63
|
||||
S3
|
||||
F44
|
||||
N4
|
||||
R90
|
||||
F95
|
||||
S5
|
||||
W1
|
||||
N4
|
||||
W4
|
||||
F87
|
||||
W3
|
||||
N3
|
||||
L180
|
||||
W4
|
||||
R180
|
||||
N2
|
||||
E2
|
||||
N2
|
||||
L90
|
||||
W5
|
||||
R90
|
||||
W1
|
||||
F22
|
||||
L180
|
||||
N4
|
||||
W1
|
||||
S1
|
||||
R90
|
||||
N3
|
||||
R180
|
||||
S5
|
||||
W4
|
||||
R90
|
||||
E3
|
||||
S1
|
||||
E3
|
||||
N1
|
||||
L270
|
||||
F96
|
||||
E2
|
||||
N1
|
||||
F98
|
||||
W4
|
||||
L90
|
||||
W1
|
||||
W4
|
||||
R90
|
||||
W2
|
||||
S3
|
||||
F64
|
||||
S3
|
||||
F67
|
||||
N2
|
||||
R180
|
||||
S5
|
||||
F13
|
||||
N4
|
||||
F53
|
||||
W1
|
||||
N1
|
||||
L90
|
||||
F54
|
||||
S1
|
||||
E2
|
||||
F28
|
||||
R90
|
||||
W3
|
||||
L90
|
||||
E3
|
||||
N4
|
||||
F34
|
||||
R90
|
||||
F51
|
||||
L90
|
||||
F24
|
||||
R180
|
||||
W4
|
||||
N2
|
||||
F88
|
||||
F78
|
||||
S2
|
||||
E1
|
||||
N2
|
||||
L180
|
||||
F58
|
||||
E4
|
||||
R90
|
||||
N4
|
||||
L90
|
||||
N5
|
||||
R180
|
||||
N5
|
||||
R270
|
||||
W3
|
||||
F41
|
||||
S4
|
||||
F61
|
||||
R90
|
||||
F71
|
||||
S1
|
||||
F9
|
||||
R90
|
||||
F47
|
||||
W2
|
||||
N4
|
||||
L180
|
||||
W5
|
||||
F52
|
||||
L90
|
||||
N4
|
||||
F11
|
||||
W3
|
||||
L90
|
||||
W5
|
||||
N4
|
||||
F10
|
||||
S1
|
||||
F75
|
||||
S5
|
||||
L90
|
||||
S2
|
||||
F28
|
||||
L90
|
||||
F80
|
||||
E3
|
||||
R180
|
||||
E4
|
||||
F42
|
||||
E4
|
||||
F85
|
||||
N1
|
||||
W4
|
||||
R90
|
||||
E2
|
||||
F38
|
||||
R90
|
||||
F77
|
||||
F95
|
||||
L90
|
||||
S5
|
||||
F86
|
||||
R90
|
||||
N1
|
||||
E2
|
||||
R90
|
||||
N3
|
||||
F28
|
||||
R180
|
||||
N5
|
||||
F25
|
||||
E3
|
||||
F52
|
||||
N4
|
||||
E3
|
||||
N4
|
||||
E3
|
||||
F37
|
||||
L180
|
||||
N1
|
||||
E2
|
||||
L180
|
||||
E5
|
||||
F82
|
||||
N4
|
||||
F100
|
||||
N3
|
||||
E3
|
||||
L90
|
||||
W3
|
||||
S1
|
||||
R270
|
||||
E5
|
||||
W5
|
||||
R90
|
||||
F44
|
||||
F15
|
||||
R180
|
||||
S3
|
||||
L90
|
||||
E4
|
||||
F44
|
||||
R90
|
||||
N1
|
||||
E4
|
||||
N4
|
||||
F62
|
||||
R90
|
||||
S4
|
||||
L180
|
||||
S1
|
||||
F13
|
||||
E3
|
||||
F70
|
||||
L270
|
||||
F52
|
||||
L270
|
||||
F80
|
||||
L90
|
||||
F89
|
||||
N4
|
||||
F79
|
||||
W5
|
||||
F55
|
||||
R90
|
||||
F62
|
||||
E4
|
||||
F91
|
||||
R180
|
||||
E2
|
||||
F74
|
||||
R90
|
||||
F18
|
||||
L90
|
||||
E3
|
||||
N5
|
||||
E2
|
||||
R90
|
||||
W2
|
||||
R180
|
||||
N3
|
||||
F69
|
||||
W3
|
||||
R90
|
||||
F92
|
||||
E2
|
||||
F48
|
||||
N2
|
||||
L90
|
||||
S3
|
||||
F49
|
||||
E3
|
||||
L180
|
||||
F6
|
||||
R90
|
||||
S5
|
||||
F58
|
||||
F67
|
||||
E5
|
||||
S2
|
||||
L90
|
||||
W5
|
||||
F3
|
||||
S1
|
||||
F73
|
||||
W1
|
||||
E4
|
||||
R180
|
||||
N3
|
||||
E2
|
||||
F72
|
||||
L90
|
||||
S1
|
||||
F31
|
||||
W1
|
||||
F44
|
||||
L180
|
||||
F100
|
||||
W3
|
||||
N1
|
||||
W5
|
||||
L90
|
||||
S2
|
||||
N3
|
||||
R90
|
||||
W4
|
||||
S5
|
||||
F62
|
||||
E5
|
||||
F55
|
||||
L180
|
||||
W2
|
||||
L90
|
||||
E1
|
||||
F45
|
||||
S3
|
||||
W2
|
||||
F49
|
||||
N4
|
||||
L90
|
||||
E3
|
||||
N2
|
||||
R180
|
||||
E5
|
||||
N1
|
||||
N5
|
||||
E5
|
||||
R90
|
||||
W3
|
||||
F73
|
||||
E3
|
||||
F66
|
||||
L90
|
||||
S2
|
||||
E3
|
||||
F100
|
||||
S3
|
||||
W2
|
||||
S4
|
||||
W5
|
||||
R180
|
||||
E4
|
||||
S3
|
||||
S1
|
||||
W2
|
||||
R90
|
||||
F22
|
||||
R90
|
||||
F76
|
||||
L270
|
||||
S5
|
||||
F95
|
||||
L90
|
||||
N3
|
||||
F16
|
||||
R270
|
||||
S3
|
||||
N5
|
||||
F66
|
||||
R90
|
||||
F63
|
||||
W5
|
||||
F37
|
||||
N2
|
||||
L90
|
||||
W1
|
||||
F68
|
||||
R90
|
||||
F98
|
||||
E4
|
||||
S3
|
||||
R90
|
||||
E2
|
||||
S1
|
||||
F91
|
||||
E1
|
||||
F42
|
||||
E1
|
||||
F13
|
||||
S4
|
||||
F10
|
||||
R180
|
||||
E4
|
||||
R90
|
||||
N2
|
||||
W4
|
||||
L180
|
||||
N5
|
||||
R90
|
||||
N3
|
||||
F26
|
||||
R90
|
||||
F42
|
||||
L180
|
||||
E5
|
||||
S3
|
||||
L90
|
||||
S3
|
||||
E3
|
||||
F79
|
||||
R270
|
||||
E4
|
||||
F54
|
||||
N5
|
||||
W3
|
||||
F16
|
||||
W1
|
||||
S3
|
||||
R90
|
||||
F100
|
||||
S1
|
||||
W3
|
||||
N2
|
||||
E1
|
||||
S4
|
||||
F1
|
||||
R180
|
||||
F66
|
||||
W2
|
||||
R90
|
||||
W2
|
||||
F27
|
||||
E2
|
||||
F16
|
||||
R90
|
||||
S3
|
||||
F61
|
||||
E1
|
||||
F4
|
||||
L90
|
||||
N5
|
||||
F45
|
||||
L90
|
||||
N1
|
||||
L90
|
||||
F50
|
||||
W1
|
||||
R90
|
||||
N1
|
||||
F44
|
||||
S2
|
||||
F53
|
||||
S5
|
||||
F59
|
||||
E4
|
||||
S3
|
||||
E2
|
||||
N5
|
||||
E2
|
||||
L90
|
||||
E4
|
||||
L90
|
||||
N1
|
||||
L90
|
||||
N5
|
||||
F31
|
||||
R180
|
||||
N2
|
||||
F18
|
||||
E2
|
||||
F27
|
||||
L90
|
||||
F57
|
||||
R90
|
||||
F40
|
||||
R180
|
||||
E2
|
||||
F94
|
||||
S3
|
||||
E2
|
||||
S4
|
||||
E4
|
||||
R90
|
||||
L90
|
||||
E5
|
||||
N5
|
||||
E1
|
||||
N3
|
||||
F97
|
||||
S3
|
||||
F16
|
||||
E3
|
||||
W5
|
||||
F80
|
||||
S1
|
||||
W2
|
||||
S4
|
||||
F18
|
||||
N4
|
||||
E5
|
||||
R90
|
||||
N1
|
||||
F43
|
||||
N4
|
||||
E4
|
||||
N1
|
||||
E2
|
||||
W1
|
||||
F99
|
||||
W4
|
||||
F79
|
||||
F20
|
||||
E3
|
||||
F63
|
||||
W4
|
||||
F21
|
||||
E1
|
||||
F82
|
||||
E3
|
||||
R90
|
||||
F8
|
||||
N5
|
||||
W2
|
||||
L180
|
||||
W5
|
||||
F13
|
||||
S2
|
||||
L90
|
||||
N3
|
||||
R180
|
||||
N4
|
||||
F9
|
||||
L90
|
||||
F39
|
Reference in New Issue
Block a user