Liar का पासा एक काफी सरल पासा खेल है। मैंने नियमों के कुछ भिन्न रूप देखे हैं, लेकिन यहाँ वह संस्करण है जिससे मैं सबसे अधिक परिचित हूँ:
- प्रत्येक खिलाड़ी 5d6 से शुरू होता है
- एक दौर के अंत में पासा निकालने के अलावा, प्रत्येक खिलाड़ी अपना पासा देख सकता है, लेकिन किसी भी प्रतिद्वंद्वी का नहीं।
- किसी भी दौर की शुरुआत में, सभी खिलाड़ियों के पास जो भी पासा होता है, उसे रोल करते हैं
- फिर, एक खिलाड़ी (आमतौर पर, यह या तो पिछले दौर का विजेता होता है या पिछली बार शुरू होने वाले खिलाड़ी के बाईं ओर का खिलाड़ी; हम इस कोट के लिए पूर्व का उपयोग करेंगे; एक यादृच्छिक खिलाड़ी के साथ पहले दौर की शुरुआत करेंगे; एक विशेष संख्या में तालिका में कितने हैं ( इसके बारे में अनुमान लगाता है )
- बोली लगाना सही जारी है, हर बार अधिक हो रहा है (उदाहरण के लिए; 3 फाइव, 3 छक्के और 4 जुड़वां, सभी 3 चौकों से अधिक हैं, लेकिन 3 थ्रेड्स नहीं हैं; 4 वाले भी अधिक हैं, लेकिन उन पर बोली लगाने से शायद आपको लग जाएगा। हानि); जब तक कोई भी खिलाड़ी खिलाड़ी को कॉल नहीं करता, तब तक वह उन्हें झूठा साबित नहीं कर सकता
- इस बिंदु पर, सभी खिलाड़ी अपना पासा प्रकट करते हैं और तालिका पर अंतिम संख्या बोली की संख्या को पूरी तरह से गिनते हैं
- यदि कुल बोली से कम है, तो बोली लगाने वाले खिलाड़ी को उस खिलाड़ी को मरना होगा, जो उन्हें झूठा कहता है, अन्यथा, बोली लगाने वाले को झूठा कहने वाले खिलाड़ी को बोली लगाने वाले को मरना होगा (इसलिए बोली लगाने वाला जीतता है यदि उनकी संख्या कम से कम उतनी है जितनी उन्होंने बोली लगाई थी, तो सटीक संख्या नहीं होनी चाहिए)
- जब आप पासे से बाहर निकलते हैं, तो आप हार जाते हैं
- आखिरी खिलाड़ी खड़े जीतता है
उदाहरण के लिए:
प्लेयर एक में 1,1,2,4,6 है प्लेयर दो में 1,2,2,3,5 हैं प्लेयर तीन में 1,3,3,4,6 हैं खिलाड़ी एक: तीन छक्के। खिलाड़ी दो: चार जुड़वां। खिलाड़ी तीन: चार तेरह। खिलाड़ी एक: पांच जुड़वां। खिलाड़ी दो: छह जुड़वां। खिलाड़ी तीन: छह तेरह। खिलाड़ी एक: छह चौके। खिलाड़ी दो: झूठ! वे अपने पासा को प्रकट करते हैं और लोगों को गिनते हैं (क्योंकि वे जंगली हैं) और चौके हैं। यह पता चला है कि वास्तव में, छह चौके हैं। तो खिलाड़ी दो खिलाड़ी एक को मरवा देता है। वे फिर से दौड़ते हैं और खिलाड़ी अगले दौर की शुरुआत करते हैं।
इस गेम को खेलने के लिए आपको एक बॉट लिखना होगा। इसे निम्नलिखित अमूर्त जावा वर्ग को लागू करना चाहिए:
public abstract class Player {
public Player() {}
public String toString() {
return this.getClass().getSimpleName();
}
public abstract String bid(int yourId, int[] diceEachPlayerHas, int[] yourDice, String[] bids);
}
- आपको बोली पद्धति लागू करनी होगी
- पहला तर्क आपके बॉट की वर्तमान स्थिति है, जो दूसरे क्रम में है, दूसरा एक सरणी है जिसमें दिखाया गया है कि प्रत्येक खिलाड़ी के पास (खुद सहित) कितने पासे हैं, तीसरा एक सरणी है जो आपके पासे में वर्तमान में दिखाए गए मान दिखा रहा है, और चौथा है वर्तमान दौर की शुरुआत के बाद से की गई सभी बोलियों की एक सरणी - लंबाई होगी 0 यदि आप गोल की पहली बोली बना रहे हैं
- आउटपुट या तो फॉर्म का एक स्ट्रिंग होना चाहिए "नंबर फेस", या स्ट्रिंग "लीयर!" पिछले बोलीदाता को झूठा कहने के लिए।
- यदि आपका आउटपुट अवैध रूप से स्वरूपित है, तो आपको समाप्त कर दिया जाएगा।
- आप toString पद्धति को ओवरराइड कर सकते हैं, लेकिन इसके लिए आवश्यक नहीं हैं। हालाँकि, आप इसे किसी भी तरह से संपादित नहीं कर सकते हैं जो नियंत्रक के आउटपुट की पठनीयता में हस्तक्षेप करता है।
- आप नियंत्रक के किसी भी अन्य सार्वजनिक तरीकों कॉल करने के लिए अनुमति दी है, लेकिन कर रहे हैं नहीं इसकी मुख्य विधि।
- आप अपने बॉट के अपने नाम के साथ पहले से चल रही निर्देशिका में केवल फाइलें पढ़ और संपादित कर सकते हैं
- आपको किसी अन्य स्रोत से इनपुट लेने की अनुमति नहीं है
- इंस्टेंस चर प्रत्येक नए गेम की शुरुआत में रीसेट किए जाते हैं, लेकिन स्थिर चर नहीं होते हैं।
स्कोरिंग
- प्रत्येक में 3-5 खिलाड़ियों के साथ 1,000 खेलों का एक सेट, जब भी एक बॉट जोड़ा जाता है, हर बार सिम्युलेटेड किया जाएगा (जैसे ही तीन या अधिक बॉट प्रस्तुत किए गए हैं), जैसा कि नियंत्रक स्रोत में दिखाया गया है (किसी भी गेम में, आप अपने प्रत्येक मोड़ के प्रारंभ में 1 प्राप्त करें, 10 बार हर बार जब आप एक मृत्यु पर कब्जा करते हैं, और 1,000 बोनस यदि आप जीतते हैं); प्रत्येक खेल में 5,000 TURNS (राउंड नहीं) की सीमा लागू करना।
- आपके बॉट को गेम के नवीनतम सेट से उसके स्कोर द्वारा प्राप्त किया जाएगा; प्लस दस बार अपने वोट स्कोर, अगर nonnegative। (उत्तरार्द्ध के स्कोर पर महत्वपूर्ण प्रभाव होने की संभावना नहीं है)
नियंत्रक स्रोत यहां पाया जा सकता है।
2015-06-19 तक स्कोर:
Badnomial: 434,924 + 6x10 = 424,984
Nobody: 282,329 + 6x10 = 282,389
StraightShooter: 265,205 + 5x10 = 265,255
MostlyHonestAbe: 158,958 + 4x10 = 158,998
The Pirate: 157,005 + 1x10 = 157,015
Statistician: 144,012 + 2x10 = 144,032
Fidelio: 49,973 + 2x10 = 49,993
Absurd Bot: 6,831
DrHouse: 2,638 + 3x10 = 2,668
diceEachPlayerHas[yourId]
= आपकी पासा गिनती, और bids[yourId]
आपकी पहली बोली है (या यदि यह आपकी पहली बारी है तो शून्य)। क्या वो सही है?