How to divide an unknown integer into a given number of even parts using Javascript

前端 未结 3 824
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-05 21:12

I need help with the ability to divide an unknown integer into a given number of even parts — or at least as even as they can be. The sum of the parts should be the original

相关标签:
3条回答
  • 2021-01-05 22:02

    You may get maximum integer coefficient as x/y rounded down to integer and remainder with x%y. Than simply break remainder into 1's and add those 1's to corresponding number of items:

    const breakIntoParts = (num, parts) => 
            [...Array(parts)].map((_,i) => 
              0|(i < num%parts ? num/parts+1 : num/parts))
    
    console.log(JSON.stringify(breakIntoParts(20, 6)));
    .as-console-wrapper {min-height: 100%}

    0 讨论(0)
  • 2021-01-05 22:09

    Extremely simple solution:

    const splitInteger = (number, parts) => {
        const remainder = number % parts
        const baseValue = (number - remainder) / parts
    
        return Array(parts).fill(baseValue).fill(baseValue + 1, parts - remainder)
    }
    

    To order from largest to smallest:

    const splitInteger = (number, parts) => {
        const remainder = number % parts
        const baseValue = (number - remainder) / parts
    
        return Array(parts).fill(baseValue).fill(baseValue + 1, 0, remainder)
    }
    

    Now as an npm module: split-integer

    0 讨论(0)
  • 2021-01-05 22:13

    Try like this.

    var splitInteger = function(num, parts) {
      // Complete this function
    
      var val;
      var mod = num % parts;
      if(mod == 0){
        val = num/parts;
        retData = Array(parts).fill(val);
      } else {
        val = (num-mod)/parts;
        retData = Array(parts).fill(val);
        for(i=0;i<mod;i++){
          retData[i] = retData[i] + 1;
        }
        retData.reverse()
      }
    
      return retData;
    
    }
    var d = splitInteger(20, 6)
    console.log(d);
    console.log("sum - " + d.reduce(function(a,b){return a+b}));

    0 讨论(0)
提交回复
热议问题