summaryrefslogtreecommitdiff
path: root/05/2.lua
blob: a13263084fb0c05dfab52288150334ba79c8f0b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/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))