fork download
  1. import Data.Char
  2. import Data.Int
  3.  
  4. crack :: Int -> [Int64]
  5. crack n = helper n 0 0
  6. where helper 0 _ acc
  7. | acc == f acc = [acc]
  8. | otherwise = []
  9. helper k from acc = concat [ helper (k-1) c (acc + ps !! c) | c <- [from..9] ]
  10. ps = map (^13) [0..9]
  11. f acc = sum [ ps !! (digitToInt c) | c <- show acc ]
  12.  
  13. main = mapM_ print (crack 15)
Success #stdin #stdout 2.97s 6288KB
stdin
Standard input is empty
stdout
0
1
564240140138