リスト内包表記を忘れていた
倍数になる13進数に挑戦。最初に書いたのはこれです。
main = print $ head $ filter (\n -> (radix_13_10 n `mod` n) == 0) [10..] radix_13_10 :: Int -> Int radix_13_10 0 = 0 radix_13_10 n = (radix_13_10 (n `div` 10)) * 13 + (n `mod` 10)
できた、と思って投稿されているプログラムをチェック。
Haskell のリスト内包表記だと殆ど問題文そのままに書けますね。
そういえばありましたね。自分でも使ってみました。
main = print $ head $ [x | x <- [10..], radix_13_10 x `mod` x == 0] radix_13_10 :: Int -> Int radix_13_10 0 = 0 radix_13_10 n = (radix_13_10 (n `div` 10)) * 13 + (n `mod` 10)