@Pesetsu

Разделить число на части но не более x за раз?

Есть некое целое число - 70, нужно разбить его на части так, чтобы каждая часть числа не была больше 15, можно меньше
Как это сделать средствами JavaScript?
Что нужно в итоге? Получить массив с кол-вом полученных частей и их размер. Что-то вроде:
[8, 15, 15, 12, ...].length // 4
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
@NinjaNickName
Web разработчик
Как вариант можно так:
var a = 70;
var b = 15;
var result= [];

num = (a - (a % b)) / b;

for (i=0; i < num; i++) {
  result.push(b);
}

if ((a % b) < b && (a % b) != 0) {
  result.push((a % b));
}

console.log(result);  // (5) [15, 15, 15, 15, 10]


Со случайными числами:

var a = 70;
var min = 5;
var max = 15;
var result = [];

function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min; 
}

while (a > 0) {
  b = getRandomIntInclusive(min, max);
  a = a - b;

  if (a >= 0 ) {
    result.push(b);
  } 

  if (a < 0) {
    b = b + a;

    if (b < min) {
      _t = min - b;
      b = b + _t;

      result.forEach(function(item, i) {
          if ((item - _t) > min) {
            result[i] = item - _t;          
            _t = 0; 
          }
        });
    }              
    result.push(b);
  }
}

var result_sum = result.reduce(function(sum, current) {
  return sum + current;
}, 0);


console.log('Сумма всех чисел: '+result_sum); // 70
console.log(result); // (7) [15, 6, 10, 7, 5, 15, 12]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dzolotarev
@dzolotarev
Этот мир крэшится - я собираю дампы
Ну делите это число на 15, пока не получите частное 15 или меньше. Про последний остаток не забудьте.
Например, 70 == [15, 15, 15, 15, 10].
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы