ตัวเลข Gapful คือตัวเลขที่มีความยาวอย่างน้อย 3 หลัก และหารด้วยตัวเลขที่เกิดจากการนำตัวเลขหลักแรกและหลักสุดท้ายมาต่อกันลงตัว ตัวเลขที่เล็กที่สุดที่ตรงตามเงื่อนไขคือ 100 หลักแรกคือ 1 หลักสุดท้ายคือ 0 รวมกันได้ 10 ซึ่งเป็นตัวประกอบของ 100 ดังนั้น 100 จึงเป็น Gapful
เราต้องสร้างฟังก์ชันที่รับตัวเลข n และคืนค่าตัวเลข Gapful ที่ใกล้ที่สุด (รวมตัวมันเองด้วย) หากมีตัวเลข Gapful 2 ตัวที่ห่างจาก n เท่ากัน ให้คืนค่าตัวที่น้อยกว่า
ตัวอย่าง
gapful(25) ➞ 100 gapful(100) ➞ 100 gapful(103) ➞ 105
โค้ดตัวอย่าง
const num = 4780;
const isGapful = n => {
if (n < 100) {
return false;
}
const temp = Array.from(n.toString());
return n % (temp[0] + temp[temp.length - 1]) === 0;
}
function getClosestGapful(n) {
let left = n, right = n;
while (!isGapful(right)) {
right++;
}
if (n < 100) {
return right;
}
while (!isGapful(left)) {
left--;
}
return n - left <= right - n ? left : right;
}
console.log(getClosestGapful(25));
console.log(getClosestGapful(num));
ผลลัพธ์
โค้ดนี้จะแสดงผลลัพธ์ดังต่อไปนี้บนคอนโซล:
100 4800