diff --git a/d4golf.hs b/d4golf.hs index 872edc6..c9237d4 100644 --- a/d4golf.hs +++ b/d4golf.hs @@ -1,21 +1,20 @@ import Data.Either m=map -z=zipWith +e=[]:e r=pure l=Left -i=isRight c=isLeft -e=[]:e -s(v:t)|'.'>v=[]:s t|(x:u)<-s t=(v:x):u -v[]=[] -v s=tail(take 6 s):v(drop 6 s) -k d i|i==l d=r d|let=i +z=zipWith +i=isRight a=m.m.m.k h=any$all i -x!d|h d||h(foldr(z(:))e d)=r$(x*)$sum$lefts=<z(?)(last b)h)$span(any c)i +k d i|i==l d=r d|let=i w p(n,t)=head$rights$p(n#t) +(x:y)#f=m(x!)(a x f):y#a x f +v[]=[];v s=tail(take 6 s):v(drop 6 s) +s(v:t)|'.'>v=[]:s t|(x:u)<-s t=(v:x):u p(x:y)=(m read$s x,v$m(m(l.read).words)y) -main=interact$show.((,).w q<*>w(filter i=<<)).p.lines \ No newline at end of file +q i=(\(b,h:_)->z(?)(last b)h)$span(any c)i +main=interact$show.((,).w q<*>w(filter i=<<)).p.lines +x!d|h d||h(foldr(z(:))e d)=r$(x*)$sum$lefts=<