Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Суммирование каждого числа от 1 до num (https://javascript.ru/forum/misc/80788-summirovanie-kazhdogo-chisla-ot-1-do-num.html)

lleexx 01.08.2020 13:38

Суммирование каждого числа от 1 до num
 
:help: Буду признателен за помощь в решение тестовой задачи:
Условие: Напишите программу, которая находит суммирование каждого числа от 1 до num. Это число всегда будет положительным целым числом, большим 0.
Примеры:
1) summation(2) -> 3
1 + 2
2) summation(8) -> 36
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8.


Пробовал разными вариантами, больше склоняюсь к такому:write: :
function sum(n) {
let result = [];
for (let item = 1; item <= n; item += 1) {
if (item > 0) {
result.push(item);
}
}
return result;
}
console.log(sum(8));


Но до конца довести не могу решение.

Nexus 01.08.2020 14:40

function getArithmeticProgressionSum(max) {
    const min = 1, step = 1;
    if (max < min || max % step > 0) {
        throw new Error('Invalid first argument');
    }
    
    return (min + max) / 2 * (max / step);
}

alert(getArithmeticProgressionSum(2) === 3);
alert(getArithmeticProgressionSum(8) === 36);

рони 01.08.2020 17:55

сумма интервала целых чисел от начального значения до конечного
 
:write: :)
function createArithmetic(from)
{
   if (!Number.isInteger(from)) {
        throw new Error('Invalid from argument');
    }
   return function(to) {
   if (!Number.isInteger(to)) {
        throw new Error('Invalid to argument');
    }
    return (from + to) / 2 * (Math.abs(from - to) + 1);
   }
}
const getArithmeticProgressionSumOne = createArithmetic(1);
alert(getArithmeticProgressionSumOne(2) === 3);//1 + 2
alert(getArithmeticProgressionSumOne(8) === 36);//1 + 2 + 3 + 4 + 5 + 6 + 7 + 8

const getArithmeticProgressionSumFive = createArithmetic(5);
alert(getArithmeticProgressionSumFive(8) === 26);// 5 + 6 + 7 + 8
alert(getArithmeticProgressionSumFive(4) === 9);// 4 + 5

lleexx 02.08.2020 01:12

Спасибо за помощь. У меня Ваш код работает. Но, почему-то не проходит автоматическое тестирование https://www.codewars.com/kata/55d24f...ain/javascript Не могу понять почему.

lleexx 02.08.2020 01:16

Аналогичным образом. У меня код срабатывает, а при автоматическом тестировании не проходит https://www.codewars.com/kata/55d24f...ain/javascript

рони 02.08.2020 07:25

lleexx,
всё нормально тестируется.
Пример: Solution:
function createArithmetic(from)
{
   if (!Number.isInteger(from)) {
        throw new Error('Invalid from argument');
    }
   return function(to) {
   if (!Number.isInteger(to)) {
        throw new Error('Invalid to argument');
    }
    return (from + to) / 2 * (Math.abs(from - to) + 1);
   }
}

var summation = createArithmetic(1);

lleexx 02.08.2020 09:56

Большое спасибо!

GayCoder 02.08.2020 16:21

Решение влоб:
Array(8).fill().map((_, i) => ++i).reduce((a, b) => a + b, 0)
36


Часовой пояс GMT +3, время: 19:20.