요즘 지루함을 달래기 위해서 함수형 언어인 F#을 공부해보고 있습니다.
특별한 목표가 없으면 잘 안되기 때문에..
Project Euler(오일러)의 문제들도 같이 풀어 보고 있습니다.
Problem #1. Add all the natural numbers below one thousand that are multiples of 3 or 5.
매우 간단한 문제라서...
설명하는게 무의미 할 것 같습니다.
세 가지 버전을 만들어 보았습니다.
#light
let p1_1 = (Seq.sum (Seq.filter (fun x -> (x%3) * (x%5) = 0) [1 .. 999]))
printfn "Problem #1 = %d" p1_1
let p1_2 = [1 .. 999] |> Seq.filter (fun x -> (x%3) * (x%5) = 0) |> Seq.sum
printfn "Problem #1 = %d" p1_2
let p1_3 = (Seq.sum [for i in 1..999 do if (i%3 * i%5) = 0 then yield i])
printfn "Problem #1 = %d" p1_3
개인적으로는 두번째 스타일을 가장 좋아 합니다.
'내 생산물' 카테고리의 다른 글
| 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 |
| 테터 데스크 설치 - 미투데이 최근글 표시하기. (2) | 2007/06/11 |
| Popfly로 만든 축제 자료집 (6) | 2007/06/06 |
