Ответы пользователя по тегу Алгоритмы
  • Разделить число на части но не более x за раз?

    @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]
    Ответ написан