21 lines
No EOL
470 B
Haskell
21 lines
No EOL
470 B
Haskell
import Data.Either
|
|
m=map
|
|
z=zipWith
|
|
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
|
|
a=m.m.m.k
|
|
h=any$all i
|
|
x!d|h d||h(foldr(z(:))e d)=r$(x*)$sum$lefts=<<d|let=l 0
|
|
(x:y)#f=m(x!)(a x f):y#a x f
|
|
a?b|c a,i b=b|let=l 0
|
|
q i=(\(b,h:_)->z(?)(last b)h)$span(any c)i
|
|
w p(n,t)=head$rights$p(n#t)
|
|
p(x:y)=(m read$s x,v$m(m(l.read).words)y)
|
|
main=interact$show.((,).w q<*>w(filter i=<<)).p.lines |