해석: 두 개의 세자리 숫자를 곱해서 만들 수 있는 가장 큰 palindrome을 만드시오.
직관적으로..
- 모든 세자리 숫자의 조합을 만들어서 이를 곱한다.
- 이 값이 Palindrome 이지 검사한다.
- Palindrome 중 가장 큰 숫자를 추출한다.
#light
let is_parlindrome x =
let rec reverse y result =
match y with
| 0 -> result
| _ -> (reverse (y/10) (result*10 + y%10))
(reverse x 0) = x
[ for i in [100 .. 999] do
for j in [100 .. 999] do
yield i*j ]
|> List.filter is_parlindrome
|> Seq.max
|> printfn "Problem #4 = %d"
'내 생산물' 카테고리의 다른 글
| F#, Project Euler - Problem #12 (0) | 2009/05/12 |
|---|---|
| F#, Project Euler - Problem #20 (0) | 2009/05/12 |
| F#, Project Euler - Problem #5 (0) | 2009/05/11 |
| F#, Project Euler - Problem #4 (2) | 2009/05/11 |
| F#, Project Euler - Problem #3 (0) | 2009/05/10 |
| F#, Project Euler - Problem #1 (2) | 2009/05/10 |
| F#, Project Euler - Problem #2 (0) | 2009/05/10 |
