ในรอบการฝึกกระอักกระอ่วนของนักโทษผู้เล่นสองคนตัดสินใจว่าจะให้ความร่วมมือหรือมีข้อบกพร่องในรอบนั้นหรือไม่ คะแนนสำหรับรอบคือ:
- ผู้เล่น A และผู้เล่น B ทั้งคู่ให้ความร่วมมือ: 1 คะแนนสำหรับทั้งคู่
- ผู้เล่น A และผู้เล่น B ทั้งคู่มีข้อบกพร่อง: 2 คะแนนสำหรับทั้งคู่
- ผู้เล่น A ร่วมมือและผู้เล่น B มีข้อบกพร่อง: 3 คะแนนสำหรับการประสานผู้เล่น A และ0 คะแนนเพื่อป้องกันผู้เล่น B
คุณไม่จำเป็นต้องกังวลเกี่ยวกับกลยุทธ์แม้ว่า: โปรแกรมของคุณจะทำเป็นตารางคะแนนสำหรับเกม (ในกรณีที่คุณคุ้นเคยกับภาวะที่กลืนไม่เข้าคายไม่ออกของ "จุด" ของฉันที่นี่ตรงกับ "ปีในคุก")
ความท้าทายของคุณคือการป้อนข้อมูลที่แสดงถึงตัวเลือกของผู้เล่นในหลายรอบและคำนวณคะแนนรวมตามลำดับ ผู้เล่นคนหนึ่งส่งทางเลือกในตัวพิมพ์เล็กcและd(สำหรับความร่วมมือและข้อบกพร่อง ) และทางเลือกอื่น ๆ ส่งในตัวพิมพ์ใหญ่และC Dตัวเลือกเหล่านี้มีให้กับโปรแกรมของคุณเป็นสตริง
โดยปกติผู้เล่นที่อยู่ในภาวะวิกฤติจะส่งการเคลื่อนไหวพร้อมกันและวนซ้ำ อย่างไรก็ตามในการท้าทายนี้ผู้เล่นอาจส่งตัวเลือกของพวกเขาไปหลายรอบในคราวเดียว หากการเคลื่อนไหวของผู้เล่นไม่เป็นไปตามลำดับโปรแกรมการให้คะแนนจะจดจำมันและจับคู่กับการเคลื่อนไหวครั้งต่อไปที่มีจากผู้เล่นฝ่ายตรงข้าม
นี่คือสตริงอินพุตตัวอย่าง:
cDCddDDCcCc
หากต้องการแสดงรายการที่ตรงกันที่มีอยู่ในข้อมูลนี้ฉันจะเรียกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่แยกกันแล้วจับคู่:
cDCddDDCcCc
c dd c c => cddcc
DC DDC C => DCDDCC
เหล่านี้จะถูกจับคู่กับรอบ:
c vs D (3 pts for lowercase-player, 0 pts for uppercase-player)
d vs C (0 pts for lowercase-player, 3 pts for uppercase-player)
d vs D (2 pts for both)
c vs D (3 pts for lowercase-player, 0 pts for uppercase-player)
c vs C (1 pt for both)
ซึ่งให้คะแนน9(ตัวพิมพ์เล็ก) ถึง6(ตัวพิมพ์ใหญ่) ดังนั้นผลลัพธ์ควรเป็น9,6(หรือตัวคั่นที่ไม่ชัดเจน)
เพื่อแสดงในอีกวิธีหนึ่งนี่คือการจับคู่แต่ละครั้งดึงออกมาในแถวของตัวเอง:
cDCddDDCcCc
cD
Cd
dD
D c
C c
มีหนึ่งที่ไม่ตรงกันCเนื่องจากผู้เล่นตัวพิมพ์ใหญ่ส่งการเคลื่อนไหวมากกว่าผู้เล่นตัวพิมพ์เล็ก นั่นเป็นสิ่งที่ยอมรับได้และจะถูกเพิกเฉยอย่างสิ้นเชิงสำหรับการทำประตู
นี่คือข้อกำหนด:
คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่ยอมรับสตริงของรูปแบบการแสดงออกปกติ
/[cdCD]+/ผ่านกลไกการป้อนข้อมูลบางอย่าง (STDIN, ฟังก์ชั่นการโต้แย้ง, อ่านจากไฟล์ ฯลฯ ) (โปรแกรมของคุณอาจยอมรับอินพุตด้วยการขึ้นบรรทัดใหม่)โปรแกรมหรือฟังก์ชั่นของคุณจะต้องส่งออกหรือส่งกลับคะแนนของผู้เล่นเป็นสตริง รูปแบบผลลัพธ์จะต้องเริ่มต้นด้วยคะแนนของผู้เล่นตัวพิมพ์เล็กตามด้วยคะแนนของผู้เล่นตัวพิมพ์ใหญ่คั่นด้วยตัวคั่นที่ไม่ว่างและไม่เป็นตัวเลขที่คุณเลือก (ขึ้นบรรทัดใหม่ต่อท้ายเป็นตัวเลือก)
หากผู้เล่นหนึ่งคนมีการเคลื่อนไหวมากกว่าผู้เล่นคนอื่นการเคลื่อนไหวส่วนเกินจะถูกเพิกเฉย
หากการเคลื่อนไหวทั้งหมดในการป้อนข้อมูลจากเฉพาะผู้เล่นคนหนึ่ง (นั่นคือไม่มีรอบได้รับการเล่นที่ทั้งหมด)
0แล้วคะแนนของผู้เล่นแต่ละคนการส่งที่น้อยที่สุดในหน่วยไบต์ชนะ
กรณีทดสอบ
Input: cDCddDDCcCc
Output: 9,6 -- or any delimiter; I chose commas here
Input: cccDDD
Output: 9,0
Input: DDDDDDccc
Output: 9,0
Input: cDcDcD
Output: 9,0
Input: dcDDC
Output: 5,2
Input: CcdCDDcd
Output: 6,6
Input: Ddd
Output: 2,2
Input: ccccccccccc
Output: 0,0
(0,0)หรือ[0,0]ตกลงสำหรับการส่งออก?
