Solve AOC day 10 part 1

This commit is contained in:
2022-12-19 08:25:33 -07:00
parent 397d0ead5c
commit 5f7100596a
5 changed files with 327 additions and 1 deletions

View 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)))

View File

@@ -0,0 +1,6 @@
package year2022;
typedef OpCode = {
delay:Int,
op:Void->Void
};

View File

@@ -13,7 +13,7 @@
(day 7 (load "Day7.kiss")) (day 7 (load "Day7.kiss"))
(day 8 (load "Day8.kiss")) (day 8 (load "Day8.kiss"))
(dayTodo 9)//(day 9 (load "Day9.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")) (day 11 (load "Day11.kiss"))
(dayTodo 12)//(day 12 (load "Day12.kiss")) (dayTodo 12)//(day 12 (load "Day12.kiss"))
(day 13 (load "Day13.kiss")) (day 13 (load "Day13.kiss"))

View 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

View 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