Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.08.2020, 13:38
Новичок на форуме
Отправить личное сообщение для lleexx Посмотреть профиль Найти все сообщения от lleexx
 
Регистрация: 01.08.2020
Сообщений: 4

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


Пробовал разными вариантами, больше склоняюсь к такому :
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));


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

Последний раз редактировалось lleexx, 01.08.2020 в 13:45.
Ответить с цитированием
  #2 (permalink)  
Старый 01.08.2020, 14:40
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,708

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);

Последний раз редактировалось Nexus, 01.08.2020 в 14:44.
Ответить с цитированием
  #3 (permalink)  
Старый 01.08.2020, 17:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

сумма интервала целых чисел от начального значения до конечного

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
Ответить с цитированием
  #4 (permalink)  
Старый 02.08.2020, 01:12
Новичок на форуме
Отправить личное сообщение для lleexx Посмотреть профиль Найти все сообщения от lleexx
 
Регистрация: 01.08.2020
Сообщений: 4

Спасибо за помощь. У меня Ваш код работает. Но, почему-то не проходит автоматическое тестирование https://www.codewars.com/kata/55d24f...ain/javascript Не могу понять почему.
Ответить с цитированием
  #5 (permalink)  
Старый 02.08.2020, 01:16
Новичок на форуме
Отправить личное сообщение для lleexx Посмотреть профиль Найти все сообщения от lleexx
 
Регистрация: 01.08.2020
Сообщений: 4

Аналогичным образом. У меня код срабатывает, а при автоматическом тестировании не проходит https://www.codewars.com/kata/55d24f...ain/javascript
Ответить с цитированием
  #6 (permalink)  
Старый 02.08.2020, 07:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

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);
Ответить с цитированием
  #7 (permalink)  
Старый 02.08.2020, 09:56
Новичок на форуме
Отправить личное сообщение для lleexx Посмотреть профиль Найти все сообщения от lleexx
 
Регистрация: 01.08.2020
Сообщений: 4

Большое спасибо!
Ответить с цитированием
  #8 (permalink)  
Старый 02.08.2020, 16:21
Аватар для GayCoder
Аспирант
Отправить личное сообщение для GayCoder Посмотреть профиль Найти все сообщения от GayCoder
 
Регистрация: 28.01.2016
Сообщений: 99

Решение влоб:
Array(8).fill().map((_, i) => ++i).reduce((a, b) => a + b, 0)
36
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Увелечение дуипозона числа по нажатию на кнопку Лунтик Javascript под браузер 0 22.07.2020 10:00
функция нахождения наименьшего делителя числа итеративный процесс Alexsandr Общие вопросы Javascript 18 03.06.2017 03:12
Регулярка для поля ввода числа Bab Общие вопросы Javascript 14 08.04.2017 19:11
JS задача. Взаимно простые числа sashok Общие вопросы Javascript 5 23.11.2014 10:16
Есть числа от (0 до 100) что бы все эти числа были заменины в итоге например 110 impi Общие вопросы Javascript 4 08.10.2014 08:30