10 May 2008
I was vaguely looking for something that might make me smarter, wouldn’t be at all practical, and also wouldn’t be a huge time investment.
I started by working through the exercises of “Introduction to Algorithms” by C/L/R, but I didn’t make it too far. Maybe someday.
Project Euler is some math/algorithmic problems that seem to fit the bill. Since I was thinking I should learn an ML family language, I thought I’d try to solve them in F# and see how far I got.
Without further ado, here’s problem 1:
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
and my probably not so amazing solution:
[1 .. 999] |> Seq.sumByInt(fun x -> if x % 3 = 0 || x % 5 = 0 then x else 0)
Not too hairy, but some neat bits:
> is a pipelining operator that just changes the order of the arguments. Rather than nesting the
[1..999] at the end, it goes at the beginning which makes more sense to read.
And, of course, first class functions.
I really hate “then” for whatever repressed-loathing-of-some-crappy-language-reason, but I’ll survive. I guess.