Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Написать функцию sostavChisla(massivChisel: number[], chislo: number),
- которая бы находила все возможные комбинации чисел из massivChisel,
- сумма которых равна chislo. При этом:
- 1) massivChisel содержит, только уникальные положительные числа (> 0)
- 2) в комбинации не должно быть повторений чисел
- 3) все комбинации должны быть уникальными
- Для проверки работоспособности функции запустить runTests()
- @param massivChisel: number[]
- @param chislo: number[]
- @return Array<Array<number>>
- */
- massivChisel = [1, 2, 3, 4];
- function permutation(massivChisel) {
- if (massivChisel.length > 1) {
- var firstElement = massivChisel[0];
- var returnedArray = permutation(massivChisel.slice(1));
- var permutedArray = [];
- var temporaryArray = [];
- elementLength = returnedArray[0].length;
- for (var i = 0; i < returnedArray.length; i++)
- for (var j = 0; j <= elementLength; j++) {
- temporaryArray = returnedArray[i].slice(0);
- temporaryArray.splice(j, 0, firstElement);
- permutedArray.push(temporaryArray);
- }
- return permutedArray;
- } else {
- return [massivChisel];
- }
- }
- function getArrayByConditionSUM(massivChisel, NUM) {
- retArray = '';
- while (massivChisel.length) {
- if ( massivChisel.reduce((partialSum, a) => partialSum + a, 0) === NUM ) {
- const templateArray = [...massivChisel];
- retArray += templateArray.sort().join(",") + ";"
- }
- massivChisel.pop()
- }
- return retArray;
- }
- massivChisel = [1,2,3,4];
- NUM = 3;
- function getArrayByConditionUNIQUE(massivChisel, NUM) {
- arrayS = permutation(massivChisel)
- retArray = '';
- arrayS.forEach(element => { retArray += getArrayByConditionSUM(element, NUM) });
- notUniqStringValue = retArray.slice(0, -1).split(";");
- uniqueStringValue = [...new Set(notUniqStringValue)];
- return uniqueStringValue;
- }
- getArrayByConditionUNIQUE(massivChisel, NUM)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement