# Happy Programmer’s day!

Q7, 13.09.2013 by Ivan Inozemtsev View Comments

Congratulations to all programmers with programmer’s day!

Just for fun, I’ve decided to solve a few problems from Project Euler using ECL :)

I solved only two problems, because this idea came to mind only a hour ago, but so far I did not find obstacles to solve others. The results can be found on Github project – https://github.com/xored/q7.examples.euler.

Just one more note – because of current implementation details, which should be easy to fix, there is a limitation on stack depth in ECL calls. Since I intentionally I decided using ECL as is without introducing any new commands and altering implementation, in these tasks I reduced some requirements (i.e instead of iterating over 1000 numbers, iterating only over 100 numbers).

Let’s start.

The first problem is really trivial:

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.

All we need to do, is to iterate over numbers between 1 and 999 and take only those which are dividable on 3 or 5. So we need a ‘mod’ command, but there is no such in ECL! Let’s create a procedure instead:

```proc mod [val a] [val b] {
\$a | minus [div \$a \$b | mult \$b]
}
```

Here we use a simple fact that integer division ‘throws’ division module, so ‘a mod b == a – (a / b) * b’.

Now we are ready to move on. We need to iterate over numbers, but there’s no ‘for’ or ‘while’ loop. So, we need to use a recursion!

Here’s a sample, just to illustrate an idea:

```proc iterate [int count] {
if [\$count | eq 0] {
// we are done
} -else {
iterate [\$count | minus 1]
}
}
```

Now it is easy to solve the first problem (posting a screenshot, just because I’m bad in HTML code highlighting):

The second problem, count sum of even fibbonaci numbers, not exceeding some given number, can be solved in a similar way:

Thank you for reading and happy programmer’s day!