どう書く? - 倍数になる13進数

倍数になる13進数 どう書く?orgを解いてみた。

import System.Environment
calc13 :: (Num a, Read a) => [Char] -> a -> a
calc13 [] i = i
calc13 (x:xs) i = calc13 xs $ i * 13 + (read [x])
match :: String -> Bool
match i = (==) 0 $  rem ( flip calc13 0  i) $ read i
matchStr :: String -> String
matchStr i | match i = i  ++ "\n"
           | otherwise = ""
main = do args <- getArgs
          mapM_ (putStr . matchStr) args

ちょっと、型変換苦手だわ。read忘れたりしまくった。

$ ghc -o 13sinsu 13sinsu.hs 
$ ./13sinsu `ruby -e "(10..10000).to_a.each{|a| puts a}"`
1557
1560
1614