आइए कार्ड गेम में एक पहलू के लिए एक सिमुलेशन बनाएं, जिसे मैं व्यक्तिगत रूप से डच नाम 'ओरलॉग' ('वॉर' के लिए अनुवाद करता हूं) से जानता हूं।
O ओरलॉग ’कैसे काम करता है?
खिलाड़ियों के खेलने की मात्रा के बीच कार्ड के दो डेक (प्रत्येक दो जोकर सहित) समान रूप से विभाजित हैं। प्रत्येक खिलाड़ी अपने स्वयं के स्टॉक को फेरबदल करता है, इसे अपने सामने रखता है और सभी खिलाड़ी एक ही समय में स्टॉक का पहला कार्ड खोलते हैं।
उस 'लड़ाई' का विजेता इन नियमों का पालन करते हुए कार्ड के मूल्यों से निर्धारित होता है: जोकर / ऐस ने राजा को हराया; राजा ने रानी को हराया; रानी ने जैक को हराया; जैक ने 10 को हराया; 10 ने 9 को हराया; .... इसके अलावा, 2 और 3 दोनों ऐस / जोकर को हराते हैं। अंतिम नियम में एक चक्र हो सकता है जहां 2 या 3 ऐस या जोकर को मारता है, ऐस या जोकर कुछ अन्य कार्ड को धड़कता है, जो बदले में 2 या 3 को हरा देता है। इस मामले में, 2 या 3 लड़ाई जीतता है।
(सूट इस कार्ड गेम में अप्रासंगिक है।)
जब दो या अधिक खिलाड़ियों के पास समान उच्चतम कार्ड होते हैं, तो उनके पास एक 'युद्ध' होता है। इसका मतलब है कि वे एक कार्ड को उल्टा रख देते हैं, और फिर प्रत्येक अपने स्टॉक से एक नया कार्ड खोलते हैं, फिर से देखते हैं कि किसके पास सबसे अधिक कार्ड है। यह तब तक जारी रहता है जब तक एक खिलाड़ी पूरी लड़ाई नहीं जीत लेता।
(उस लड़ाई के सभी कार्ड लड़ाई जीतने वाले खिलाड़ी के ढेर पर चले जाते हैं। फिर हर कोई एक नया कार्ड खोलता है। जब किसी खिलाड़ी का स्टॉक कार्ड से बाहर हो जाता है, तो वे अपने त्यागने के ढेर को उल्टा कर देते हैं और इस नए स्टॉक के साथ जारी रखते हैं। यह तब तक जारी रहता है जब तक एक खिलाड़ी अपने सभी कार्डों से बाहर नहीं हो जाता है और तब खिलाड़ी सबसे अधिक राशि जीतता है।)
तीन खिलाड़ियों के साथ 'लड़ाई'
- 4, 8, जैक:
जैक जीतता है। - 7, ऐस, क्वीन:
ऐस जीतता है। - 10, 10, राजा:
राजा जीतता है। - 3, जोकर, 2:
3 जीत। - ऐस, जोकर, 2:
2 जीत। - 3, क्वीन, ऐस:
3 जीत। - क्वीन, क्वीन, 9:
क्वीन एंड क्वीन एक 'युद्ध' चल रही है, इसलिए यह दो नए कार्ड के साथ जारी है: 4, 8;
8 जीत। - 4, 4, 4:
सभी एक 'युद्ध' कर रहे हैं, इसलिए यह तीन नए कार्डों के साथ जारी है: 8, ऐस, 2;
2 जीत। - जैक, 5, जैक:
जैक एंड जैक एक 'युद्ध' कर रहे हैं, इसलिए यह दो नए कार्डों के साथ जारी है: 5, 5;
5 और 5 भी समान हैं, इसलिए दो नए कार्ड के साथ फिर से 'युद्ध' जारी है: 10, राजा;
राजा जीत गया। - जोकर, जोकर, ऐस:
सभी एक 'युद्ध' कर रहे हैं, इसलिए यह तीन नए कार्डों के साथ जारी है: 9, 7, 9;
9 और 9 भी समान हैं, इसलिए दो नए कार्ड के साथ 'युद्ध' जारी है: जैक, 3;
जैक जीतता है।
तो, कोड चुनौती पर:
इनपुट:
एक सरणी के साथ STDIN, या एक सरणी का अनुकरण करने वाला एक स्ट्रिंग (आपकी कॉल - भले ही आपकी भाषा सरणियों का समर्थन करती है)। इस सरणी में कालानुक्रमिक क्रम में एक लड़ाई के कार्ड हैं (इस की स्पष्ट समझ के लिए परीक्षण मामलों को देखें)।
आउटपुट:
लड़ाई जीतने वाले खिलाड़ी के सूचकांक के बारे में।
आप चुन सकते हैं कि क्या आप एक शून्य अनुक्रमित (यानी चाहते हैं 0
, 1
या 2
(यानी) या एक अनुक्रमित उत्पादन 1
, 2
, 3
)।
चुनौती नियम:
- इनपुट एक सरणी का प्रतिनिधित्व करने वाला एकल सरणी / स्ट्रिंग होगा। इसलिए आपको इसे सरल बनाने के लिए सारणियों का एक सरणी नहीं हो सकता है। युद्ध में भाग नहीं लेने वाले कार्डों के लिए आपके पास सरोगेट आइटम भी नहीं हो सकते।
- हम पत्र संकेतन के बजाय फेस-कार्ड के लिए नंबर नोटेशन का उपयोग करते हैं। अतः इक्का / जोकर =
1
; जैक =11
; रानी =12
; और राजा =13
। - इस चुनौती में हम मान सकते हैं कि हम हमेशा 3 खिलाड़ियों के साथ खेल रहे हैं ।
- पहले तीन 'लड़ाई' की शुरुआत का संकेत देते हैं। जब दो या अधिक खिलाड़ियों का 'युद्ध' होता है, तो सरणी में जारी कार्ड उनकी लड़ाई का संकेत देते हैं (इस की स्पष्ट समझ के लिए परीक्षण मामलों को देखें)।
सामान्य नियम:
- यह कोड-गोल्फ टैग किया गया है , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
इसका मतलब यह नहीं है कि गैर-कोड-गोल्फ भाषाओं को दर्ज नहीं किया जाना चाहिए। 'हर' प्रोग्रामिंग लैंग्वेज के लिए जितना संभव हो उतना कम कोड-गोल्फ उत्तर के साथ आने की कोशिश करें। - कृपया उल्लेख करें कि आपने आउटपुट के लिए किस इंडेक्सिंग (शून्य- या एक-इंडेक्स) का उपयोग किया है।
परीक्षण के मामलों:
Test case 1: [4, 8, 11] -> 2 (or 3)
Test case 2: [7, 1, 12] -> 1 (or 2)
Test case 3: [10, 10, 13] -> 2 (or 3)
Test case 4: [3, 1, 2] -> 0 (or 1)
Test case 5: [1, 1, 2] -> 2 (or 3)
Test case 6: [3, 12, 1] -> 0 (or 1)
Test case 7: [12, 12, 9, 4, 8] -> 1 (or 2)
Test case 8: [4, 4, 4, 8, 1, 2] -> 2 (or 3)
Test case 9: [11, 5, 11, 5, 5, 10, 13] -> 2 (or 3)
Test case 10: [1, 1, 1, 9, 7, 9, 11, 3] -> 0 (or 1)
Test case 11: [13, 13, 4, 1, 3] -> 1 (or 2)
Test case 12: [13, 4, 13, 2, 3] -> 2 (or 3)