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

Tìm số Gapful gần nhất trong JavaScript

Một số là một số chênh lệch khi -

  • Nó có ít nhất ba chữ số và
  • Nó chính xác chia hết cho số được tạo thành bằng cách đặt các chữ số đầu tiên và cuối cùng của nó với nhau

Ví dụ -

Số 1053 là một số có lỗ hổng vì nó có 4 chữ số và nó chính xác chia hết cho 13. Tương tự, 135 là một số có lỗ hổng vì nó có 3 chữ số và nó chính xác chia hết cho 15.

Công việc của chúng tôi là viết một chương trình trả về số chênh lệch gần nhất với số chúng tôi cung cấp khi nhập.

Ví dụ:đối với tất cả các số có 2 chữ số, nó sẽ là 100. Đối với 103, nó sẽ là 105.

Chúng tôi sẽ chia vấn đề thành hai chức năng -

Hàm isGapful ()

Nó nhận một chuỗi số và trả về một boolean như trong đoạn mã dưới đây -

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

Hàm nearGapful ()

Đây là chức năng chính của chúng tôi nhận một số, trả về số thiếu gần nhất. Đây là mã -

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

Hàm isGapful () trả về một boolean dựa trên việc số đó có khoảng thời gian trống hay không, hàmGapful () gần nhất sẽ lặp lại cho đến khi nó tìm thấy một số có khoảng trống và trả về nó.

Sau đây là mã hoàn chỉnh -

Ví dụ

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

Đầu ra

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

135