इंपीरियल चीन में, समाज में रैंक जन्म या धन से नहीं तय किया गया था, लेकिन एक व्यक्ति की शाही परीक्षाओं में उत्कृष्टता प्राप्त करने की क्षमता के द्वारा। हेवन्स के दिव्य शासक, जेड सम्राट ने अपने सभी विषयों को अपनी योग्यता निर्धारित करने के लिए जांचने के लिए कहा है, और जिसे चीन पर शासन करने के लिए दिव्य जनादेश देना है।
नौकरशाही के नियम:
- दैवीय नौकरशाही में गैर-नकारात्मक पूर्णांक-मूल्यवान रैंक होते हैं, जिसकी शुरुआत नौकरशाही के प्रत्येक सदस्य (बॉट) एक रैंक से होती है। प्रत्येक रैंक कई सदस्यों की मनमानी पकड़ सकता है, लेकिन खाली नहीं हो सकता जब तक कि सभी रैंक रिक्त न हों
- खेल की शुरुआत में, सभी सदस्यों को रैंक 0 है
- हर मोड़, नौकरशाही के प्रत्येक सदस्य को एक परीक्षा का उत्तर देना होता है। परीक्षा में किसी सूची के बूलियन मानों का सही अनुमान लगाना शामिल है। सूची की लंबाई सदस्य के ऊपर रैंक की संख्या है।
- परीक्षा के प्रश्न उपरोक्त रैंक के यादृच्छिक सदस्य द्वारा तैयार किए जाते हैं। उच्चतम रैंक के सदस्य सीधे अपने प्रश्न प्राप्त करते
JadeEmperor
हैं (नीचे देखें) - उनकी परीक्षा में कम से कम 50% स्कोर करने वाला सदस्य पदोन्नति के लिए पात्र है। उनकी परीक्षा में 50% से कम स्कोर करने वाला सदस्य डिमोशन का पात्र होता है।
- डिमोशन के लिए पात्र सदस्य की रैंक एक से कम हो जाती है, अगर उनकी जगह लेने के लिए नीचे रैंक पर प्रमोशन के लिए योग्य कोई सदस्य होता है।
- पदोन्नति के लिए पात्र सभी सदस्यों की रैंक एक से बढ़ जाती है जब तक कि यह पद खाली नहीं रहता।
- यदि सभी पात्र सदस्यों को डिमोट या प्रचारित नहीं किया जा सकता है, तो वरीयता सबसे कम (डिमोशन) सम्मान के लिए जाती है। उच्चतम (पदोन्नति के लिए) स्कोर। टाई बेतरतीब ढंग से टूटे हुए हैं।
- एक सदस्य का पद केवल प्रत्येक 1 मोड़ पर बदल सकता है।
खेल के नियम:
- प्रत्येक बॉट को गेम की शुरुआत में बेतरतीब ढंग से एक आईडी सौंपी जाएगी, जो अपने पाठ्यक्रम पर नहीं बदलेगी।
JadeEmperor
आईडी है -1, अन्य सभी को लगातार गैर नकारात्मक आईडी है, 0 से आरंभ। - सभी बॉट एक ही समय में प्रतिस्पर्धा करते हैं
- यह गेम 100 मोड़ तक चलता है, बॉट का स्कोर उस समय की औसत रैंक है।
- कुल स्कोर 1000 खेलों को चलाने और परिणामों के औसत से हासिल किया गया है।
- प्रत्येक बॉट एक पायथन 3 वर्ग है जो निम्नलिखित चार कार्यों को कार्यान्वित करता है:
ask(self,n,ID)
, जोlist
लंबाई के बूलियन्स की वापसी करके एक परीक्षा बनाता है । आईडी बॉट की आईडी है जिसे उस सूची का अनुमान लगाना है।ask()
किसी भी बॉट के लिए एक दौर के दौरान कई बार कहा जा सकता है, लेकिन यह भी बिल्कुल नहीं।answer(self,n,ID)
, जोlist
लंबाई n के बूलियंस को वापस करके एक परीक्षा का उत्तर देने का एक प्रयास है । आईडी उस बॉट की आईडी है जिसकीask()
परीक्षा हुई है।answer()
प्रत्येक बॉट के लिए प्रति चक्कर एक बार कहा जाता है।update(self,rankList,ownExam,otherExams)
एक बार कहा जाता है कि नियंत्रक ने सभी प्रो- और डिमोटेशन का प्रदर्शन किया है। इसके तर्क हैं: पूर्णांक की एक सूची, सभी बॉट की आईडी द्वारा सभी रैंकों की सूची बनाना; एक टपल, जिसमें दो सूचियाँ शामिल हैं, पहले परीक्षा के प्रश्न, फिर बॉट ने जो उत्तर दिए (यदि यह भूल गए); तब ट्यूपल्स की एक सूची, इसी तरह परीक्षा-उत्तर जोड़े से मिलकर, इस बार सभी परीक्षाओं के लिए बॉट को सौंप दिया गया।__init__(self, ID, n)
बॉट को अपनी आईडी और प्रतिस्पर्धी बॉट की संख्या से गुजरता है।
- कक्षाओं को निजी उपयोग के लिए अन्य कार्यों को लागू करने की अनुमति है
- आगे के चर को परिभाषित करना और पिछले परीक्षाओं के बारे में डेटा संग्रहीत करने के लिए उनका उपयोग करना स्पष्ट रूप से अनुमत है।
- प्रोग्रामिंग मेटा-इफेक्ट्स की मनाही है, जिसका अर्थ है कि अन्य बॉट्स कोड, कंट्रोलर कोड को सीधे एक्सेस करने का कोई भी प्रयास, जिसके कारण अपवाद या समान हैं। यह परीक्षा के लिए रणनीतियों की एक प्रतियोगिता है, कोड हैकिंग की नहीं।
- एक दूसरे की मदद करने की कोशिश कर रहे बॉट्स को स्पष्ट रूप से अनुमति दी जाती है, जब तक कि वे मेटा-इफेक्ट्स के माध्यम से ऐसा नहीं करते हैं, लेकिन विशुद्ध रूप से सूचना के माध्यम से
update()
- अन्य भाषाओं को केवल तभी अनुमति दी जाती है जब उन्हें पायथन 3 में आसानी से परिवर्तित किया जा सकता है।
- पुस्तकालय संख्या के रूप में आयात किया जाएगा
np
। संस्करण 1.6.5 है, जिसका अर्थ है कि यह पुराने यादृच्छिक पुस्तकालय का उपयोग करता है। यदि आपके पास 1.7 सुन्न है, तो पुराने कार्यnumpy.random.mtrand
परीक्षण के लिए उपलब्ध हैं । कृपया प्रस्तुत करने के लिए mtrand पट्टी करना याद रखें। - अगर कोई बॉट रनटाइम के दौरान एक अपवाद का कारण बनता है, तो यह अयोग्य है। कोई भी बॉट जिसका कोड इतना अस्पष्ट है कि यह बताना असंभव है कि यह लंबाई की सूची उत्पन्न करता है
ask()
या कबanswer()
बुलाया जाता है, को भी पूर्व में अयोग्य घोषित कर दिया जाएगा। एक बॉट मुझे गहरी-कॉपी आउटपुट के लिए मजबूर करता है, स्कोर पर -1 मिलता है। - कक्षा के नाम अद्वितीय होने चाहिए
- प्रति व्यक्ति कई बॉट की अनुमति है, लेकिन केवल नवीनतम संस्करण को इटर्नेटिवली अपडेट किए गए बॉट से लिया जाएगा।
- चूंकि बॉट समानता के बारे में कुछ भ्रम प्रतीत होता है:
- आपको दूसरे बॉट की कॉपी पोस्ट करने की अनुमति नहीं है । यह एकमात्र मानक Loophole है जो वास्तव में इस चुनौती में लागू होता है।
- आपको अन्य लोगों के बॉट सहित अन्य बॉट्स के साथ साझा कोड रखने की अनुमति है।
- आपको एक बॉट जमा करने की अनुमति नहीं है, जो एक दूसरे से केवल एक तुच्छ परिवर्तन की रणनीति (जैसे प्रश्न पीढ़ी के लिए बीज में परिवर्तन) से भिन्न होती है जब तक कि आप यह साबित नहीं कर सकते कि ऐसे कार्बन कॉपी बॉट की संख्या सफल होने के लिए न्यूनतम आवश्यक है उनकी रणनीति का अधिनियमित (जो आमतौर पर एक सहयोग के लिए दो बॉट होगा)।
उदाहरण बॉट:
JadeEmperor
हमेशा खेल का हिस्सा है, लेकिन प्रतिस्पर्धा नहीं करता है; वह उच्चतम श्रेणी के बॉट की परीक्षा के लिए जनरेटर के रूप में कार्य करता है। उनकी परीक्षाएं यादृच्छिक हैं, लेकिन समान रूप से नहीं, स्मार्ट बॉट्स को आगे बढ़ने की अनुमति देने के लिए।
class JadeEmperor:
def __init__(self):
pass
def ask(self,n,ID):
num=min(np.random.exponential(scale=np.sqrt(np.power(2,n))),np.power(2,n)-1)
bi=list(np.binary_repr(int(num),width=n))
return [x=='0' for x in bi]
शराबी पूरी तरह से बेतरतीब ढंग से परीक्षा और जवाब पैदा करता है। वह खेल का हिस्सा होगा।
class Drunkard:
def __init__(self,ID,n):
pass
def ask(self,n,ID):
return list(np.random.choice([True,False],size=n,replace=True))
def answer(self,n,ID):
return list(np.random.choice([True,False],size=n,replace=True))
def update(self,rankList,ownExam,otherExams):
pass #out
साहित्यिक चोर सिर्फ प्रतियां पिछले परीक्षा। वह खेल का हिस्सा भी होगा।
class Plagiarist:
def __init__(self,ID,n):
self.exam=[True]
def ask(self,n,ID):
return (self.exam*n)[0:n]
def answer(self,n,ID):
return (self.exam*n)[0:n]
def update(self,rankList,ownExam,otherExams):
self.exam=ownExam[0]
यहां नियंत्रक कोड उपलब्ध है । परीक्षण के लिए, आप अपने स्वयं के वर्ग को एक ही फ़ोल्डर में एक कॉन्टेस्टेंट ओरेकल फ़ाइल में डाल सकते हैं, और उन्हें आयात किया जाएगा।
परीक्षा शुरू!
वर्तमान अंक, Oct20 के लिए उच्च परिशुद्धता (10000 रन) में:
निकट भविष्य के लिए प्रत्येक नई प्रविष्टि के साथ प्रतियोगिताएं चलेंगी।
ID, n
लेकिन अन्य विधि तर्क हैं n, ID
?