From 3555be54c2abb8d5ece008a60dbdfbde0ffbddd7 Mon Sep 17 00:00:00 2001 From: Alex Pickering Date: Fri, 7 Feb 2025 12:49:48 -0600 Subject: inital commit --- 05/1.lua | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 05/1.lua (limited to '05/1.lua') diff --git a/05/1.lua b/05/1.lua new file mode 100644 index 0000000..e4eaa6a --- /dev/null +++ b/05/1.lua @@ -0,0 +1,29 @@ +#!/usr/bin/env lua +local stacks +for line in io.lines() do + if not stacks then -- first line + stacks = {} + local num_stacks = math.ceil(#line / 4) + for i = 1, num_stacks do + stacks[i] = {} + end + end + if line:sub(2,2) == "1" then break end -- end of crates + for i = 1, #line, 4 do + local letter = line:sub(i+1,i+1) + if letter ~= " " then + local stacknum = math.ceil(i/4) + table.insert(stacks[stacknum],1,letter) + end + end +end +for line in io.lines() do break end -- empty line between crates and orders +for line in io.lines() do + local amt, from, to = line:match("move (%d+) from (%d+) to (%d+)") + amt, from, to = tonumber(amt), tonumber(from), tonumber(to) + for i = 1, amt do + table.insert(stacks[to],table.remove(stacks[from])) + end +end +table.insert(stacks,{"\n"}) +for _,c in ipairs(stacks) do io.write(c[#c]) end -- cgit v1.2.3-70-g09d2