如何使用Javascript将未知整数除以给定数量的偶数部分 [英] How to divide an unknown integer into a given number of even parts using Javascript

查看:74
本文介绍了如何使用Javascript将未知整数除以给定数量的偶数部分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要帮助将未知整数划分为给定数量的偶数部分,或者至少将它们尽可能地划分为偶数的能力.部分的总和应为原始值,但每个部分均应为整数,并且应尽可能接近.

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 value, but each part should be an integer, and they should be as close as possible.

参数num:整数-应该分成相等部分的数字

Parameters num: Integer - The number that should be split into equal parts

parts:Integer-应该分割数字的部分数进入

parts: Integer - The number of parts that the number should be split into

返回值列表(整数)-零件列表,每个索引代表零件,其中包含的数字代表零件的大小.这些零件将按从小到大的顺序订购.

Return Value List (of Integers) - A list of parts, with each index representing the part and the number contained within it representing the size of the part. The parts will be ordered from smallest to largest.

这就是我所拥有的

var splitInteger = function(num, parts) {
  // Complete this function

  var randombit = num * parts;
  var out = [];

  for (var i = 0; i < parts; i++) {
    out.push(Math.random());
  }

  var mult = randombit / out.reduce(function(a, b) {
    return a + b;
  });

  return out.map(function(el) {
    return el * mult;
  });

}
var d = splitInteger(10, 5)
console.log(d);
console.log("sum - " + d.reduce(function(a, b) {
  return a + b
}));

这是示例测试

let assert = require("chai").assert;
describe('Challenge', function() {
  it('Simple Functionality', function() {
    assert.deepEqual(splitInteger(10,1), [10]);
    assert.deepEqual(splitInteger(2,2), [1,1]);
    assert.deepEqual(splitInteger(20,5), [4,4,4,4,4]);
  });
});

预期输出示例:

份数返回值.

完全均匀的零件示例10 5 [2,2,2,2,2].

Completely even parts example 10 5 [2,2,2,2,2].

即使是零件示例20 6 [3,3,3,3,4,4].

Even as can be parts example 20 6 [3,3,3,3,4,4].

我遇到错误.

推荐答案

尝试这样.

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

这篇关于如何使用Javascript将未知整数除以给定数量的偶数部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆