77 lines
1.6 KiB
Lua
77 lines
1.6 KiB
Lua
--incomplete so far
|
|
io.input("input")
|
|
|
|
seeds = {}
|
|
nseeds = {}
|
|
|
|
mapi = 0
|
|
for line in io.lines() do
|
|
if mapi == 0 then
|
|
--[[
|
|
for num in line:gmatch("%d+") do
|
|
table.insert(seeds,tonumber(num))
|
|
end
|
|
--]]
|
|
--[
|
|
for start,range in line:gmatch("(%d+) (%d+)") do
|
|
start = tonumber(start)
|
|
range = tonumber(range)
|
|
for i=start,start+range-1 do
|
|
table.insert(seeds,i)
|
|
end
|
|
end
|
|
--]]
|
|
|
|
end
|
|
|
|
if line:match("^$") then
|
|
if mapi>0 then
|
|
-- print("result")
|
|
for i, seed in ipairs(seeds) do
|
|
if not nseeds[i] then
|
|
nseeds[i] = seed
|
|
end
|
|
-- print(i, seed, "->", nseeds[i])
|
|
end
|
|
for i,seed in ipairs(nseeds) do
|
|
seeds[i] = seed
|
|
end
|
|
nseeds = {}
|
|
end
|
|
|
|
mapi = mapi + 1
|
|
print(mapi)
|
|
goto continue
|
|
end
|
|
|
|
if mapi==0 or line:match("^[%a%- ]+:$") then
|
|
goto continue
|
|
end
|
|
|
|
dst, src, len = line:match("(%d+) (%d+) (%d+)")
|
|
dst = tonumber(dst)
|
|
src = tonumber(src)
|
|
len = tonumber(len)
|
|
-- print(dst, src, len)
|
|
|
|
for i, seed in ipairs(seeds) do
|
|
if seed >= src and seed<src+len then -- transform
|
|
diff = seed - src
|
|
nseeds[i] = dst + diff
|
|
-- print(seed,"->", dst+diff)
|
|
end
|
|
end
|
|
|
|
::continue::
|
|
end
|
|
|
|
print("final")
|
|
for i,s in ipairs(seeds) do
|
|
if i==1 then min = s
|
|
else if s<min then min=s end
|
|
end
|
|
print(i,s)
|
|
end
|
|
print("part 1", min)
|
|
|