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