Project Euler Problem 090
import Data.List e :: Integer -> [Integer] -> Bool e = elem ci :: [Integer] -> [Integer] -> Integer -> Integer -> Bool ci l r a b = (e a l && e b r) || (e b l && e a r) check :: [Integer] -> [Integer] -> Bool check l r = imp 0 1 && imp 0 4 && (imp 0 9 || imp 0 6) && (imp 1 6 || imp 1 9) && imp 2 5 && (imp 3 6 || imp 3 9) && (imp 4 9 || imp 4 6) && (imp 6 4 || imp 9 4) && imp 8 1 where imp = ci l r ten = [0..9] test = check [0,5,6,7,8,9] [1,2,3,4,8,9] -- 7を使ってもtrueになる組み合わせは可 test2 = check [0,5,6,7,8,7] [1,2,3,4,8,9] -- 重複する組み合わせもある test3 = check [0,2,3,6,8] [1,4,5,6] -- 少なく考えてみたもの。これもtrue -- 最低限0,1,2,3,4,5,[6 or 9],8の8種類は出現する必要がある ans1 = length $ nub $ sort [if l