125874とその2倍の251748は同じ数字を違う順序で並べたものである。
その数と2, 3, 4, 5, 6倍が全て同じ数字でできている最小の整数を求めよ。
1から順番にその数のrepeatと1..6をzipWithでかけたものが同じ数字でできて いるかどうかをチェックしていき、最初に見つかったものが解である。
同じ数字でできているかどうかのチェックはintToListで数を各桁の数字のリス トに分解し、それをソートしたものが全て同一かどうかでチェックする。同一 の場合はnubするとリストの長さが1になる。
euler052 = head $ head $ filter same [zipWith (*) (repeat i) [1..6] | i <- [1..]]
where same xs = (length $ nub $ map (sort . intToList) xs) == 1
