Solve AOC day 10 part 1
This commit is contained in:
30
projects/aoc/src/year2022/Day10.kiss
Normal file
30
projects/aoc/src/year2022/Day10.kiss
Normal file
@@ -0,0 +1,30 @@
|
||||
(import year2022.OpCode)
|
||||
(var cyclesToMeasure [20 60 100 140 180 220])
|
||||
(function :Array<Int> signalStrengths [:String programFile :Bool cycleLock]
|
||||
(let [&mut x 1
|
||||
program (Util.readLines programFile)
|
||||
ctm (cyclesToMeasure.copy)
|
||||
&mut nextCycleToMeasure (ctm.shift)
|
||||
:Array<OpCode> 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)))
|
||||
6
projects/aoc/src/year2022/OpCode.hx
Normal file
6
projects/aoc/src/year2022/OpCode.hx
Normal file
@@ -0,0 +1,6 @@
|
||||
package year2022;
|
||||
|
||||
typedef OpCode = {
|
||||
delay:Int,
|
||||
op:Void->Void
|
||||
};
|
||||
@@ -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"))
|
||||
|
||||
144
projects/aoc/src/year2022/inputs/day10.txt
Normal file
144
projects/aoc/src/year2022/inputs/day10.txt
Normal file
@@ -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
|
||||
146
projects/aoc/src/year2022/inputs/day10example.txt
Normal file
146
projects/aoc/src/year2022/inputs/day10example.txt
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user