Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm số khó hiểu trong một mảng trong JavaScript

Những con số khó hiểu:

Một số trong một mảng sẽ gây nhầm lẫn nếu nó trở thành một số khác cũng có trong mảng sau khi chúng ta xoay số đó 180 độ theo chiều dọc và chiều ngang. Ví dụ:nếu chúng ta xoay 6 x 180 độ theo chiều dọc và chiều ngang, nó sẽ trở thành 9 và ngược lại.

Chúng ta phải lưu ý rằng chỉ các phép quay 0, 1, 6, 8, 9 mới mang lại một số hợp lệ.

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một số tự nhiên, num, làm đối số đầu tiên và duy nhất. Trước tiên, hàm phải tạo một mảng gồm tất cả các số tự nhiên tối đa là num, bao gồm cả num.

Ví dụ:đối với num =5, mảng phải là -

[1, 2, 3, 4, 5]

Sau đó, hàm sẽ đếm có bao nhiêu số khó hiểu có trong mảng và cuối cùng trả về số đó.

Ví dụ -

Nếu đầu vào là -

const num = 10;

Sau đó, đầu ra phải là -

const output = 5;

bởi vì mảng sẽ là:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] và các số khó hiểu là -

1, 6, 8, 9, 10

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

5