2009년 1월 26일 월요일

프로젝트 오일러 34 haskell 풀이

블로그스팟에 적던건데 그냥 이쪽으로 죄다 적어야겠다. 구글갓댐.

이건 정리된 버전...

import Data.Char(digitToInt)

main = print solve

fac n = foldr (*) 1 [1..n] -- 팩토리얼
mapDigits f n = map (f.digitToInt) (show n) -- 각 디짓 별로 map
curious n = n == sumOfDigitFact n -- 34 번 문제의 조건에 맞는지 판단
sumOfDigitFact = sum . mapDigits fac -- 각 디짓의 팩토리얼의 합
solve = filter curious [3..100000] -- 이거.. 어퍼바운드 결정을 그냥 때려 맞춘것


아래는 풀이하면서 이것저것 해본 코드. foldl/foldl'/foldr 차이점은 아직 느낌이 잘 안오네..

펼쳐두기..

댓글 없음: