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