Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

นับ Confusing Number ในช่วง 1 ถึง n ด้วย JavaScript

Confusing Number คืออะไร?

ตัวเลขที่เมื่อหมุน 180 องศา (ทั้งแนวตั้งและแนวนอน) จะกลายเป็นตัวเลขอื่นที่ถูกต้อง และตัวเลขใหม่นั้นต้องมีอยู่ในช่วง 1 ถึง n ด้วย ตัวเลขที่หมุนได้คือ 0,1,6,8,9 (6↔9, 0,1,8 คงเดิม)

ปัญหา

รับตัวเลข num สร้างอาร์เรย์ 1 ถึง num นับว่ามี Confusing Number กี่ตัว

ตัวอย่าง

const num = 10;

อาร์เรย์: [1,2,3,4,5,6,7,8,9,10] → Confusing Numbers: 1,6,8,9,10 → ผลลัพธ์ 5

โค้ดตัวอย่าง

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