diff --git a/projects/aoc/src/year2022/Day10.kiss b/projects/aoc/src/year2022/Day10.kiss new file mode 100644 index 00000000..a16778be --- /dev/null +++ b/projects/aoc/src/year2022/Day10.kiss @@ -0,0 +1,30 @@ +(import year2022.OpCode) +(var cyclesToMeasure [20 60 100 140 180 220]) +(function :Array signalStrengths [:String programFile :Bool cycleLock] + (let [&mut x 1 + program (Util.readLines programFile) + ctm (cyclesToMeasure.copy) + &mut nextCycleToMeasure (ctm.shift) + :Array opCodes []] + (for cycle (range (+ 1 (last cyclesToMeasure))) + (let [properCycleNum (+ 1 cycle) + startX x] + (when (or !cycleLock !opCodes) + (case (.split (if cycleLock (program.shift) (nth program ~cycle)) " ") + (["addx" v] + (opCodes.push (object delay 2 op ->:Void (+= x (Std.parseInt v))))) + (otherwise))) + (doFor [idx opCode] (zip (reverse (collect (range opCodes.length))) (reverse opCodes)) + (-= opCode.delay 1) + (when (= 0 opCode.delay) + (opCode.op) + (opCodes.remove opCode))) + (if (= properCycleNum nextCycleToMeasure) + { + (set nextCycleToMeasure (ctm.shift)) + (* properCycleNum startX) + } + (continue)))))) + +(assertEquals 13140 (apply + (signalStrengths "src/year2022/inputs/day10example.txt" true))) +(assertEquals 15680 (apply + (signalStrengths (input 10) true))) \ No newline at end of file diff --git a/projects/aoc/src/year2022/OpCode.hx b/projects/aoc/src/year2022/OpCode.hx new file mode 100644 index 00000000..1e276d6c --- /dev/null +++ b/projects/aoc/src/year2022/OpCode.hx @@ -0,0 +1,6 @@ +package year2022; + +typedef OpCode = { + delay:Int, + op:Void->Void +}; diff --git a/projects/aoc/src/year2022/Solutions2022.kiss b/projects/aoc/src/year2022/Solutions2022.kiss index de85aa7e..7060a9cc 100644 --- a/projects/aoc/src/year2022/Solutions2022.kiss +++ b/projects/aoc/src/year2022/Solutions2022.kiss @@ -13,7 +13,7 @@ (day 7 (load "Day7.kiss")) (day 8 (load "Day8.kiss")) (dayTodo 9)//(day 9 (load "Day9.kiss")) -(dayTodo 10)//(day 10 (load "Day10.kiss")) +(day 10 (load "Day10.kiss")) (day 11 (load "Day11.kiss")) (dayTodo 12)//(day 12 (load "Day12.kiss")) (day 13 (load "Day13.kiss")) diff --git a/projects/aoc/src/year2022/inputs/day10.txt b/projects/aoc/src/year2022/inputs/day10.txt new file mode 100644 index 00000000..eb4a6455 --- /dev/null +++ b/projects/aoc/src/year2022/inputs/day10.txt @@ -0,0 +1,144 @@ +addx 2 +addx 3 +addx 1 +noop +addx 4 +noop +noop +noop +addx 5 +noop +addx 1 +addx 4 +addx -2 +addx 3 +addx 5 +addx -1 +addx 5 +addx 3 +addx -2 +addx 4 +noop +noop +noop +addx -27 +addx -5 +addx 2 +addx -7 +addx 3 +addx 7 +addx 5 +addx 2 +addx 5 +noop +noop +addx -2 +noop +addx 3 +addx 2 +addx 5 +addx 2 +addx 3 +noop +addx 2 +addx -29 +addx 30 +addx -26 +addx -10 +noop +addx 5 +noop +addx 18 +addx -13 +noop +noop +addx 5 +noop +noop +addx 5 +noop +noop +noop +addx 1 +addx 2 +addx 7 +noop +noop +addx 3 +noop +addx 2 +addx 3 +noop +addx -37 +noop +addx 16 +addx -12 +addx 29 +addx -16 +addx -10 +addx 5 +addx 2 +addx -11 +addx 11 +addx 3 +addx 5 +addx 2 +addx 2 +addx -1 +addx 2 +addx 5 +addx 2 +noop +noop +noop +addx -37 +noop +addx 17 +addx -10 +addx -2 +noop +addx 7 +addx 3 +noop +addx 2 +addx -10 +addx 22 +addx -9 +addx 5 +addx 2 +addx -5 +addx 6 +addx 2 +addx 5 +addx 2 +addx -28 +addx -7 +noop +noop +addx 1 +addx 4 +addx 17 +addx -12 +noop +noop +noop +noop +addx 5 +addx 6 +noop +addx -1 +addx -17 +addx 18 +noop +addx 5 +noop +noop +noop +addx 5 +addx 4 +addx -2 +noop +noop +noop +noop +noop diff --git a/projects/aoc/src/year2022/inputs/day10example.txt b/projects/aoc/src/year2022/inputs/day10example.txt new file mode 100644 index 00000000..94cd0a86 --- /dev/null +++ b/projects/aoc/src/year2022/inputs/day10example.txt @@ -0,0 +1,146 @@ +addx 15 +addx -11 +addx 6 +addx -3 +addx 5 +addx -1 +addx -8 +addx 13 +addx 4 +noop +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx -35 +addx 1 +addx 24 +addx -19 +addx 1 +addx 16 +addx -11 +noop +noop +addx 21 +addx -15 +noop +noop +addx -3 +addx 9 +addx 1 +addx -3 +addx 8 +addx 1 +addx 5 +noop +noop +noop +noop +noop +addx -36 +noop +addx 1 +addx 7 +noop +noop +noop +addx 2 +addx 6 +noop +noop +noop +noop +noop +addx 1 +noop +noop +addx 7 +addx 1 +noop +addx -13 +addx 13 +addx 7 +noop +addx 1 +addx -33 +noop +noop +noop +addx 2 +noop +noop +noop +addx 8 +noop +addx -1 +addx 2 +addx 1 +noop +addx 17 +addx -9 +addx 1 +addx 1 +addx -3 +addx 11 +noop +noop +addx 1 +noop +addx 1 +noop +noop +addx -13 +addx -19 +addx 1 +addx 3 +addx 26 +addx -30 +addx 12 +addx -1 +addx 3 +addx 1 +noop +noop +noop +addx -9 +addx 18 +addx 1 +addx 2 +noop +noop +addx 9 +noop +noop +noop +addx -1 +addx 2 +addx -37 +addx 1 +addx 3 +noop +addx 15 +addx -21 +addx 22 +addx -6 +addx 1 +noop +addx 2 +addx 1 +noop +addx -10 +noop +noop +addx 20 +addx 1 +addx 2 +addx 2 +addx -6 +addx -11 +noop +noop +noop \ No newline at end of file