Advertisement
Savelyev_Vyacheslav

TEST

Jul 7th, 2023 (edited)
989
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2. * Написать функцию sostavChisla(massivChisel: number[], chislo: number),
  3.   которая бы находила все возможные комбинации чисел из massivChisel,
  4.   сумма которых равна chislo. При этом:
  5.   1) massivChisel содержит, только уникальные положительные числа (> 0)
  6.   2) в комбинации не должно быть повторений чисел
  7.   3) все комбинации должны быть уникальными
  8.  
  9.   Для проверки работоспособности функции запустить runTests()
  10.  
  11.   @param massivChisel: number[]
  12.   @param chislo: number[]
  13.   @return Array<Array<number>>
  14. */
  15.  
  16.  
  17. massivChisel = [1, 2, 3, 4];
  18. function permutation(massivChisel) {
  19.     if (massivChisel.length > 1) {
  20.         var firstElement = massivChisel[0];
  21.         var returnedArray = permutation(massivChisel.slice(1));
  22.         var permutedArray = [];
  23.         var temporaryArray = [];
  24.         elementLength = returnedArray[0].length;
  25.         for (var i = 0; i < returnedArray.length; i++)
  26.             for (var j = 0; j <= elementLength; j++) {
  27.                 temporaryArray = returnedArray[i].slice(0);
  28.                 temporaryArray.splice(j, 0, firstElement);
  29.                 permutedArray.push(temporaryArray);
  30.             }
  31.         return permutedArray;
  32.     } else {
  33.         return [massivChisel];
  34.     }
  35. }
  36.  
  37.  
  38. function getArrayByConditionSUM(massivChisel, NUM) {
  39.     retArray = '';
  40.     while (massivChisel.length) {
  41.         if ( massivChisel.reduce((partialSum, a) => partialSum + a, 0) === NUM ) {
  42.             const templateArray = [...massivChisel];
  43.             retArray += templateArray.sort().join(",") + ";"
  44.         }
  45.         massivChisel.pop()
  46.     }
  47.     return retArray;
  48. }
  49.  
  50. massivChisel = [1,2,3,4];
  51. NUM = 3;
  52.  
  53.  
  54. function getArrayByConditionUNIQUE(massivChisel, NUM) {
  55.     arrayS = permutation(massivChisel)
  56.     retArray = '';
  57.     arrayS.forEach(element => {  retArray += getArrayByConditionSUM(element, NUM)  });
  58.     notUniqStringValue = retArray.slice(0, -1).split(";");
  59.     uniqueStringValue = [...new Set(notUniqStringValue)];
  60.     return uniqueStringValue;
  61. }
  62.  
  63. getArrayByConditionUNIQUE(massivChisel, NUM)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement