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

ปัญหาแป้นพิมพ์ 2 ปุ่มใน JavaScript

สถานการณ์: เริ่มต้นบนโน้ตแพดมีตัวอักษร 'A' เพียงตัวเดียว เราสามารถทำสองการดำเนินการในแต่ละขั้นตอน:

  • Copy All - คัดลอกตัวอักษรทั้งหมดบนโน้ตแพด (ไม่สามารถคัดลอกบางส่วนได้)
  • Paste - วางตัวอักษรที่คัดลอกไว้ล่าสุด

เราต้องเขียนฟังก์ชันที่รับตัวเลข num เป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องคำนวณและคืนค่าจำนวนขั้นตอนน้อยที่สุด (Copy All หรือ Paste) ที่ต้องใช้เพื่อพิมพ์ 'A' จำนวน num ครั้ง

ตัวอย่าง

ถ้าตัวเลขนำเข้าคือ:

const num = 3;

ผลลัพธ์ควรเป็น:

const output = 3;

เพราะขั้นตอนคือ:

  • Copy All (ผลลัพธ์: 'A')
  • Paste All (ผลลัพธ์: 'AA')
  • Paste All (ผลลัพธ์: 'AAA')

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

const num = 3;
const minimumSteps = (num = 1) => {
  let [curr, copy, steps] = [1, 0, 0];
  while(curr != num) {
    if((copy < curr) && ((num - curr) % curr) == 0) {
      copy = curr;
    } else {
      curr += copy;
    }
    steps += 1;
  }
  return steps;
};
console.log(minimumSteps(num));

ผลลัพธ์

3