कैदी की दुविधा अभ्यास के एक दौर में , दो खिलाड़ी यह तय करते हैं कि उस दौर के लिए सहयोग करना है या दोष । एक दौर के लिए स्कोरिंग है:
- प्लेयर ए और प्लेयर बी दोनों सहयोग करते हैं: दोनों के लिए 1 अंक
- प्लेयर ए और प्लेयर बी दोनों दोष: दोनों के लिए 2 अंक
- प्लेयर A कोऑपरेट करता है और प्लेयर B को दोष देता है: प्लेयर A को सहयोग करने के लिए 3 अंक और प्लेयर B को ख़राब करने के लिए 0 अंक
आपको रणनीति के बारे में चिंता करने की आवश्यकता नहीं है, हालांकि: आपका कार्यक्रम केवल गेम के लिए स्कोर को सारणीबद्ध करेगा। (यदि आप पहले से ही कैदी की दुविधा से परिचित हैं, तो मेरे "बिंदु" यहां "जेल में वर्षों" के अनुरूप हैं।)
आपकी चुनौती इनपुट लेने की है जो कई राउंड में खिलाड़ियों की पसंद का प्रतिनिधित्व करती है और उनके संबंधित कुल अंकों की गणना करती है। एक खिलाड़ी लोअरकेस में विकल्प प्रस्तुत करता है, 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]उत्पादन के लिए ठीक है?
