Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

목표 숫자에 도달하기 위한 순열 생성, 그러나 제공된 숫자 재사용 JavaScript

<시간/>

Numbers 배열을 첫 번째 인수로, 목표 합계 Number를 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.

이 함수는 대상 합계를 만들기 위해 요소의 합이 포함된 원래 배열에서 모든 하위 배열의 배열을 반환해야 합니다. 단일 숫자를 두 번 사용하여 합계를 얻을 수 있습니다.

예를 들어 -

입력 배열과 숫자가 -

인 경우
const arr = [1, 2, 4];
const sum = 4;

출력은 -

여야 합니다.
const output = [
   [1, 1, 1, 1],
   [1, 1, 2],
   [2, 2],
   [4]
]

예시

const arr = [1, 2, 4];
const sum = 4;
const getCombinations = (arr = [], sum) => {
   const result = [];
   const pushElement = (i, t) => {
      const s = t.reduce(function (a, b) {
      return a + b;
      }, 0);
      if (sum === s) {
         result.push(t);
         return;
      };
      if (s > sum || i === arr.length) {
         return;
      };
      pushElement(i, t.concat([arr[i]]));
      pushElement(i + 1, t);
   }
   pushElement(0, []);
   return result;
};
console.log(getCombinations(arr, sum));

출력

콘솔의 출력은 -

[ [ 1, 1, 1, 1 ], [ 1, 1, 2 ], [ 2, 2 ], [ 4 ] ]