I could use some assistance with dividing an unknown integer into a specified number of equal or as close to equal parts as possible. The total sum of these parts should equal the original value, and each part must be an integer.
Parameters num: Integer - The number to split into equal parts
parts: Integer - Number of parts to divide the number into
Return Value List (of Integers) - A list of divided parts, ordered from smallest to largest.
This is my current code:
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
}));
Sample test cases:
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]);
});
});
Expected Output Examples:
num parts Return Value.
Completely even parts example 10 5 [2,2,2,2,2].
Even as can be parts example 20 6 [3,3,3,3,4,4].
An error is occurring in my code.