Суммирование каждого числа от 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)); Но до конца довести не могу решение. |
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); |
сумма интервала целых чисел от начального значения до конечного
: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 |
Спасибо за помощь. У меня Ваш код работает. Но, почему-то не проходит автоматическое тестирование https://www.codewars.com/kata/55d24f...ain/javascript Не могу понять почему.
|
Аналогичным образом. У меня код срабатывает, а при автоматическом тестировании не проходит https://www.codewars.com/kata/55d24f...ain/javascript
|
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); |
Большое спасибо!
|
Решение влоб:
Array(8).fill().map((_, i) => ++i).reduce((a, b) => a + b, 0) 36 |
Часовой пояс GMT +3, время: 09:43. |