หลายคนไปที่ศูนย์โบว์ลิ่งในพื้นที่เพื่อเล่นโบว์ลิ่งไม่กี่เกมและหลายคนยังคงดิ้นรนเพื่อคำนวณคะแนนของพวกเขา World Bowling ได้แนะนำระบบการให้คะแนนที่ง่ายขึ้นเพื่อดึงดูดผู้คนให้เข้าร่วมการแข่งขันมากขึ้น ระบบการให้คะแนนนี้ใช้ในเกมระหว่างประเทศ
ระบบการให้คะแนนทำงานเช่นนี้ (จากWikipedia ):
ระบบการให้คะแนนโบว์ลิ่งของโลก - อธิบายว่า "การให้คะแนนเฟรมปัจจุบัน" [32] - ผลตอบแทนพินดังต่อไปนี้:
- การนัดหยุดงาน: 30 (ไม่คำนึงถึงผลของการหมุนต่อเนื่อง)
- สำรอง: 10 บวก pinfall ในม้วนแรกของเฟรมปัจจุบัน
- เปิด: pinfall ทั้งหมดสำหรับกรอบปัจจุบัน
หากคุณไม่คุ้นเคยกับโบว์ลิ่งสิบพินนี่คือบทสรุป
มี 10 พินในตอนท้ายของเลนโบว์ลิ่งที่เป้าหมายคือการทำให้พวกเขาทั้งหมดล้มลงด้วยลูกโบว์ลิ่ง คุณได้รับลูกบอล 2 ลูกเพื่อพยายามล้มพวกเขาทั้งหมดโดยเฉพาะอย่างยิ่งการตีพวกเขาทั้งหมดด้วยการหมุนรอบแรก (เรียกว่าการโจมตี ) หากคุณได้รับการตีจากนั้นกรอบนั้นจะเสร็จสมบูรณ์และคุณไม่จำเป็นต้องหมุนลูกบอลเป็นครั้งที่สอง นัดหยุดงานมีค่า 30
หากคุณไม่ล้มลงทั้งสิบคุณจะได้รับอีกหนึ่งม้วน หากคุณเคาะลงทั้งหมดของหมุดที่เหลือที่เป็นที่รู้จักกันเป็นอะไหล่ คะแนนมีค่า 10 พิน + จำนวนพินที่ล้มในการหมุนครั้งแรก ตัวอย่างเช่นถ้าฉันล้มลง 7 พินจากนั้นก็จัดการที่จะล้มลง 3 ที่เหลือนั่นจะมีค่า 17
ถ้าหลังจากม้วนที่สองคุณล้มเหลวในการเคาะลงสิบทั้งหมดที่เป็นที่รู้จักในฐานะที่เป็นกรอบเปิด คะแนนมีค่าเท่ากับจำนวนพินทั้งหมดที่ล้มลงสำหรับเฟรมนั้น
มี10 เฟรมในเกม หากคุณคุ้นเคยกับการให้คะแนนโบว์ลิ่งแบบดั้งเดิมคุณจะไม่ได้รับคะแนนเพิ่มในเฟรมที่ 10 ด้วยการให้คะแนนโบว์ลิ่งโลก ในการให้คะแนนโบว์ลิ่งแบบดั้งเดิมนั้นจะใช้เวลา 12 ครั้งติดต่อกันเพื่อให้ได้คะแนนที่สมบูรณ์แบบ 300 คะแนนในขณะที่การให้คะแนน World Bowling นั้นต้องการเพียง 10 ครั้งติดต่อกัน
ท้าทาย
ความท้าทายของคุณคือการคำนวณคะแนนที่ได้รับจากแผ่นคะแนน
บนแผ่นคะแนนการพลาดจะถูกระบุโดยเส้นประ ( - ) การโจมตีด้วยXและอะไหล่ที่มีเครื่องหมายทับ ( / ) หากสิ่งเหล่านี้ใช้ไม่ได้การนับจำนวนพินจะถูกระบุด้วยตัวเลข (1-9) การฟาล์วและการแยกจะถูกบันทึกลงบนแผ่นคะแนน แต่คุณไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งเหล่านี้
อินพุต
คุณจะได้รับสตริงที่ประกอบด้วยคะแนนสำหรับแต่ละเฟรมและจะมีทั้งหมดสิบเฟรม แต่ละเฟรมจะมีค่าสูงสุดสองค่าหรือน้อยกว่า 1 ค่าหากมีการประท้วง อินพุตของคุณอาจเป็นพารามิเตอร์สตริงไปยังฟังก์ชันอ่านจากไฟล์หรือจาก STDIN
ตัวอย่างเช่นถ้าฉันล้มลง 1 พินในม้วนแรกของฉันจากนั้นล้มลง 2 เฟรมจะมีลักษณะเป็น "12" สิ่งนี้ไม่ได้หมายความว่า 12 (สิบสอง) แต่หมายถึง 1 และ 2 รวมเป็น 3
หากฉันพลาดพินทุกครั้งที่มีทั้งม้วน (ลูกรางน้ำ) มันจะมีลักษณะเช่นนี้ "-" (คะแนน 0)
แต่ละเฟรมจะถูกคั่นด้วยช่องว่าง
ตัวอย่างอินพุต
-- 9- -9 X -/ 8/ 71 15 44 X
เพื่อแยกตัวอย่างนี้
- Frame 1 (-) - พลาดทั้งสองม้วน คะแนน 0
- กรอบ 2 (9-) - ล้มลง 9 ในม้วนแรกที่พลาดในม้วนที่สอง คะแนน 9
- Frame 3 (-9) - ทำพลาดในครั้งแรกได้ 9 อันในวินาที คะแนน 9
- Frame 4 (X) - โจมตีล้มลงทั้งสิบตัว คะแนน 30
- กรอบ 5 (- / /) - อะไหล่พลาดทั้งหมดในครั้งแรกล้มลงทั้งหมดด้วยม้วนที่ 2 คะแนน 10 + 0 = 10
- กรอบ 6 (8 /) - อะไหล่, 8 พินในม้วนแรก, เคาะลงอีก 2 ด้วยม้วนที่ 2 คะแนน 10 + 8 = 18
- กรอบ 7 (71) - เปิดเฟรม 7 พินในม้วนแรก, 1 พินในม้วนที่สอง คะแนน 7 + 1 = 8
- เฟรม 8,9,10 ทำตามตัวอย่างเดียวกับด้านบน
เอาท์พุต
เอาต์พุตจะเป็นค่าที่มีผลรวมของคะแนนจากทั้ง 10 เฟรม การใช้อินพุตตัวอย่างเอาต์พุตจะเป็น 128 เอาต์พุตของคุณอาจเป็นสตริงหรือชนิดตัวเลข มันอาจจะเป็นค่าตอบแทนฟังก์ชั่นหรือเขียนถึง STDOUT
กฎระเบียบ
- สมมติว่าอินพุตจะถูกต้องเสมอ ตัวอย่างเช่นเฟรมที่ไม่ถูกต้องจะเป็น "/ 8", "XX", "123", "0" ฯลฯ
- คุณไม่จำเป็นต้องกังวลเกี่ยวกับการแยกหรือการทำผิดกติกา
- รหัสของคุณอาจเป็นโปรแกรมเต็มรูปแบบหรือฟังก์ชั่นที่ใช้ในสตริงและส่งกลับคะแนน
- รหัสของคุณต้องไม่ส่งข้อยกเว้นใด ๆ
- นี่คือรหัสกอล์ฟคำตอบที่มีจำนวนไบต์น้อยที่สุดเป็นผู้ชนะ
- ภาษาที่ใช้รวมหรือนำเข้าจะต้องรวมคำสั่งการนำเข้าเป็นส่วนหนึ่งของรหัสและนับรวมเป็นจำนวนไบต์
กรณีทดสอบ
"-- 9- -9 X -/ 8/ 71 15 44 X" -> 128
"-- -1 2- 12 22 5- 42 61 8- 72" -> 45
"X X X 1/ 2/ 3/ 4/ 5/ -- 9/" -> 174
"X X X X X X X X X X" -> 300
"-- -- -- -- -- -- -- -- -- --" -> 0