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

JavaScript의 배열 내에서 혼동되는 숫자 찾기

<시간/>

복잡한 숫자:

배열의 숫자가 수직 및 수평으로 180도 회전한 후 배열에도 존재하는 다른 숫자가 되면 혼란스럽습니다. 예를 들어 6을 수직 및 수평으로 180도 회전하면 9가 되고 그 반대도 마찬가지입니다.

0, 1, 6, 8, 9의 회전만 유효한 숫자를 생성한다는 점을 명심해야 합니다.

첫 번째이자 유일한 인수로 자연수 num을 취하는 JavaScript 함수를 작성해야 합니다. 함수는 먼저 num을 포함하여 num까지의 모든 자연수 배열을 생성해야 합니다.

예를 들어, num =5의 경우 배열은 -

여야 합니다.
[1, 2, 3, 4, 5]

그런 다음 함수는 배열에 있는 혼란스러운 숫자의 수를 계산하고 마지막으로 해당 숫자를 반환해야 합니다.

예를 들어 -

입력이 -

인 경우
const num = 10;

그러면 출력은 다음과 같아야 합니다. -

const output = 5;

배열이 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]이고 혼란스러운 숫자는 -

이기 때문입니다.
1, 6, 8, 9, 10

예시

이에 대한 코드는 -

const num = 10;
const countConfusing = (num = 1) => {
   let count = 0;
   const valid = '01689';
   const rotateMap = {'0': '0', '1': '1', '6': '9', '8': '8', '9': '6'};
   const prepareRotation = num => {
      let res = '';
      const numArr = String(num).split('');
      if(numArr.some(el => !valid.includes(el))){
         return false;
      };
      numArr.map(el => {
         res = rotateMap[el] + res;
      });
      return +res;
   };
   for(let i = 1; i <= num; i++){
      const rotated = prepareRotation(i);
      if(rotated && rotated > 0 && rotated <= num){
         count++;
      };
   };
   return count;
};
console.log(countConfusing(num));

출력

콘솔의 출력은 -

5