local I = io.read"a" local W,H,depth,idx = I:match"P5\n(%d+) (%d+)\n(%d+)\n()" W,H,depth = tonumber(W),tonumber(H),tonumber(depth) local R = {} for y=1,H do R[y]={} for x=1,W do R[y][x]=I:sub(idx,idx):byte() idx=idx+1 end end local function lerp(a,b,t) return (1-t)*a + t*b end local function scrunkle(row, from,to, len) local o={} for i=1,len do local x = (i-1)/(len-1) * (to-from) + from local j = math.floor(x) local p0,p1 = row[j] or 0, row[j+1] or 0 o[i] = math.floor(lerp(p0,p1,x-j)) end return o end local function extents(row,m,M) m=m or math.huge M=M or -math.huge for i,px in ipairs(row) do if px~=255 then m=math.min(m,i) M=math.max(M,i) end end return m,M end local B = {} for y=1,H do B[y]=true for x=1,W do B[y] = B[y] and R[y][x]==255 end end local function blockend(y) for y1 = y,H do if B[y1] then return y1-1 end end return H end local S={} if os.getenv"WORSE" then for y=1,H do local m,M = extents(R[y]) if MH end io.write(("P5\n%d %d\n%d\n"):format(W,H,depth)) for y=1,H do for x=1,W do io.write(string.char(S[y][x])) end end