DEV Community

Cesar Del rio
Cesar Del rio

Posted on • Updated on

#16 - Sums of parts CodeWars Kata (6 kyu)

Instructions

Let us consider this example (array written in general format):

ls = [0, 1, 3, 6, 10]

Its following parts:

ls = [0, 1, 3, 6, 10]
ls = [1, 3, 6, 10]
ls = [3, 6, 10]
ls = [6, 10]
ls = [10]
ls = []
The corresponding sums are (put together in a list): [20, 20, 19, 16, 10, 0]

The function parts_sums (or its variants in other languages) will take as parameter a list ls and return a list of the sums of its parts as defined above.

Other Examples:

ls = [1, 2, 3, 4, 5, 6]
parts_sums(ls) -> [21, 20, 18, 15, 11, 6, 0]

ls = [744125, 935, 407, 454, 430, 90, 144, 6710213, 889, 810, 2579358]
parts_sums(ls) -> [10037855, 9293730, 9292795, 9292388, 9291934, 9291504, 9291414, 9291270, 2581057, 2580168, 2579358, 0]

Notes
Take a look at performance: some lists have thousands of elements.
Please ask before translating.


My solution:

function partsSums(ls) {
  let result = [0]
  for(const n in ls.reverse()){
    result.push(ls[n]+result[n]);
  }
  return result.reverse()
}
Enter fullscreen mode Exit fullscreen mode

Explanation

First I declarated a variable result that is an array that contains a 0 in it

let result = [0]


Then after that I used a for In loop to iterate the ls array but reversed, in every iteration I would push to the result array, the result of the sum of the n element of ls and the n element of the result array.

for(const n in ls.reverse()){
result.push(ls[n]+result[n]);
}


After that I would only return the result array but reversed

return result.reverse()


Comment how would you solve this kata and why? 👇🤔

My Github
My twitter
Solve this Kata

Discussion (0)