From 3555be54c2abb8d5ece008a60dbdfbde0ffbddd7 Mon Sep 17 00:00:00 2001 From: Alex Pickering Date: Fri, 7 Feb 2025 12:49:48 -0600 Subject: inital commit --- 10/2.lua | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 10/2.lua (limited to '10/2.lua') diff --git a/10/2.lua b/10/2.lua new file mode 100644 index 0000000..377870d --- /dev/null +++ b/10/2.lua @@ -0,0 +1,46 @@ +require "ext" + +local w, h = 40, 6 +local cpu = { + r = {x = 1}, + isa = { + addx = { + nargs = 1, + cycles = 2, + f = function(self,v) + self.r.x = self.r.x + tonumber(v) + end + }, + noop = { + nargs = 0, + cycles = 1, + f = function(self) end + } + } +} + +local strength_sum = 0 +local cycle = 1 +for line in io.lines() do + local parts = {} + for part in line:gmatch("(%S+)") do + table.insert(parts,part) + end + local insn = table.remove(parts,1) + local ins = cpu.isa[insn] + assertf(ins, "No instruction %s in %s",insn,line) + for i = cycle,cycle + ins.cycles - 1 do + local crtpos = (i-1) % w + if crtpos + 1 == cpu.r.x or crtpos == cpu.r.x or crtpos - 1 == cpu.r.x then + io.write("#") + else + io.write(" ") + end + if i % 40 == 0 then + io.write("\n") + end + end + cycle = cycle + ins.cycles + ins.f(cpu,table.unpack(parts)) +end +print(strength_sum) -- cgit v1.2.3-70-g09d2