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

การเปิดและปิดหลอดไฟใน JavaScript


ปัญหา

พิจารณาสถานการณ์ต่อไปนี้ -

มี n หลอดไฟที่ปิดในตอนแรก ก่อนอื่นเราเปิดหลอดไฟทั้งหมด จากนั้นเราก็ปิดหลอดไฟทุกวินาที ในรอบที่ 3 เราจะเปิดสวิตช์ทุกๆ หลอดที่สาม (เปิดขึ้นหากปิดอยู่หรือปิดอยู่หากเปิดอยู่)

โดยทั่วไป สำหรับรอบ ith เราสลับทุกหลอด i และสุดท้ายสำหรับรอบที่ n เราสลับเฉพาะหลอดสุดท้ายเท่านั้น

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับ n เป็นอินพุตเดียว และค้นหาจำนวนหลอดไฟที่เปิดอยู่หลังจาก n รอบ

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

const n = 4;

จากนั้นผลลัพธ์ควรเป็น −

const output = 2;

คำอธิบายผลลัพธ์:

ในอาร์เรย์ของรัฐ 0 หมายถึงปิดในขณะที่ 1 หมายถึงเปิด -

รอบ สถานะ
1 [1, 1, 1, 1, 1]
2 [1, 0, 1, 0, 1]
3 [1, 0, 0, 0, 1]
4 [1, 0, 0, 1, 1]
5 [1, 0, 0, 1, 0]

ดังนั้นหลังจากรอบที่ห้าหลอดไฟเปิดเพียงสองหลอดเท่านั้น

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const n = 5;
const findOn = (n = 1) => {
   let off = 0;
   let on = n;
   while(off <= on){
      let mid = Math.floor((off + on) / 2);
      if(mid * mid > n){
         on = mid - 1;
      }else{
         off = mid + 1;
      };
   };
   return Math.floor(on);
};
console.log(findOn(n));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

2