haskellで魔方陣その2

haskellで魔方陣を教えていただいたようにやってみる。
折角なので一行でw

$ time runghc -e "import Data.List;main=mapM_ print $ filter (\[a,b,c,d,e,f,g,h,i]-> let s=a+b+c in s==d+e+f && s==g+h+i && s==a+d+g && s==b+e+h && s==c+f+i && s==a+e+i && s==c+e+g) $ permutations [1..9]"
[2,9,4,7,5,3,6,1,8]
[2,7,6,9,5,1,4,3,8]
[8,3,4,1,5,9,6,7,2]
[8,1,6,3,5,7,4,9,2]
[4,9,2,3,5,7,8,1,6]
[4,3,8,9,5,1,2,7,6]
[6,7,2,1,5,9,8,3,4]
[6,1,8,7,5,3,2,9,4]

real	0m1.421s
user	0m1.384s
sys	0m0.032s

確かに速い

import Data.List
main=mapM_ print $ filter (\[a,b,c,d,e,f,g,h,i]-> let s=a+b+c in s==d+e+f && s==g+h+i && s==a+d+g && s==b+e+h && s==c+f+i && s==a+e+i && s==c+e+g) $ permutations [1..9]

おお、確かに速い。よかったよかった。

$ ghc b.hs;time ./a.out
[2,9,4,7,5,3,6,1,8]
[2,7,6,9,5,1,4,3,8]
[8,3,4,1,5,9,6,7,2]
[8,1,6,3,5,7,4,9,2]
[4,9,2,3,5,7,8,1,6]
[4,3,8,9,5,1,2,7,6]
[6,7,2,1,5,9,8,3,4]
[6,1,8,7,5,3,2,9,4]

real	0m0.124s
user	0m0.116s
sys	0m0.000s