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

การสร้างอาร์เรย์ของขนาดเฉพาะโดยมีผลรวมขององค์ประกอบต่อเนื่องกันเป็นกำลังสองที่สมบูรณ์แบบใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่มีตัวเลข n ฟังก์ชันของเราควรคืนค่าอาร์เรย์ของจำนวนเต็ม 1..n ที่จัดเรียงในลักษณะที่ผลรวมของตัวเลข 2 ตัวที่เรียงกันเป็นกำลังสอง

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const n = 15;
const buildSquaresArray = (n = 1, res = []) => {
   const helper = (res, set, n) => {
      if(set.size === n){
         return true;
      };
      for(let i = 1; i <= n; i++){
         if (set.has(i)){
            continue;
         };
         if(res.length && Math.sqrt(res[0] + i) % 1 !== 0){
            continue;
         };
         set.add(i);
         res.unshift(i);
         if(helper(res,set,n)){
            return true;
         }
         res.shift();
         set.delete(i);
      };
      return false;
   };
   return helper(res,new Set(),n) ? res : false;
};
console.log(buildSquaresArray(n));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

[
   9,  
   7,  
   2,
   14,
   11,  
   5,
   4,
   12,
   13,  
   3,  
   6,
   10,
   15,  
   1,  
   8
]