Home > katas > Multiples of 3 or 5 (6kyu) [JavaScript]

Multiples of 3 or 5 (6kyu) [JavaScript]


Chek kata on Codewars

Description:

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.

Finish the solution so that it returns the sum of all the multiples of 3 or 5 below the number passed in.

Note: If the number is a multiple of both 3 and 5, only count it once. Also, if a number is negative, return 0(for languages that do have them)

Courtesy of projecteuler.net

Loop

function solution(number){
    let counter = 0
    for(let i = 3; i < number; i++) {
        if(i % 3 === 0 || i % 5 === 0) {
            counter += i
        }
    }
    return counter
}

Map + Reduce

function solution(number) {
    return number < 3 ? 0 : Array.from({length: number}, (_,i) => i++).map(i => i % 3 === 0 || i % 5 === 0 ? i : 0 ).reduce((acc, cur) => acc + cur, 0)
}

Filter + Reduce

function solution(number) {
    return number < 3 ? 0 : [...Array(number).keys()].filter(i => i % 3 === 0 || i % 5 === 0).reduce((acc, cur) => acc + cur, 0)
   
}

Reduce

function solution(number) {
    return number < 3 ? 0 : [...Array(number)].reduce((acc, _, idx) => acc + idx * (!(idx % 3) || !(idx % 5)), 0)
}
© 2021, Andrew Losseff