aoc2022/day8.hs
2022-12-09 13:58:53 +01:00

11 lines
340 B
Haskell

e=[]:e
l=length
s d=d<*>c
v=reverse
n~(x:s)|x<n=1+n~s|let=1;_~_=0
a%b|(h,_:t)<-splitAt a b=[v h,t]
m?t@(x,y)=any(all(<m!!y!!x))$m#t
m!t@(x,y)=product$map((m!!y!!x)~)$m#t
c m=[(i,j)|i<-[0..l m-1],j<-[0..l(m!!0)-1]]
m#(x,y)|r<-m!!y,c<-foldr(zipWith(:))e m!!x=x%r++y%c
main=interact$show.((,).s((maximum.).map.(!))<*>s((l.).filter.(?))).lines