38問目
192384576は、192×=192, 192×2=386, 192×3=576をつなげた数である。このように、ある数に1,2,..n(n>1)をかけた数をつなげて、1から9の数字が1回ずつ現れる数を作るとき、その最大のものを求める。
何の工夫もありませんが、問題を忠実に実装したら解けました。
import Data.List main = print $ maximum euler038 euler038 :: [String] euler038 = filter ((== "123456789") . sort) $ map concatProduct [1..9876] concatProduct :: Int -> String concatProduct n = head $ dropWhile ((< 9) . length) $ scanl1 (++) $ map (show . (* n)) [1..]