let triangle_numbers =
let rec triangle_number =
function 0 -> 1 | n -> (n + 1 + triangle_number (n-1))
Seq.init_infinite triangle_number
let triangle_numbers = Seq.unfold (fun (n, i) -> Some(n, (n+i, i+1))) (1, 2)
let triangle_numbers = Seq.init_infinite (fun n -> (n+2)*(n+1) / 2)
let factorize n =
let rec factorize_horse n factor count result =
if (n <= 1) then
count::result
else
match (n % factor) with
| 0 -> (factorize_horse (n/factor) factor (count+1) result)
| _ -> (factorize_horse n (factor+1) 0 (count::result))
factorize_horse n 2 0 []
|> List.filter (fun x -> x<>0)
let factor_count n =
factorize n
|> List.map (fun x -> x+1 )
|> List.fold_left (*) 1
triangle_numbers
|> Seq.filter (fun x -> 500 < (factor_count x))
|> Seq.hd
|> printfn "Problem #12 = %d"
'내 생산물' 카테고리의 다른 글
| 탈옥한 iPhone4 에서 이지한글(나랏글) 키보드 사용하기 (13) | 2010/12/13 |
|---|---|
| [AI] 테트리스 AI v0.5 (4) | 2010/08/28 |
| 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 |
