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

ตรวจสอบว่าสามารถให้การเปลี่ยนแปลงใน JavaScript . ได้หรือไม่


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลข arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว

ให้เราพิจารณาสถานการณ์ต่อไปนี้:

เจ้าของร้านขายสินค้าชิ้นเดียวในราคา ₹5 พอดี ลูกค้าบางคนยืนต่อคิวและจะซื้อหนึ่งหน่วยของสินค้าโภคภัณฑ์แต่ละชิ้น ลูกค้าสามารถแจ้งเจ้าของร้านด้วยเงิน ₹5, ₹10 หรือ ₹20 แก่เจ้าของร้านได้ เมื่อพิจารณาว่าเจ้าของร้านไม่มีเงินในตอนเริ่มต้นและอาร์เรย์แสดงถึงบันทึกที่ลูกค้ายืนอยู่ในคิว

หน้าที่ของเราควรกำหนดว่าเจ้าของร้านสามารถให้การเปลี่ยนแปลงที่แน่นอนแก่ลูกค้าทั้งหมดได้หรือไม่

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

ป้อนข้อมูล

const arr = [5, 5, 10, 10, 20];

ผลผลิต

const output = false;

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

เนื่องจากจะใช้โน้ต 5 สองตัวในการเปลี่ยนแปลงสำหรับโน้ต 10 สองตัว และหลังจากนั้นจะไม่สามารถสร้างการเปลี่ยนแปลงสำหรับโน้ต 20 ตัวได้

ต่อไปนี้เป็นรหัส:

ตัวอย่าง

const arr = [5, 5, 10, 10, 20];
const provideChanges = (arr = []) => {
   let fives = 0
   let tens = 0
   for(let i = 0; i < arr.length; i++) {
      switch(arr[i]) {
         case 5:
            fives += 1
            break
         case 10:
            if(fives <= 0) {
               return false
            }
            fives -= 1
            tens += 1
            break
         default:
            if(tens >= 1 && fives >= 1) {
            tens -= 1
            fives -= 1
         } else if(fives >= 3) {
            fives -= 3
         } else {
            return false
         }
         break
      }
   }
   return true
};
console.log(provideChanges(arr));

ผลลัพธ์

false