# PE1 Explained - kevinlawler/kona GitHub Wiki

## Task

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.

## Solution

```
+/&~&/(!1e3)!/:3 5
233168
```

## Explanation

`1e3`

is an abbreviation for `1000.0`

`(!1000)`

— create a list of integers 0, 1, 2, 3, ... 999

`!`

is mod (sometimes)

`!/:`

is mod each-right

so `(!1000)!/:3 5`

is two lists, each of 0,...,999 mod 3, and each of 0,...,999 mod 5

`&`

is min (sometimes — dyadic) and `&/`

is min over

so `&/ ...`

is 0 if either of x mod 3 or x mod 5 was 0 (the min of two lists is the min of each of their items. this property holds for most verbs. it also works recursively)

`~`

is not, so all those zeroes we found become 1, everything else becomes 0

`&`

is where (sometimes — min), it turns 1s into their index in the
list, and 0 into nothing (try it out: what does where do on a list with numbers bigger than 1)

Plus sign is plus and `+/`

is plus over: sum everything together