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