#!/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