aoc2022/day9.hs
2022-12-09 22:06:29 +01:00

12 lines
325 B
Haskell

import Data.List
s=scanl
v=[-1..1]
r=replicate
h%t=t+signum(h-t)
p(d:_:i)=r(read i)d
(h:l)&d=s(?)(zipWith(+)(z[d])h)l
[x,y]!t=elem t[[x+n,y+m]|n<-v,m<-v]
h@[x,y]?t@[a,b]|h!t=t|let=[x%a,y%b]
w i=length.nub.map last.(s(&)$r i[0,0])
z"U"=[1,0];z"D"=[-1,0];z"L"=[0,-1];z"R"=[0,1]
main=interact$show.((,).w 10<*>w 2).(p=<<).lines