शीश, यह वास्तव में 4 है? आप सभी पुराने लोगों के लिए, मुख्य चुनौती समान है, लेकिन हम कस्टम भाषा के बजाय जावा का उपयोग कर रहे हैं। यदि आप रुचि रखते हैं तो यहां पिछली तीन कोडबॉट चुनौतियां हैं।
कोडबॉट्स का लक्ष्य आपके बॉट को यथासंभव वायरल करना है । प्रत्येक बॉट एक ध्वज ले जाता है, और आपको यह सुनिश्चित करने की आवश्यकता है कि आपका ध्वज हर जगह है ।
एपीआई
बॉट्स एक मानकीकृत "प्रोटोकॉल" का पालन करेंगे, और बॉट्स निम्नलिखित चरणों के माध्यम से तुल्यकालिक रूप से प्रगति करते हैं:
IPAddress selectMessageRecipient()
एक बॉट को यह चुनने की अनुमति देता है कि वह किसे "मैत्रीपूर्ण" संदेश भेजना चाहता है।Message sendMessage()
किसी बॉट को संदेश भेजने की सामग्री चुनने की अनुमति देता है।processMessage(IPAddress, Message)
प्रत्येक संदेश के लिए एक बॉट प्राप्त होता है।FunctionType selectFunctionToBlock()
एक फ़ंक्शन को वर्तमान मोड़ के लिए अधिलेखित होने से रोकता है। चरण 7 देखें।IPAddress selectAttackTarget()
एक बॉट को चुनने की अनुमति देता है कि वह किसे डीडीओएस करना चाहता है। यदि एक ही समय में 3 बॉट द्वारा लक्षित किया जाता है तो डीडीओएस हमला सफल होता है। यदि कोई हमला सफल होता है, तो प्रत्येक हमलावर चरण 6 और 7 का प्रदर्शन कर सकता है।readData(ReadonlyBot)
एक बॉट को कमजोर बॉट पर संग्रहीत डेटा को पढ़ने की अनुमति देता है।FunctionType selectFunctionToReplace()
इस चुनौती की जड़ है । आपको अपने बॉट से उनके बॉट पर कॉपी करने के लिए 1 फ़ंक्शन (यहां सूचीबद्ध 8 में से) का चयन करने की अनुमति है। फिर, उनके बजाय अपने फ़ंक्शन को बुलाया जाएगा । यदि कई बॉट एक ही फ़ंक्शन का चयन करते हैं, तो एक यादृच्छिक सफल होगा।String getFlag()
खेल के अंत में कहा जाता है, और आपके जमा करने के लिए एक स्ट्रिंग को वापस करना चाहिए। आपके फ़ंक्शन को हमेशा एक ही स्ट्रिंग वापस करना चाहिए। खेल के अंत में सबसे अधिक झंडे के साथ प्रस्तुतिकरण जीतता है।
भंडारण
आपके पास भंडारण के 3 रूप हैं, एक एड्रेसबुक , एक लॉग और एक चर । भंडारण के ये रूप स्थानीय हैं बॉट में आपका फ़ंक्शन चल रहा है (इसलिए यदि आपका फ़ंक्शन कॉपी हो जाता है, तो इनमें से प्रत्येक ऑब्जेक्ट की सामग्री अलग होगी)। इन सभी वस्तुओं को मैन्युअल रूप से संशोधित या साफ़ किया जा सकता है। इन वस्तुओं को प्राप्त करने के लिए, आपके पास अपनी कक्षा (जैसे getLog()
) में एक गेट्टर है ।
AddressBook की एक सूची संग्रहीत करता IPAddress एक साथ, प्रत्येक AddressType , जो आप पतों के विभिन्न प्रकार वर्गीकृत करने के लिए अनुमति देता है। एड्रेसबुक में हमेशा कम से कम 1 पता होगा (यदि इसे मंजूरी दे दी गई है, तो एक यादृच्छिक जोड़ दिया जाएगा)। कई IPAddresses प्राप्त करने के लिए अपने एड्रेसबुक को साफ़ करना की अनुमति नहीं है।
लॉग कार्रवाई के बारे में लिए गए सभी कार्यों के साथ-साथ डेटा की एक सूची संग्रहीत करता है। इसमें सभी सफल हमलों का इतिहास भी शामिल है (हालांकि आपको नहीं पता कि वे कौन से कार्य करते हैं)
चर वस्तु आप स्ट्रिंग एक स्ट्रिंग नाम से जुड़ी चर स्टोर करने के लिए अनुमति देता है। गेम शुरू होने पर, चर में एक एकल चर होगा, ID
जिसमें एक बेतरतीब ढंग से उत्पन्न आईडी होती है जो आपके बॉट प्रकार के लिए अद्वितीय होती है।
आपके पास अन्य पहुंच कार्य भी हैं:
int getTurnNumber()
वर्तमान मोड़ के साथ पूर्णांक देता हैbool functionsMatch(ReadonlyBot, FunctionType)
यह देखने के लिए कि क्या ReadonlyBot का फ़ंक्शन आपके साथ मेल खाता है या नहींIPAddress personalAddress()
आपका IPAddress देता है
कैसे लागू करें?
- आप Github से कोड प्राप्त कर सकते हैं
- अपने बॉट को
\bots
फ़ोल्डर में जोड़ें, और फिर अपने बॉट में एक संदर्भ जोड़ेंcontroller\CodeBotFactory.java
- आपका बॉट विस्तार करना चाहिए
codebots.bot.CodeBot
याcodebots.bots.DefaultCodeBot
- यदि आप नियंत्रक चलाना चाहते हैं तो आपको जावा 8 की आवश्यकता है।
- आप संकलित
/src
का उपयोग करके कोड (मान लें कि आप फ़ोल्डर में हैं) चला सकते हैंjavac codebots\*.java
, फिरjava codebots.Main
चलाने के लिए। - आपके पास कोई गैर-स्थिर सदस्य चर नहीं हो सकता है आपकी कक्षा में
- परावर्तन की अनुमति नहीं है।
- ऊपर सूचीबद्ध विधियों के बाहर बॉट्स (एक ही या विभिन्न प्रकार के) के बीच संचार की अनुमति नहीं है।
- गूंगा और / या आत्मघाती बॉट की अनुमति है, लेकिन सभी बॉट मौजूदा प्रविष्टियों की तुलना में कार्यात्मक रूप से भिन्न होना चाहिए।
- यदि आप अपने बॉट में यादृच्छिकता चाहते हैं, तो उपयोग करें
getRandom()
- कृपया अपने कोड को प्रभावी बनाए रखने का प्रयास करें। मैंने समय की रूपरेखा तैयार करने और नियंत्रक को तेज बनाने में अच्छा खर्च किया है।
स्कोर
१०५.२५०१ एक्सपेलेर्मस!
104.5803 मैं मदद कर रहा हूँ!
104.2746 मैं कौन हूं?
103.8529 गूंगा बॉट
103.2028 रिपल्सर
102.7045 कैओस
102.4046 हर्मिट बॉट
102.2849 स्वार
100.5598 रैंडम बॉट आपको
99.966 ट्रस्ट पर भरोसा है!
99.0185 codebots.bots.DefaultCodeBot
91.2942 codebots.bots.MarkedBot
91.1423 बस अपने अनुकूल पड़ोस मेल पहुंचाने वाले रोबोट को भेजें।
89.4645 अशक्त