aoc2022/day5.hs
2022-12-06 08:27:41 +01:00

11 lines
373 B
Haskell

import Data.List
m=map
z=splitAt
x%[i,s,t]=u t$d i s x
i(_:x:y)=read x:i y;i _=[]
t(_:a:_:_:x)=a:t x;t(_:a:x)=[a]
u s(a,x)|(t,r:d)<-z(s-1)x=t++(a++r):d
x#[i,s,t]|i<1=x|let=x%[1,s,t]#[i-1,s,t]
q r(a,_:b)=foldl r(m(filter(>'@'))$t$transpose a)$m(i.words)b
d n s x|(t,v:d)<-z(s-1)x,(h,r)<-z n v=(h,t++(r:d))
main=interact$show.(\i->m(m head.($i))[q(#),q(%)]).span(/=[]).lines