참조: Project Euler


 요즘 지루함을 달래기 위해서 함수형 언어인 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


개인적으로는 두번째 스타일을 가장 좋아 합니다.






Posted by U∙Seung