set [ (999*999, 999, 999) ]
|> Seq.unfold (fun pq ->
let head = pq.MaximumElement
let product, a, b = head
let newElements =
set [ ((a-1)*b, a-1, b); (a*(b-1), a, b-1) ]
|> Set.filter (fun (_, a, b) -> a <= b)
Some (product, ((pq.Remove head) + newElements)))
|> Seq.filter is_parlindrome
|> Seq.hd
|> printfn "Problem #4 = %d"
'내 생산물' 카테고리의 다른 글
| F#, Project Euler - Problem #4 (2) (0) | 2009/05/22 |
|---|---|
| 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 |
