किंग ऑफ द हिल: बैंक हीस्ट


15

उदाहरण रन 4/11 जोड़ा गया

नियम क्लैरिफिकेशन 4/8: सभी सबमिशन एक विशाल फ्री-फॉर-ऑल टूर्नामेंट में होंगे, जिसमें मेरे कंप्यूटर 48 घंटों में प्रदर्शन कर सकते हैं।

जो कोई भी किसी भी समय ट्विच पर धाराएँ देख रहा है , वह डीपबोट की व्यापकता से अवगत है , और शायद अपने बैंक हेट सट्टेबाजी के खेल से भी परिचित है । यह किंग ऑफ द हिल टूर्नामेंट सीधे तौर पर उस खेल से प्रेरित है। हालांकि चिंता मत करो। मुझे लगता है कि मैंने चीजों को दिलचस्प बनाए रखने के लिए इस संस्करण में पर्याप्त अतिरिक्त किंक फेंके हैं।

एक त्वरित उदाहरण

#####GAME 13: 16 players######

Round 1:
gunHeCK bet 0.
PassivePanga bet 69.
SnitcherKing bet 1.
Lurker bet 0.
OC'sRandomTpyos bet 1.
MonisAddiction bet 69.
RaysFive01K bet 28.
LimeadeSneaktar bet 1.
KaylorrCriterion bet 0.
HardHatUmar bet 0.
HeCKuSumer bet 185.

Round 2
HeCKuSumer decided to !guncheck.
LimeadeSneaktar decided to double cross.
MonisAddiction decided to all in.
OC'sRandomTpyos decided to acquire intel.
RaysFive01K decided to deposit.
SnitcherKing decided to finger.
PassivePanga decided to !guncheck.

Results
PassivePanga failed. :(
SnitcherKing failed. :(
OC'sRandomTpyos was successful, and may gain ¥0
MonisAddiction failed. :(
RaysFive01K was successful, and may gain ¥0
LimeadeSneaktar was successful, and may gain ¥1
HeCKuSumer failed. :(

Results:
0. KaylorrCriterion: 3600
1. Lurker: 3600
2. gunHeCK: 3600
3. SnitcherKing: 3586
4. PassivePanga: 2634
5. LimeadeSneaktar: 2496
6. HeCKuSumer: 1909
7. HardHatUmar: 490
8. RaysFive01K: 255
9. OC'sRandomTpyos: 170
10. MonisAddiction: 0

(In this round, 7 players joined the heist, but the dice only rolled right for 3 of them. Of those, only LimeadeSneaktar brought any home--having stolen it from OcsRandomTpyos. RaysFive01K won significantly more, but deposited it all at the bank before leaving. At this point, the players who did not heist are doing well, living off their day jobs.)

#####GAME 14: 231 players######

Round 1:
Lurker bet 0.
HeCKuSumer bet 190.
KaylorrCriterion bet 0.
HardHatUmar bet 0.
MonisAddiction bet 0.
OC'sRandomTpyos bet 1.
gunHeCK bet 0.
LimeadeSneaktar bet 1.
RaysFive01K bet 25.
PassivePanga bet 69.
SnitcherKing bet 1.

Round 2
PassivePanga decided to !guncheck.
OC'sRandomTpyos decided to buy guard.
HeCKuSumer decided to !guncheck.
SnitcherKing decided to finger.
RaysFive01K decided to deposit.
LimeadeSneaktar decided to double cross.

Results
HeCKuSumer failed. :(
OC'sRandomTpyos failed. :(
LimeadeSneaktar failed. :(
RaysFive01K failed. :(
PassivePanga failed. :(
SnitcherKing failed. :(

Results:
0. KaylorrCriterion: 3840
1. Lurker: 3840
2. gunHeCK: 3840
3. SnitcherKing: 3825
4. PassivePanga: 2805
5. LimeadeSneaktar: 2495
6. HeCKuSumer: 1959
7. HardHatUmar: 490
8. MonisAddiction: 240
9. RaysFive01K: 229
10. OC'sRandomTpyos: 161

Six players heisted--but should have been paying more attention to the rabble and backed out, because the probabilities dropped too low to win, and all failed.


#####GAME 15: 300 players######

Round 1:
OC'sRandomTpyos bet 1.
Lurker bet 0.
SnitcherKing bet 1.
MonisAddiction bet 69.
LimeadeSneaktar bet 1.
gunHeCK bet 0.
HardHatUmar bet 0.
RaysFive01K bet 22.
KaylorrCriterion bet 0.
HeCKuSumer bet 195.
PassivePanga bet 69.

Round 2
HeCKuSumer decided to !guncheck.
OC'sRandomTpyos decided to buy guard.
MonisAddiction decided to all in.
PassivePanga decided to !guncheck.
LimeadeSneaktar decided to double cross.
RaysFive01K decided to deposit.
SnitcherKing decided to finger.

Results
OC'sRandomTpyos failed. :(
SnitcherKing failed. :(
MonisAddiction was successful, and may gain ¥0
LimeadeSneaktar failed. :(
RaysFive01K failed. :(
HeCKuSumer failed. :(
PassivePanga failed. :(

And here, the probabilities dropped too low to win again--except for MonisAddiction, who went all in, and therefore avoided the probability modification incurred by the rabble backing out. No winnings are listed here, because a player who wins going all in immediately adds all winnings to its holdings without any possible modification by other players' actions.

खेल के नियमों

टूर्नामेंट / खेल संरचना

  • टूर्नामेंट 1000 और 1100 के बीच यादृच्छिक रूप से समान रूप से चुने गए कई खेलों से मिलकर बनेगा, जिसमें हर गंभीर सबमिशन एक साथ सभी के लिए एक साथ प्रतिस्पर्धा होगी।
  • प्रत्येक खिलाड़ी पहले गेम की शुरुआत 240 क्रेडिट्स से करता है और प्रत्येक बाद के गेम में पिछले गेम के अंत में क्रेडिट्स की संख्या के साथ।
  • प्रत्येक खेल 2 राउंड में आगे बढ़ता है, और प्रत्येक राउंड में, खिलाड़ियों को एक निर्णय लेने के लिए यादृच्छिक रूप से समान रूप से निर्धारित क्रम में बुलाया जाता है:
    • पहले दौर में, कोई खिलाड़ी किसी भी पूर्णांक की संख्या का भुगतान 0 से बैंक क्रेडिट में हिस्सेदारी में हिस्सेदारी के लिए करंट क्रेडिट के रूप में कर सकता है।
    • दूसरे दौर में, प्रत्येक खिलाड़ी जो कम से कम एक क्रेडिट ("उसके बाद" उत्तराधिकारी "के रूप में संदर्भित) को छेड़छाड़ करके वारिस में भाग लेने के लिए चुना जाता है, वह अपनी शर्त की सवारी करने का फैसला कर सकता है (और ऐसा करते समय, संभवतः कुछ अन्य कार्रवाई कर सकता है) वारिस से बाहर निकलें, या सभी में जाएं। (इन विकल्पों को नीचे वर्णित किया गया है।)
  • उत्तराधिकारियों की संख्या और उनके द्वारा भुगतान किए गए क्रेडिट की कुल संख्या के आधार पर, पांच बैंकों में से एक का चयन किया जाता है, जिस पर एक वारिस को मंच दिया जाता है। यह चयन जीत की व्यक्तिगत संभावना और उन बाधाओं को प्रभावित करता है जिनके द्वारा भुगतान निर्धारित किया जाता है। (बैंकों का वर्णन नीचे दिया गया है।)
  • बैंक की संशोधित (संशोधित) संभावना के साथ, प्रत्येक हैस्टर ने ऑप्ट आउट नहीं किया, बैंक की (संशोधित) सट्टेबाजी की बाधाओं (गोल नीचे) द्वारा गुणा की गई अपनी हिस्सेदारी को जीतें, या फिर अपनी हिस्सेदारी खो दें। ध्यान दें कि प्रत्येक खिलाड़ी की सफलता या असफलता व्यक्तिगत रूप से निर्धारित की जाती है - कुछ अन्य जहां असफल हो जाएंगे वही सफल होंगे।
  • सभी खिलाड़ियों ने भाग लिया या नहीं, सफल या असफल, फिर एक पेचेक प्राप्त करें (नीचे वर्णित अपवादों के साथ)।
  • ध्यान दें कि खेल को स्थायी रूप से छोड़ना असंभव है। सबसे खराब स्थिति में, एक खिलाड़ी को अपनी अगली तनख्वाह प्राप्त करने के लिए किसी खेल का इंतजार करना पड़ सकता है।
  • सभी 1000-1100 खेलों के बाद, सबसे बड़ी संख्या में क्रेडिट वाले खिलाड़ी को उस टूर्नामेंट का विजेता घोषित किया जाएगा।
  • टूर्नामेंट को कई बार (48 घंटों में गणना की जा सकती है) एक अनिर्दिष्ट संख्या में दोहराया जाएगा और इस प्रतियोगिता के समग्र विजेता को निर्धारित करने के लिए सभी टूर्नामेंटों में खिलाड़ी की कमाई।

दूसरा सट्टेबाजी का दौर

  • कोई भी खिलाड़ी जिसने पहले राउंड में सकारात्मक हिस्सेदारी हासिल की है, दूसरे दौर में भाग ले सकता है।
  • इस दौर में, एक खिलाड़ी हो सकता है:
    • अपनी शर्त को रद्द करने के लिए स्ट्रिंग "बैक आउट" के साथ उत्तर दें। यह वर्तमान वारिस के लिए अपना दांव शून्य पर सेट कर देगा और यह भी संभावना कम कर देगा कि उत्तराधिकारी में शेष खिलाड़ी सफल होंगे। इस विकल्प को लेने से, एक खिलाड़ी 240 क्रेडिट पेचेक को माफ कर देता है जो कि शेष बचे हुए बहनों को जोखिम में डालने के लिए सजा के रूप में निम्नानुसार है। (शेष बहनें बैंक की संभाव्यता के बराबर एक संभावना के साथ सफल होंगी, उन अंशों के अंश जो "वापस" नहीं थे।)
    • अपनी पूरी क्रेडिट होल्डिंग्स को उड़ाने के लिए स्ट्रिंग "सभी" के साथ उत्तर दें और अपने अगले 240 क्रेडिट पेचेक पर एक payday ऋण लें - एक हीस्ट के लिए सभी सर्वश्रेष्ठ गियर और इंटेल खरीदने के लिए और अकेले, बंदूकें धधकते हुए, बिना अंदर जाएं किसी पर निर्भर होना। इस तरह के खिलाड़ी की जीत की संभावना अन्य उत्तराधिकारियों द्वारा उत्तराधिकारी को छोड़ने से प्रभावित नहीं हो सकती है, न ही इसकी जीत को डबल-क्रॉसर्स द्वारा चुराया जा सकता है। जीत का भुगतान इस तरह निर्धारित किया जाएगा जैसे कि इसका दांव इसकी पूरी क्रेडिट होल्डिंग्स प्लस 240 है, जबकि नुकसान इसकी होल्डिंग्स को शून्य पर सेट करेगा।
    • किसी भी अन्य स्ट्रिंग के साथ उत्तर दें (खाली स्ट्रिंग सहित) पिछले शर्त के साथ रहने के लिए और सामान्य के रूप में उत्तराधिकारी के साथ जाने के लिए। (अनुशंसित उत्तर: "गनचेक")। कुछ उत्तरों के अतिरिक्त दुष्प्रभाव होंगे:
      • "परिवर्तन नौकरियों" के उत्तर से खिलाड़ी को अपनी नौकरी छोड़नी पड़ेगी। इस दौर की शुरुआत, प्रत्येक दौर के अंत में, खिलाड़ी के पास एक नई स्थिति में काम पर रखने के लिए 5% मौका होगा। यदि यह सफल होता है, तो खिलाड़ी को काम पर रखा जाता है और तुरंत अपनी पहली तनख्वाह प्राप्त करता है। प्रत्येक नई नौकरी को अंतिम (गोल नीचे) की तुलना में ठीक 5% अधिक भुगतान करने की गारंटी है। यह कार्रवाई सफल होगी या नहीं, उत्तराधिकारी सफल होता है या नहीं।
      • "अधिग्रहण इंटेल" का एक उत्तर होगा, यदि उत्तराधिकारी सफल होता है, तो खिलाड़ी को अपनी सारी जीत उस उत्तराधिकारी को खर्च करने का कारण बनती है, जिससे उस ऋण के लिए अतिरिक्त 0.00001 प्रति क्रेडिट प्राप्त होता है , जो केवल उस खिलाड़ी के लिए निहित बैंक के लिए बाधाओं पर खर्च होता है । यह अंतर संशोधन स्थायी है। एक उदाहरण के रूप में, यदि कोई खिलाड़ी हेवेन बैंक में इस क्रिया को चुनता है और एक हेइस्ट में 6969 क्रेडिट जीतता है, तो उस खिलाड़ी के लिए बैंक 1 की बाधाओं को स्थायी रूप से 0.06969 बढ़ा दिया जाएगा और खिलाड़ी को उस उत्तराधिकारी से कुछ भी प्राप्त नहीं होगा।
      • "गार्ड खरीदें" के उत्तर के कारण खिलाड़ी को बैंक में सुरक्षा गार्डों में से एक को खरीदने का कारण होगा। उस खिलाड़ी की तनख्वाह (गार्ड की नियमित रिश्वत) पर 1 क्रेडिट की स्थायी कमी के बदले में, खिलाड़ी को उस बैंक में "स्थायी" बढ़ी हुई जीत संभावना प्राप्त होगी (गार्ड के कारण "उस खिलाड़ी को" उल्लेख करना भूल जाता है) जब उस खिलाड़ी को पुलिस पूछा)। उस बैंक में खिलाड़ी की मौजूदा जीत की संभावना और 100% के बीच अंतर के लगभग 1% की संभावना बढ़ जाएगी। यह कार्रवाई तब भी सफल होगी जब वारिस विफल हो जाएगा। नोट: यदि किसी भी समय, किसी खिलाड़ी के पास अपने सभी गार्ड घूसों का भुगतान करने के लिए पर्याप्त क्रेडिट नहीं है, तो यह तुरंत और स्थायी रूप से कई संभावना बोनस के रूप में खो देता है, जो रिश्वत की संख्या का भुगतान नहीं किया जा सकता है,
      • "जमा" का उत्तर, यदि उत्तराधिकारी सफल हो जाता है, तो एक खिलाड़ी की पूरी जीत बैंक के खाते में छोड़ दी जाएगी। क्रेडिट किसी भी उद्देश्य के लिए सुलभ नहीं होगा और न ही वापस लेने तक किसी खिलाड़ी के स्कोर की ओर गिना जाएगा। यह खाता प्रति गेम 0.14% की दर से ब्याज का भुगतान करेगा।
      • "वापस लेने" की एक इच्छा, यदि उत्तराधिकारी सफल होता है, तो एक खिलाड़ी की जीत में बैंक में उसके खाते की संपूर्ण सामग्री शामिल हो जाती है। परिणामस्वरूप खाता शून्य हो जाएगा। ध्यान दें कि ये अतिरिक्त जीतें डबल-क्रॉसर्स द्वारा चुराई जा सकती हैं।
      • "डबल क्रॉस" का उत्तर दो चीजों में से एक करेगा:
        • यदि "डबल क्रॉस" खेलने वाले उत्तराधिकारियों की संख्या गैर रब्बल वारिसों की कुल संख्या का अधिकतम 1/10 वाँ (राउंड डाउन) है, जिन्होंने उत्तराधिकारी के साथ जाने का निर्णय लिया है (या यदि ऐसा है तो 10 से कम खिलाड़ी हैं ), खिलाड़ी को डबल-क्रॉसर्स (राउंड डाउन) की संख्या से विभाजित सभी गैर-डबल-क्रॉसरों की कुल जीत के बराबर अतिरिक्त जीत प्राप्त होगी। इस मामले में सभी गैर-डबल-क्रॉसर्स को हेस्ट से 0 क्रेडिट प्राप्त होता है। दूसरे शब्दों में, डबल-क्रॉसर्स हर किसी के क्रेडिट को चुरा लेते हैं और इसे आपस में समान रूप से विभाजित करते हैं।
        • यदि "डबल क्रॉस" खेलने वाले उत्तराधिकारियों की संख्या सीमा से अधिक है, तो खिलाड़ी को कोई जीत नहीं मिलेगी (यदि उसका उत्तराधिकारी सफल रहा), तो उसकी तनख्वाह आधी में काट ली जाए, और उसे नौकरी से निकाल दिया जाए। ("परिवर्तन नौकरियां देखें"।) इस मामले में सभी गैर-डबल-क्रॉसर्स (रब्बल सहित) सभी डबल-क्रॉसरों की कुल जीत का बोनस भुगतान प्राप्त करेंगे, जो गैर-डबल-क्रॉसर्स की कुल संख्या से विभाजित है। दूसरे शब्दों में, एक गुप्त रखने के लिए साजिश बहुत बड़ी हो गई, षड्यंत्रकारियों को जड़ से निकाल दिया गया और वारिस से बाहर रखा गया, और सभी ने सजा के लिए अपने दांव को विभाजित किया - और गंदे व्यवहार के लिए उनकी प्रतिष्ठा ने उन्हें अपनी नौकरी भी खो दी।
      • "उंगली" का एक उत्तर (जैसा कि "एक डबल-क्रॉसिंग बदमाश चूहे को छोडना"), यदि उत्तराधिकारी सफल होता है, तो खिलाड़ी को दो अवसरों की पहचान करने के लिए आठ अवसर दें (गैर रब्बल हेयर्स के सेट से प्रतिस्थापन के साथ समान रूप से ड्राइंग) क्रॉसर जो पहले से पहचाना नहीं गया है
        • प्रत्येक डबल-क्रॉसर ने इस तरह से पहचाना कि अंगुली को तुरंत अपने वर्तमान क्रेडिट होल्डिंग्स (गोल नीचे का 25%) के बदले में गोली मार दी जाएगी, अपनी नौकरी खो देंगे और अपने पेचेक को आधे में काट लेंगे (क्योंकि बॉस बुरा व्यवहार बर्दाश्त नहीं करेगा) , और बैंक में जीत की अपनी संभावना का 5% खो दिया जा रहा है (क्योंकि अन्य उत्तराधिकारी भविष्य में अतिरिक्त संदिग्ध हैं और यदि बाल झड़ते हैं तो इसे बस के नीचे फेंकने की संभावना है)। डबल-क्रॉसर्स ने इस तरह पहचाना कि क्या डबल-क्रॉस अन्य डबल-क्रॉसर्स के लिए सफल था या नहीं, लेकिन वे डबल-क्रॉस से चोरी किए गए क्रेडिट को प्राप्त नहीं करते हैं, और कहा कि चोरी किए गए क्रेडिट को गैर में वापस भेज दिया जाएगा, यह प्रभावित नहीं करता है डबल crossers।
        • अगर इस तरह से किसी डबल-क्रॉसर्स की पहचान नहीं की जाती है, तो हर किसी के समय को बर्बाद करने के लिए टांके में टांके लगेंगे - और वर्तमान विजेता से इसकी आधी जीत का भुगतान भी करेंगे, इसके पेचेक पर 5% कटौती करेंगे (बॉस टैटलटैले के घंटों में कटौती करता है), और हार जाता है मौजूदा बैंक में 5% सट्टेबाजी की संभावनाएं हैं (अन्य उत्तराधिकारियों के भविष्य में अपनी जीत के साथ उदार / निष्पक्ष होने की संभावना कम है)। यदि डबल-क्रॉसर्स सफल हो गए, या डबल-क्रॉसर्स (रबल सहित) नॉन-डबल-क्रॉसर्स फेल हो गए तो इसकी जीत का आधा हिस्सा अनफेयर डबल-क्रॉसर्स में वितरित किया जाएगा।

बैंक

बैंक को इंडेक्स का उपयोग करके चुना जाता है numheisters + int(totalamountbet/100000), जहां संख्या 1 खिलाड़ियों की संख्या होती है, जिसने राउंड 1 में सकारात्मक हिस्सेदारी हासिल की है और कुलमाउंटबेट उन सभी खिलाड़ियों के दांव का योग है। दूसरे शब्दों में, एक सौ हजार क्रेडिट 1 अतिरिक्त बहन के रूप में अच्छा है। इस सूचकांक के आधार पर निम्नलिखित बैंकों में से एक को चुना जाएगा, जिस बैंक की सबसे अधिक सीमा होती है, वह सूचकांक मिलता है या उससे अधिक होता है:

Bank             Index Threshold   Victory Prob.  Bet Odds
----             ---------------   -------------  --------
0:Municipal                    0           0.540      0.80
1:City                        20           0.488      1.10
2:State                       40           0.425      1.30
3:National                    60           0.387      1.65
4:Federal Reserve             80           0.324      1.95

ध्यान दें कि एक टूर्नामेंट के रूप में जारी रहता है, उच्चतम बैंक स्तर तक पहुंचने की संभावना बढ़ जाएगी, क्योंकि प्रत्येक खिलाड़ी राशि को ऊपर की ओर दांव लगा सकता है। ध्यान दें कि ये केवल प्रारंभिक बाधाएं और संभावनाएं हैं, इससे पहले कि वे किसी भी "अधिग्रहण इंटेल" द्वारा संशोधित किए गए हैं या "गार्ड खरीदें" कार्रवाई करते हैं। प्रारंभिक संभावनाओं और बाधाओं के साथ, केवल सिटी और नेशनल बैंकों ने अपेक्षित नुकसान से अधिक जीत की उम्मीद की है।

रब्बल

  • इस टूर्नामेंट में 500 अन्य खिलाड़ी भी शामिल हैं, जिन्हें "रब्बल" कहा जाता है, जो नियमित खिलाड़ियों के रूप में भाग लेते हैं, लेकिन अंत में रन नहीं बनाते हैं। ये प्रत्येक खेल को अलग और कुछ हद तक कम पूर्वानुमान योग्य बनाने के लिए सेवा प्रदान करते हैं, और केवल कुछ "वास्तविक" खिलाड़ियों के साथ जोखिम वाले / अधिक पुरस्कृत बैंकों तक पहुंचना संभव बनाते हैं।
  • प्रत्येक गेम में रब्बल के कुछ सबसेट को सम्मिलित किया जाएगा, ताकि रब्ब के सभी उपसमूह पर यादृच्छिक रूप से समान रूप से चुना जा सके।
  • सभी रब्बल निम्नलिखित रणनीति का उपयोग करते हैं:
    • बेतरतीब ढंग से बैंक में सफल होने की संभावना के बराबर संभावना के साथ शर्त लगाने का चयन करें जो उन खिलाड़ियों के फैसले के आधार पर चुना जाएगा जो पहले ही इस दौर में अपना फैसला कर चुके हैं
    • यदि कोई नॉनज़रो राशि पर दांव लगाता है, तो निम्नलिखित में से सबसे बड़ी मात्रा चुनें जो इसकी वर्तमान होल्डिंग्स से अधिक न हो: 69, 420, 6969, 80085।
    • दूसरे दौर में, सट्टेबाजों के अनुपात के 5% से अधिक 50% के बराबर "बैक आउट" की संभावना है जो पहले से ही वापस आ चुके हैं, अन्यथा सामान्य रूप से वारिस। (ध्यान दें कि इसका मतलब दूसरे दौर के शुरुआती खिलाड़ी हैं जो वापस बाहर आ गए हैं, जो खरगोश के बीच बहुत बड़ा प्रभाव डाल सकते हैं - ध्यान दें और इसके शुरू होने से पहले ही गिरने के लिए तैयार रहें।)

इनपुट और आउटपुट

दोनों राउंड में, प्रोग्राम को निम्नलिखित जानकारी दी जाएगी, वास्तव में इस क्रम में, कमांड लाइन तर्क के रूप में । जब तक अन्यथा नहीं कहा जाता है, सभी मान पूर्णांक होते हैं जिनमें कोई दशमलव नहीं होता है।

  1. वर्तमान गेम नंबर (शून्य-अनुक्रमित)
  2. वर्तमान खेल की गोल संख्या (1 या 2)
  3. वर्तमान खेल में खिलाड़ियों की संख्या (खरगोश सहित)।
  4. उन खिलाड़ियों की संख्या जिन्होंने पहले ही इस दौर में कदम रख लिया है।
  5. जितने भी उत्तराधिकारियों ने अब तक सकारात्मक हिस्सेदारी की है। (दूसरे दौर में, यह वास्तव में कुल रईसों की संख्या होगी, जिन्होंने पहले दौर में खरीदी थी।)
  6. अब तक निवेश किए गए क्रेडिट की कुल संख्या। (दूसरे दौर में, यह वास्तव में पहले दौर में निवेश किए गए क्रेडिट की कुल संख्या होगी - विशेष रूप से, इसमें "सभी" के शुरुआती दांव से अधिक शामिल नहीं हैं और इसमें "बैक आउट" के दांव शामिल हैं) heisters।)
  7. दूसरे दौर में पुष्टि करने वाले उत्तराधिकारियों की संख्या (अर्थात "बैक आउट" नहीं थी)। यह पहले दौर के दौरान शून्य होगा।
  8. बैंक (शून्य-अनुक्रमित) की संख्या को बैंक में जमा किया जाएगा (पहले दौर के दौरान, यदि कोई अन्य शर्त नहीं लगाता है तो बैंक को हेवी किया जाएगा)
  9. वर्तमान में खिलाड़ी को उपलब्ध क्रेडिट की संख्या।
  10. पहले राउंड में खिलाड़ी को जितने क्रेडिट मिलते हैं। (यह पहले दौर में हमेशा शून्य है।)
  11. प्रत्येक गेम के अंत में खिलाड़ी को अपनी तनख्वाह में क्रेडिट की संख्या प्राप्त होगी।
  12. 1 यदि खिलाड़ी वर्तमान में तनख्वाह प्राप्त कर रहा है, तो यदि खिलाड़ी बेरोजगार है
  13. लीडरबोर्ड पर खिलाड़ी की रैंक (पिछले वर्ष के खेल के अंत तक रब्बल सहित) नहीं, 1-अनुक्रमित। (उस समय सख्ती से अधिक क्रेडिट वाले खिलाड़ियों की संख्या 1 + के रूप में परिभाषित की गई। पहले गेम के दौरान सभी खिलाड़ियों के पास रैंक है)
  14. सभी खिलाड़ियों द्वारा आयोजित क्रेडिट की औसत संख्या (रब्बल सहित) (दशमलव संख्या के रूप में दर्शायी गई)
  15. सभी खिलाड़ियों द्वारा आयोजित क्रेडिट की संख्या में औसत विचलन (रब्बल सहित नहीं) (दशमलव संख्या के रूप में दर्शाया गया है)
  16. किसी भी खिलाड़ी द्वारा आयोजित क्रेडिट की अधिकतम संख्या (यानी रैंक 1 खिलाड़ी द्वारा रखे गए क्रेडिट की संख्या, जिसमें रब्बल शामिल नहीं है)
  17. खिलाड़ी ने कितने क्रेडिट बैंक 0 खाते में संग्रहीत किए हैं
  18. बैंक 1 खाता
  19. बैंक 2 खाता
  20. बैंक 3 खाता
  21. बैंक 4 खाता
  22. खिलाड़ी की व्यक्तिगत संभावना बैंक 0 पर जीत
  23. बैंक 1 संभावना
  24. बैंक 2 संभावना
  25. बैंक 3 संभावना
  26. बैंक 4 संभावना
  27. खिलाड़ी के व्यक्तिगत पेआउट बैंक 0 पर एक सफल उत्तराधिकारी पर निर्भर करता है
  28. बैंक 1 बाधाओं
  29. बैंक 2 बाधाओं
  30. बैंक 3 बाधाओं
  31. बैंक 4 बाधाओं

खेल के पहले दौर में, एक खिलाड़ी कार्यक्रम को उस खिलाड़ी के खाते में 0 और कुल क्रेडिट के बीच पूर्णांक को प्रिंट करने के लिए प्रिंट करना होगा। उपलब्ध क्रेडिट बैलेंस से अधिक किसी भी शर्त राशि को अधिकतम दांव के लिए लिया जाता है। किसी भी अन्य आउटपुट (या त्रुटि स्थिति) को एक शून्य शर्त के रूप में व्याख्या किया जाएगा।

खेल के दूसरे दौर में, एक खिलाड़ी प्रोग्राम को एक स्ट्रिंग को प्रिंट करने के लिए प्रिंट करना चाहिए जैसा कि ऊपर दिए गए "द सेकेंड बेटिंग राउंड" अनुभाग में वर्णित है। यहां एक त्रुटि स्थिति को डिफ़ॉल्ट कार्रवाई के रूप में लिया जाता है: सामान्य रूप से वारिस के साथ गुजरें।

नियंत्रक

इस कंट्रोलर का उपयोग करके टूर्नामेंट चलाया जाएगा । बॉट इसके उदाहरण भी हैं। अभी भी परीक्षण किया जा रहा है। अधिक कोड आने के लिए। बग फिक्स (जीथब पर) जमा करने के लिए स्वतंत्र महसूस करें। अपडेट किया जाएगा यदि कोई नियम भी बदलता है।

अपनी मशीन पर एक ही टूर्नामेंट चलाने के लिए, प्रतियोगियों को एक लाइन जोड़ें।

python bankheist.py 1000

प्रतियोगिता नियम

  • खिलाड़ी किसी भी स्वतंत्र रूप से उपलब्ध भाषा में किसी भी संख्या में खिलाड़ी कार्यक्रम प्रस्तुत कर सकते हैं जिनमें से प्रोग्राम कमांड लाइन तर्क प्राप्त कर सकते हैं।
  • प्रस्तुतियाँ में कार्यक्रमों को संकलित करने और उन्हें अपने पीसी पर चलाने के लिए काफी स्पष्ट निर्देश शामिल होने चाहिए, जिसमें आवश्यक उपकरण और जारी किए जाने वाले सटीक आदेशों के नाम शामिल हैं। सबमिशन में कम से कम एक कमांड शामिल होना चाहिए जो प्रोग्राम को निष्पादित करता है और इसमें कमांड लाइन आर्ग्युमेंट्स को सीधे जोड़ा जा सकता है।
  • सबमिशन के पास उन्हें पहचानने के लिए एक अनूठा नाम भी होना चाहिए (जिसमें कोई स्थान नहीं है)।
  • कार्यक्रम काफी कम समय में चलना चाहिए। (मैं जो उचित बनता है उस पर एक ऊपरी बाध्यता स्थापित नहीं कर रहा हूं। बल्कि, मैं निर्माता को किसी भी प्रविष्टि की सलाह दूंगा जो इसे गति देने के लिए एक निष्पादन समय निर्धारित करता है।)
  • प्रोग्राम फ़ाइलों को पढ़ या लिख नहीं सकते हैं। न ही वे रनों के बीच सूचना संग्रह करने की किसी अन्य विधि का उपयोग कर सकते हैं। इस चुनौती का उद्देश्य सीमित / संक्षेप जानकारी के आधार पर जटिल निर्णय लेना है।
  • यदि आवश्यक हो तो इनमें से कोई भी और सभी नियम किसी भी समय परिवर्तन के अधीन हैं। इस पोस्ट के शीर्ष पर एक संदेश जोड़ा जाएगा जो ऐसे किसी भी बदलाव का संकेत देगा।
  • अंतिम उपयोगकर्ता द्वारा अपना पहला सबमिशन सबमिट करने के बाद यह प्रतियोगिता एक सप्ताह से पहले समाप्त नहीं होती है । प्रतियोगिता समाप्त होने तक किसी भी समय मौजूदा सबमिशन के संशोधन की अनुमति है। मैं इस पोस्ट के शीर्ष पर एक संदेश में वर्तमान समय सीमा को अद्यतन रखने के लिए अपनी पूरी कोशिश करूँगा ।
  • पिछली बार नियमों को बदलने के बाद, यदि कोई हो, तो यह प्रतियोगिता एक सप्ताह से पहले समाप्त नहीं होती है। मैं किसी भी नियम परिवर्तन से प्रभावित उपयोगकर्ताओं के लिए टिप्पणी छोड़ने की पूरी कोशिश करूंगा।
  • आप बेहतर शर्त लगा सकते हैं कि मैं खुद इस प्रतियोगिता में भाग लूंगा। ;)

टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
डेनिस

हो सकता है क्योंकि मैं चिकोटी या वारिस खेल से परिचित नहीं हूँ, लेकिन ऐसे बहुत से नियम हैं जो एक छोटे से काम के उदाहरण (उदाहरण) के साथ प्रदर्शित किए जा सकते हैं। फिलहाल यह बहुत अधिक स्वीकार्य नहीं है।
मोगी

पहाड़ी के राजा? मैंने वर्षों में उस नाम को नहीं सुना है।
बीटा क्षय

जवाबों:


6

कार्यक्रमों के कुछ "बुरे" उदाहरण।

ये कुछ बॉट हैं जिन्हें मैंने कंट्रोलर को टेस्ट करने के लिए लिखा है। अधिकतर, वे केवल एक विशिष्ट प्रकार की कार्रवाई का परीक्षण करने के लिए न्यूनतम आवश्यक कार्य करते हैं। इस कोट में भागीदारी के स्तर के आधार पर, इन सभी में से कुछ से लेकर अंतिम टूर्नामेंट में शामिल किया जाएगा, क्योंकि खेल में बहुत सारी रणनीति विभिन्न बॉट के व्यवहार से निपटने से आएगी।

मैं उन सभी को ज्यादातर "उपयोग" उदाहरण के रूप में शामिल करता हूं।

lurker

कभी शर्त न लगाएं। यदि आप इसे नहीं मार रहे हैं, तो अपनी रणनीति पर पुनर्विचार करें।

print 0

PassivePanga

हमेशा शर्त लगा लो 69।

import sys


round = int(sys.argv[2])
myyattas = int(sys.argv[9])
if round == 1:
    if myyattas > 69:
        print "69"
    else:
        print "0"
else:
    print "!guncheck"

KaylorrCriterion

यदि और केवल केली मानदंड मिले हों तो केली दांव लगाएं। जैसा कि यह शायद ही कभी कुछ "अधिग्रहण इंटेल" और "गार्ड खरीदें" के साथ होता है, यह आम तौर पर लुरकर के समान परिणाम होता है।

import sys
import ast
game,round,numplayers,alreadyplayed,numbet,yattasbet,numready,bankid,myyattas,mybet,mypayment,hired,myrank,mu_yattas,sigma_yattas,max_yattas = map(ast.literal_eval,sys.argv[1:17])
bankholdings = map(int,sys.argv[17:22])
bankprobs = map(float,sys.argv[22:27])
bankodds = map(float,sys.argv[27:32])

def get_bank(bettors,credits):
    selector = min(4,int(bettors+int(credits/100000.)/20))
    return bankprobs[selector],bankodds[selector]



if round == 1:
    if alreadyplayed < 0.37*numplayers or numbet==0:
        print 0
        #sys.stderr.write("1: %d,%d\n"%(alreadyplayed,numbet))
    else:
        ratiosofar = numbet/float(alreadyplayed)
        bettors = ratiosofar * numplayers
        ratesofar = yattasbet/float(numbet)
        credits = bettors*ratesofar
        p,b = get_bank(bettors,credits)
        f = (p*(b+1)-1)/b
        print max(int(f*myyattas),0)
        #sys.stderr.write("2: %d,%d\n"%(p,b))
else:
    if alreadyplayed < 0.37*numbet or numbet==0:
        print "!guncheck"
    else:
        p,b = get_bank(numbet,yattasbet)
        realp = p*numready/float(alreadyplayed)
        f = (realp*(b+1)-(1-240./(myyattas+240.)))/b
        print "!guncheck" if f>0 else "back out"

gunHeCK

केली शर्त बनाओ अगर और अब तक देखी जाने वाली हीरों की संख्या से संकेत मिलता है कि शर्त केली मानदंड को पूरा करेगी (लेकिन गलत होने पर वापस न करें)। आमतौर पर लूकर से भी बदतर है

import sys
import ast
game,round,numplayers,alreadyplayed,numbet,yattasbet,numready,bankid,myyattas,mybet,mypayment,hired,myrank,mu_yattas,sigma_yattas,max_yattas = map(ast.literal_eval,sys.argv[1:17])
bankholdings = map(int,sys.argv[17:22])
bankprobs = map(float,sys.argv[22:27])
bankodds = map(float,sys.argv[27:32])

def get_bank(bettors,credits):
    selector = min(4,int(bettors+int(credits/100000.)/20))
    return bankprobs[selector],bankodds[selector]

if round == 1:
    if alreadyplayed < 0.37*numplayers or numbet==0:
        print 0
        #sys.stderr.write("1: %d,%d\n"%(alreadyplayed,numbet))
    else:
        ratiosofar = numbet/float(alreadyplayed)
        bettors = ratiosofar * numplayers
        ratesofar = yattasbet/float(numbet)
        credits = bettors*ratesofar
        p,b = get_bank(bettors,credits)
        f = (p*(b+1)-1)/b
        print max(int(f*myyattas),0)
        #sys.stderr.write("2: %d,%d\n"%(p,b))
else:
    print "!gunHeCK"

Moni'sAddiction

"सभी" में जाओ जब तक कि पहले से ही जीत न हो।

import sys
import random


round = int(sys.argv[2])
myrank = int(sys.argv[13])
mybet = int(sys.argv[10])

if round == 1:
    if random.random()<0.1:
        print 1
    else:
        print 69
else:
    if myrank>1:
        print "all in"
    else:
        if mybet==1:
            print "back out"
        else:
            print "!guncheck"

HeCKuSumer

हमेशा होल्डिंग्स के एक छोटे से स्थिर अंश पर दांव लगाएं।

import sys

round = int(sys.argv[2])
myyattas = int(sys.argv[9])

if round==1:
    print int(0.1*myyattas)
else:
    print "!guncheck"

OC'sRandomTpyos

शुरुआती टूर्नामेंट में नौकरियों को बहुत बदलें। वह सब पैसा खर्च करें जिसमें सुधार और संभावनाएं हैं। फिर सभी में जा रहे पिछले कुछ खेलों को बिताएं। यह शायद सभी में जाने के बिना बहुत बेहतर होगा जब तक कि पहले से ही एक शीर्ष स्थान पर न हो।

import sys
import ast
import random

game,round,numplayers,alreadyplayed,numbet,yattasbet,numready,bankid,myyattas,mybet,mypayment,hired,myrank,mu_yattas,sigma_yattas,max_yattas = map(ast.literal_eval,sys.argv[1:17])
bankholdings = map(int,sys.argv[17:22])
bankprobs = map(float,sys.argv[22:27])
bankodds = map(float,sys.argv[27:32])

if round == 1:
    if game<800 or myrank>3:
        print 1
    else:
        print myyattas/4
else:
    if game<800:
        if hired:
            print "change jobs"
        else:
            print random.choice(["acquire intel","buy guard"])
    else:
        if myrank>3:
            print "all in"
        else:
            print "!guncheck"

HardHatUmar

अधिकांश टूर्नामेंट के लिए जब भी संभव हो नौकरियों में बदलाव करें। न्यूनतम आवश्यक से अधिक सट्टेबाजी से बचा जाता है। शालीनता से अच्छा है, लेकिन महान नहीं है।

import sys

game = int(sys.argv[1])
round = int(sys.argv[2])
hired = int(sys.argv[12])

if round==1:
    if game < 900 and hired:
        print 1
    else:
        print 0
else:
    print "change jobs"

LimeadeSneaktar

टूर्नामेंट के पहले भाग के दौरान जब भी संभव हो नौकरी बदलें। हर दूसरे गेम को डबल क्रॉसिंग पर बिताएं। SnitcherKing के खिलाफ भी अच्छी तरह से करता है। एक बार कई अन्य बॉट डबल क्रॉसिंग और फिंगरप्रिंटिंग होने पर अधिक खराब तरीके से किराया लेंगे। यदि नहीं - नियमों को बदलने की आवश्यकता हो सकती है।

import sys
import ast

game,round,numplayers,alreadyplayed,numbet,yattasbet,numready,bankid,myyattas,mybet,mypayment,hired,myrank,mu_yattas,sigma_yattas,max_yattas = map(ast.literal_eval,sys.argv[1:17])
bankholdings = map(int,sys.argv[17:22])
bankprobs = map(float,sys.argv[22:27])
bankodds = map(float,sys.argv[27:32])

if round==1:
    print 1
else:
    if hired and game<900:
        print "change jobs"
    else:
        print "double cross"

SnitcherKing

हमेशा न्यूनतम शर्त, और हमेशा उंगली। छोटे टूर्नामेंटों में बहुत अच्छा करता है जिसमें लिमडेसेन्केर शामिल हैं।

import sys

round = int(sys.argv[2])

if round == 1:
    print 1
else:
    print "finger"

RaysFive01K

थोड़ा और अधिक जटिल - और इसलिए वास्तव में बहुत अच्छा है। इसका अधिकांश लाभ शुरुआती टूर्नामेंट में सभी जीत को जमा करने (डबल क्रॉसर्स से उन्हें बचाने) से होता है, जबकि अपनी जीत की संभावनाओं (और उन सभी गार्ड और हेयर्स के लिए भुगतान करने के लिए नौकरी बदलते), फिर उन सभी को खेल के अंत में वापस ले लेते हैं ( एक बार जब उन्होंने गंभीर रुचि अर्जित कर ली है और वापस लेने में विफल होने की संभावना पर्याप्त रूप से कम है - हालांकि यहां डबल क्रॉसरों को नुकसान एक गंभीर जोखिम है)। यह निश्चित रूप से टूर्नामेंट में होगा, और एक गंभीर दावेदार हो सकता है या नहीं।

import sys
import ast
import random
game,round,numplayers,alreadyplayed,numbet,yattasbet,numready,bankid,myyattas,mybet,mypayment,hired,myrank,mu_yattas,sigma_yattas,max_yattas = map(ast.literal_eval,sys.argv[1:17])

bankholdings = map(int,sys.argv[17:22])
bankprobs = map(float,sys.argv[22:27])
bankodds = map(float,sys.argv[27:32])

if round ==1:
    if game < 900:
        print myyattas/10
    else:
        print 1
else:
    if game < 500 and hired:
        print random.choice(["change jobs","finger","buy guard"])
    elif game < 900:
        print "deposit"
    elif bankholdings[bankid]>0:
        print "withdraw"
    else:
        if alreadyplayed/float(numplayers)<0.5:
            print "finger"
        else:
            print "back out"

मैं इन नामों का अनुमोदन करता हूं <सम्मिलित चिकोटी और पंगा मेम्स>
CAD97

2

लोन जॉन

import sys
import ast

game,round,numplayers,alreadyplayed,numbet,creditsbet,numready,bankid,mycredits,mybet,mypayment,hired,myrank,mu_credits,sigma_credits,max_credits = map(ast.literal_eval,sys.argv[1:17])

bankholdings = map(int,sys.argv[17:22])
bankprobs = map(float,sys.argv[22:27])
bankodds = map(float,sys.argv[27:32])

if round == 1:
    if mycredits > 100 or hired:
        print(int(mycredits)/2)
    else:
        print(0)
else:
    if bankprobs[int(bankid)] > 0.6:
        print("all in")
    elif int(mypayment) > 50 :
        print("buy guard")
    elif int(mycredits) > 200 and int(game) < 900 and hired == "1":
        print("change jobs")
    elif bankprobs[int(bankid)] * (float(numready)+1)/(float(alreadyplayed)+1) < 0.30:
        print "withdraw"
    else:
        print "!guncheck"

रिश्वत लेने की संभावना है जब तक वह जीतने की संभावना है, तो सभी में चला जाता है।

जब वह गार्ड को रिश्वत देने के लिए अधिक धन की आवश्यकता होती है तो नौकरियों में बदलाव करता है।


इस खिलाड़ी को क्या कहा जाता है?
क्विंटोपिया

@ क्विंटोपिया ऑप्स! मैं भूल गया कि मुझे इसे पोस्ट करने का सारा तरीका मिल गया है! नाम और अन्वेषण जोड़ा।
मेगाटॉम

अच्छा लगा। एक टिप के रूप में, आपको उन सभी टाइपकास्ट को करने की आवश्यकता नहीं है। सब कुछ पहले से ही बल्ले से सही eval'd होने से सही प्रकार है। जिसका अर्थ है कि हालत hired == "1"हमेशा झूठी होगी और यह नौकरियों को कभी नहीं बदलेगा।
क्विंटोपिया

मैंने अभी इसे एक दौर में उन सभी के खिलाफ चलाया, जिन्हें मैंने बनाया था। अंतिम स्थान पर आ गया। बुरी किस्मत :(
क्विंटोपिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.