Problem 90

http://projecteuler.net/index.php?section=problems&id=90
組み合わせを数えるときも、6と9を区別しないのかと思っていたり、同じ数字が二度以上出てくると思っていたり。
まったく、これだから英語の問題は

squ = [[(0,1)],[(0,4)],[(0,9),(0,6)],[(1,6),(1,9)],[(2,5)],
       [(3,6),(3,9)],[(4,9),(4,6)],[(6,4),(9,4)],[(8,1)]]

sortPerm _ 0 = [[]]
sortPerm [] _ = []
sortPerm (x:xs) (n+1) = (map (x:) . sortPerm xs) n ++ sortPerm xs (n+1)

display xs ys (a,b) = elem a xs && elem b ys || elem b xs && elem a ys
allDisplay xs ys = all (any $display xs ys) $squ

main = print.length$[(a,b)|a<-digits,b<-takeWhile(<a)digits,allDisplay a b]
    where digits = sortPerm [0..9] 6