day 10, wren
This commit is contained in:
@@ -0,0 +1,53 @@
|
|||||||
|
import "aoc" for AoC
|
||||||
|
|
||||||
|
class CPU {
|
||||||
|
construct new() {
|
||||||
|
_cycle = 0
|
||||||
|
_x = 1
|
||||||
|
|
||||||
|
_every20 = 0
|
||||||
|
_str = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
every20 { _every20 }
|
||||||
|
str { _str }
|
||||||
|
|
||||||
|
tick() {
|
||||||
|
_cycle = _cycle + 1
|
||||||
|
if(_cycle % 40 == 20) {
|
||||||
|
_every20 = _every20 + _x * _cycle
|
||||||
|
}
|
||||||
|
var px = _cycle % 40
|
||||||
|
if(px == _x || px == _x + 1 || px == _x + 2) {
|
||||||
|
_str = _str + "#"
|
||||||
|
} else {
|
||||||
|
_str = _str + "."
|
||||||
|
}
|
||||||
|
if(_cycle % 40 == 0) {
|
||||||
|
_str = _str + "\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
noop() {
|
||||||
|
tick()
|
||||||
|
}
|
||||||
|
|
||||||
|
addx(x) {
|
||||||
|
tick()
|
||||||
|
tick()
|
||||||
|
_x = _x + x
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var cpu = CPU.new()
|
||||||
|
|
||||||
|
for(line in AoC.input.split("\n").where {|l| l != ""}) {
|
||||||
|
if(line == "noop") {
|
||||||
|
cpu.noop()
|
||||||
|
} else {
|
||||||
|
cpu.addx(Num.fromString(line.split(" ")[1]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
System.print(cpu.every20)
|
||||||
|
System.print(cpu.str)
|
||||||
Reference in New Issue
Block a user