Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ค้นหาจำนวนช่องว่างที่ใกล้ที่สุดใน JavaScript


ตัวเลขเป็นจำนวนช่องว่างเมื่อ -

  • มีอย่างน้อยสามหลักและ
  • หารด้วยจำนวนที่เกิดขึ้นโดยนำหลักแรกและหลักสุดท้ายมาหารกันอย่างลงตัว

ตัวอย่างเช่น −

ตัวเลข 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() จะคืนค่าบูลีนโดยพิจารณาจากจำนวนที่เว้นว่างหรือไม่ใช่เวลาที่ไม่คงที่ ฟังก์ชัน NearGapful() จะวนซ้ำจนกว่าจะพบตัวเลขที่เป็นช่องว่างและส่งกลับ

ต่อไปนี้เป็นรหัสที่สมบูรณ์ -

ตัวอย่าง

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