ต้นทุนทรัพยากรพลังงานกริด
บทนำ
ในเกมกระดานPower Gridส่วนหนึ่งของเกมคือการซื้อทรัพยากรเพื่อเติมเชื้อเพลิงให้กับสถานีพลังงานของคุณ มีสี่ประเภทของทรัพยากรที่ใช้ในเกม (ห้าถ้าคุณรวมพลังงานหมุนเวียน แต่แน่นอนคุณไม่สามารถซื้อทรัพยากรสำหรับที่) เหล่านี้คือถ่านหินน้ำมันขยะและยูเรเนียม ตลาดทรัพยากรมีลักษณะดังนี้:
1---- | 2---- | 3---- | 4---- | 5---- | 6---- | 7---- | 8---- | 10 | 12
CCC | CCC | CCC | CCC | CCC | CCC | CCC | CCC | U | U
OOO U | OOO U | OOO U | OOO U | OOO U | OOO U | OOO U | OOO U | 14 | 16
GGG | GGG | GGG | GGG | GGG | GGG | GGG | GGG | U | U
เมื่อมีการซื้อทรัพยากรพวกเขาจะถูกนำมาจากด้านซ้ายของตลาดที่ถูกที่สุด เมื่อมีการเพิ่มทรัพยากรใหม่เข้าสู่ตลาดทรัพยากรเหล่านั้นจะถูกเพิ่มจากด้านขวา ดังจะเห็นได้ว่าสิ่งนี้ก่อให้เกิดความสมดุลระหว่างอุปสงค์และอุปทาน - หากมีการซื้อทรัพยากรประเภทใดประเภทหนึ่งมากกว่าที่จะถูกเติมเต็มในแต่ละรอบราคาของทรัพยากรนั้นจะเพิ่มขึ้น ในทำนองเดียวกันถ้ามันน้อยกว่าค่าใช้จ่ายจะลดลง
ถ่านหินน้ำมันและขยะต่างก็มีต้นทุนเพิ่มขึ้นในอัตราเดียวกันในขณะที่ยูเรเนียมจะขยายตัวเร็วกว่ามาก 8 - floor((<units available> - 1) / 3)หน่วยเดียวของค่าใช้จ่ายที่ไม่ใช่ทรัพยากรยูเรเนียม ต้นทุนยูเรเนียมหน่วยเดียว13 - <units available>หากมี 5 หน่วยขึ้นไปและ18 - (2 * <units available>)อย่างอื่น
ตัวอย่างเช่นในตอนเริ่มเกมมีการซื้อถ่านหินทั้งหมด 24 ยูนิต หากผู้เล่นคนแรกต้องการซื้อถ่านหิน 4 หน่วยสามคนแรกจะเสียค่าใช้จ่าย 1 หน่วยต่อคนและอันดับที่ 4 จะมีค่าใช้จ่าย 2 ทำให้มีค่าใช้จ่ายทั้งหมด 5 ซึ่งจะเหลือ 20 หน่วย หากผู้เล่นคนที่สองต้องการซื้อถ่านหิน 4 หน่วยราคาจะเป็น (2 * 2 + 2 * 3) = 10
ความท้าทาย
ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นซึ่งคำนวณค่าใช้จ่ายในการซื้อทรัพยากรจำนวนหนึ่งที่กำหนดโดยสมมติว่ามีทรัพยากรจำนวนหนึ่งที่มีอยู่ในตลาด
การส่งของคุณควรยอมรับในรูปแบบการป้อนข้อมูลที่สมเหตุสมผลและในลำดับใด ๆ พารามิเตอร์ต่อไปนี้:
- ประเภททรัพยากร - รับประกันว่าจะเป็นหนึ่งใน [C, O, G, U]
- จำนวนของทรัพยากรนั้นที่มีอยู่ในตลาด - รับประกันว่าจะเป็นจำนวนเต็มที่ไม่เป็นลบ ถ้าชนิดของทรัพยากรไม่ใช่ U มันจะไม่มากกว่า 24 ถ้าชนิดของทรัพยากรเป็น U มันจะไม่มากกว่า 12
- จำนวนทรัพยากรนั้นที่ผู้เล่นต้องการซื้อ - รับประกันว่าจะเป็นจำนวนเต็มแบบไม่ลบซึ่งน้อยกว่าหรือเท่ากับจำนวนเงินที่มีอยู่แล้วในตลาด
ผลลัพธ์ควรเป็นต้นทุนของทรัพยากรที่ร้องขอ
กฎเพิ่มเติม
- สูตรที่ให้ไว้มีวัตถุประสงค์เพื่อเป็นตัวอย่างเท่านั้นอย่าลังเลที่จะใช้วิธีการคำนวณต้นทุนที่คุณต้องการ
- รหัสตัวอักษรสำหรับทรัพยากรประเภทต่าง ๆ (C, O, G, U) อาจถูกแทนที่ด้วยตัวพิมพ์เล็กหรือตัวพิมพ์เล็กที่เทียบเท่ากัน นอกจากนี้คุณยังอาจแทนที่ตัวอักษรสำหรับตัวเลขทั้งในรูปแบบหรือ
C=0, O=1, G=2, U=3C=1, O=2, G=3, U=4 - นี่คือโค้ดกอล์ฟดังนั้นการส่งที่น้อยที่สุดในหน่วยไบต์จะเป็นผู้ชนะ
- หากการส่งของคุณต้องการอินพุตในลำดับหรือรูปแบบที่แตกต่างจากที่ระบุไว้ในส่วนก่อนหน้าคุณควรให้รายละเอียด
กรณีทดสอบ
รูปแบบกรณีทดสอบ:
resource type, amount in market, amount to buy
> result
กรณีทดสอบ:
C, 24, 4
> 5
C, 20, 4
> 10
O, 3, 3
> 24
U, 1, 1
> 16
C, 1, 1
> 8
G, 0, 0
> 0
O, 10, 7
> 44
U, 12, 4
> 10
G, 11, 4
> 22
f(G, 11, 4) = 22 f(O, 10, 7) = 44

f("O",1,5)?