Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

สร้างอาร์เรย์ขนาด n ที่ผลรวมสองตัวติดกันเป็นกำลังสองสมบูรณ์ใน 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 ]