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

JavaScript에서 가장 가까운 Gapful 숫자 찾기

<시간/>

숫자는 −

일 때 공백 숫자입니다.
  • 최소 3자리 숫자이며
  • 첫 숫자와 마지막 숫자를 합친 숫자로 정확히 나눌 수 있습니다.

예를 들어 -

숫자 1053은 4자리이고 정확히 13으로 나누어 떨어지기 때문에 공백 숫자입니다. 마찬가지로 135는 3자리이고 정확히 15로 나누어 떨어지기 때문에 공백 숫자입니다.

우리의 임무는 입력으로 제공한 숫자에 가장 가까운 공백 숫자를 반환하는 프로그램을 작성하는 것입니다.

예를 들어, 모든 2자리 숫자의 경우 100이 되고 103의 경우 105가 됩니다.

우리는 문제를 두 가지 기능으로 나눌 것입니다 -

isGapful() 함수

아래 코드와 같이 숫자 문자열을 받고 부울 값을 반환합니다. -

const isGapful = (numStr) => {
   const int = parseInt(numStr);
   return int % parseInt(numStr[0] + numStr[numStr.length - 1]) === 0;
};

nearestGapful() 함수

이것은 숫자를 수신하고 가장 가까운 공백 숫자를 반환하는 주요 함수입니다. 다음은 코드입니다 -

const nearestGapful = (num) => {
   if(typeof num !== 'number'){
      return -1;
   }
   if(num <= 100){
      return 100;
   }
   let prev = num - 1, next = num + 1;
   while(!isGapful(String(prev)) && !isGapful(String(next))){
      prev--;
      next++;
   };
   return isGapful(String(prev)) ? prev : next;
};

isGapful() 함수는 숫자가 갭이 있는지 여부에 따라 부울 값을 반환하고, 가장 가까운 Gapful() 함수는 갭이 있는 숫자를 찾을 때까지 반복하여 반환합니다.

다음은 전체 코드입니다 -

예시

const n = 134;
//receives a number string and returns a boolean
const isGapful = (numStr) => {
   const int = parseInt(numStr);
   return int % parseInt(numStr[0] + numStr[numStr.length - 1]) === 0;
};
//main function -- receives a number, returns a number
const nearestGapful = (num) => {
   if(typeof num !== 'number'){
      return -1;
   }
   if(num <= 100){
      return 100;
   }
   let prev = num - 1, next = num + 1;
   while(!isGapful(String(prev)) && !isGapful(String(next))){
      prev--;
      next++;
   };
   return isGapful(String(prev)) ? prev : next;
};
console.log(nearestGapful(n));

출력

콘솔의 출력은 -

135