22 lines
520 B
Haskell
22 lines
520 B
Haskell
import Data.List
|
|
q"012345"=pure 0
|
|
q"12"=pure 1
|
|
q"01346"=pure 2
|
|
q"01236"=pure 3
|
|
q"1256"=pure 4
|
|
q"02356"=pure 5
|
|
q"023456"=pure 6
|
|
q"012"=pure 7
|
|
q"0123456"=pure 8
|
|
q"012356"=pure 9
|
|
q _=Nothing
|
|
t r=head[p|p<-permutations['a'..'g'],Nothing`notElem`map(p%)r]
|
|
p%a=q.sort$foldr r a$zip['0'..]p
|
|
r(n,o)=foldr(\h a->last(h:[ n|h==o]):a)[]
|
|
v(p,n)=map((t p)%)n
|
|
f[]=0
|
|
f((Just x):y)=x+10*f y
|
|
a=length.filter(`elem`(map pure[1,4,7,8])).concat
|
|
b=sum.map(f.reverse)
|
|
main=interact$show.((,).b<*>a).map d.lines
|
|
d=v.fmap tail.splitAt 10.words
|