58 lines
1.2 KiB
Lua
58 lines
1.2 KiB
Lua
function waterCollected(i,tower)
|
|
local length = 0
|
|
for _ in pairs(tower) do
|
|
length = length + 1
|
|
end
|
|
|
|
local wu = 0
|
|
repeat
|
|
local rht = length - 1
|
|
while rht >= 0 do
|
|
if tower[rht + 1] > 0 then
|
|
break
|
|
end
|
|
rht = rht - 1
|
|
end
|
|
if rht < 0 then
|
|
break
|
|
end
|
|
|
|
local bof = 0
|
|
local col = 0
|
|
while col <= rht do
|
|
if tower[col + 1] > 0 then
|
|
tower[col + 1] = tower[col + 1] - 1
|
|
bof = bof + 1
|
|
elseif bof > 0 then
|
|
wu = wu + 1
|
|
end
|
|
col = col + 1
|
|
end
|
|
if bof < 2 then
|
|
break
|
|
end
|
|
until false
|
|
if wu == 0 then
|
|
print(string.format("Block %d does not hold any water.", i))
|
|
else
|
|
print(string.format("Block %d holds %d water units.", i, wu))
|
|
end
|
|
end
|
|
|
|
function main()
|
|
local towers = {
|
|
{1, 5, 3, 7, 2},
|
|
{5, 3, 7, 2, 6, 4, 5, 9, 1, 2},
|
|
{2, 6, 3, 5, 2, 8, 1, 4, 2, 2, 5, 3, 5, 7, 4, 1},
|
|
{5, 5, 5, 5},
|
|
{5, 6, 7, 8},
|
|
{8, 7, 7, 6},
|
|
{6, 7, 10, 7, 6}
|
|
}
|
|
|
|
for i,tbl in pairs(towers) do
|
|
waterCollected(i,tbl)
|
|
end
|
|
end
|
|
|
|
main()
|