ฉันกำลังดูแชมป์โลกสนุกเกอร์และมันทำให้ฉันสงสัย ..
การให้คะแนนสนุ้กเกอร์
ในเกมสนุ๊กเกอร์มีกฎบางอย่างที่คุณต้องปฏิบัติตามเช่นกัน:
- เมื่อมีลูกบอลสีแดงบนโต๊ะในช่วงตาคุณคุณจะต้องแทงลูกบอลสีแดงก่อน
- หลังจากปลูกลูกบอลสีแดงแต่ละลูกคุณจะต้องแทงลูกบอลสี (ไม่ใช่สีแดง) (ลูกบอลสีกระถางจะถูกแทนที่ลงบนโต๊ะ)
- หลังจากลูกบอลสีแดงทั้งหมดขึ้น (มี 15) คุณสามารถเลือกลูกบอลสีก่อนแล้วจึงเริ่มด้วยลูกบอลคะแนนต่ำสุดและทำตามวิธีของคุณจนถึงลูกบอลคะแนนสูงสุด (เหล่านี้จะไม่ถูกแทนที่)
- ไม่ได้เติม ณ จุดใดก็ตามจะเป็นการปิดตาคุณ
- คะแนนต่อบอล
- ลูกบอลสีแดง: 1 จุด
- ลูกบอลสีเหลือง: 2 คะแนน
- ลูกบอลสีเขียว: 3 คะแนน
- ลูกบอลสีน้ำตาล: 4 คะแนน
- ลูกบอลสีน้ำเงิน: 5 คะแนน
- ลูกบอลสีชมพู: 6 คะแนน
- ลูกบอลสีดำ: 7 คะแนน
คำถาม
คุณเริ่มต้นด้วยโต๊ะที่ลูกบอลทุกลูกยังคงอยู่ - ลูกบอลสีแดง15ลูกและลูกบอลสีหนึ่งในแต่ละลูก - และได้รับคะแนนผู้เล่นในสนุ๊กเกอร์หลังจากรอบแรกของพวกเขาสิ่งที่เป็นไปได้ที่พวกเขาจะประสบความสำเร็จ คะแนน?
ข้อมูลที่ป้อนจะเป็นคะแนนตั้งแต่ 1 ถึง 147 คุณสามารถเลือกได้ว่าจะเป็นจำนวนเต็มหรือสตริง ผลลัพธ์ควรเป็นการรวมจำนวนครั้งที่แตกต่างกันที่คุณได้วางกระถางแต่ละลูก
กรณีทดสอบ:
Input: 4
Output:
1r 1g
2r 1y
Input: 25
Output:
4r 3b
5r 2b 1br 1y
5r 2b 2g
...
9r 8y
กฎ:
- คุณสามารถเลือกได้ว่าคุณจะส่งออกความเป็นไปได้ที่หารด้วยบรรทัดใหม่หรือตัวคั่นของการเรียงลำดับบางอย่าง (/ ,; | \ หรือแม้กระทั่งสิ่งที่ฉันขาดหายไป)
นี่คือ codegolf ดังนั้นรหัสที่สั้นที่สุดชนะ
"5r 3b 2g"จะเป็นผลลัพธ์[5,0,2,0,3,0,0](ตราบใดที่มันสอดคล้องกัน)?
bสำหรับสีน้ำตาลและblสีน้ำเงิน ดังนั้นbkสำหรับสีดำ เราสามารถใช้n, eและk(ตัวอักษรที่ผ่านมา) ทั้งสาม? วิธีdlerunaการระบุแปดสีทั้งหมด (ตัวอักษรที่สามของแต่ละ)?