如何使用Javascript将未知整数除以给定数量的偶数部分 [英] How to divide an unknown integer into a given number of even parts using 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屋!