#!/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 of crates end for i = 1, #line, 4 do local letter = line:sub(i+1,i+1) if letter ~= " " then table.insert(stacks[math.ceil(i/4)],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) local crates = {} for i = 1, amt do table.insert(crates, table.remove(stacks[from])) end for i = 1, #crates do table.insert(stacks[to], table.remove(crates)) end end local msg = {} for _,c in pairs(stacks) do table.insert(msg,c[#c]) end print(table.concat(msg))