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

JavaScript에서 연속 요소 합이 완전 정사각형인 특정 크기의 배열 만들기

<시간/>

숫자 n을 받는 JavaScript 함수를 작성해야 합니다. 우리의 함수는 2개의 연속된 숫자의 합이 제곱이 되도록 하는 방식으로 배열된 정수 1..n의 배열을 반환해야 합니다.

예시

이에 대한 코드는 -

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
]