Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การสร้างการเรียงสับเปลี่ยนเพื่อให้ได้ตัวเลขเป้าหมาย แต่นำตัวเลขที่ให้มาซ้ำ JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของ Numbers เป็นอาร์กิวเมนต์แรก และ Number รวมเป้าหมายเป็นอาร์กิวเมนต์ที่สอง

ฟังก์ชันควรส่งคืนอาร์เรย์ของอาร์เรย์ย่อยทั้งหมดจากอาร์เรย์ดั้งเดิมที่มีองค์ประกอบรวมเพื่อสร้างผลรวมเป้าหมาย เราสามารถใช้เลขตัวเดียวสองครั้งเพื่อให้ได้ผลรวม

ตัวอย่างเช่น −

หากอาร์เรย์อินพุตและตัวเลขเป็น −

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 ] ]