parent
8b771666f3
commit
e416a50231
@ -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) |
Loading…
Reference in new issue