यह चुनौती समाप्त हो गई है। प्रतियोगियों के अंतिम स्कोर को देखने के लिए, यहां क्लिक करें
इस चुनौती में, प्रत्येक प्रस्तुत एक बॉट है। प्रत्येक बॉट एक जावास्क्रिप्ट फ़ंक्शन होना चाहिए। बॉट सोने में उच्चतम कुल मूल्य प्राप्त करने के लिए लड़ेंगे। सोने की खेती की जा सकती है, या अन्य बोट्स को मारने से कमाया जा सकता है और इसका उपयोग हीलिंग, आक्रमण, परिरक्षण और खेती को उन्नत करने के लिए किया जाता है।
उद्देश्य:
1000 से अधिक घुमाव वाले कई राउंड्स (केवल एक बॉट के समाप्त होने पर समाप्त होता है), सबसे अधिक कुल मूल्य (प्राप्त सभी सोने का योग) वाला बॉट विजेता है।
बदल जाता है:
प्रत्येक मोड़ में, प्रत्येक बॉट जो जीवित है (> 0 एचपी) एक बार चलाया जाएगा। यह एक चाल लौटा सकता है, जो निम्नलिखित में से एक हो सकता है:
- हील: एचपी को नियंत्रित करता है
- हमला: एचपी को दूसरे बॉट से निकालता है
- शील्ड: बाद के हमलों के खिलाफ रक्षा करता है
- अचेत करना: दूसरे बॉट की अगली बारी को छोड़ देता है
- फार्म: एचपी की कीमत पर सोना कमाता है
- अपग्रेड: कुछ चालों को बेहतर बनाएं
सभी बॉट किसी भी निष्पादित होने से पहले अपनी चाल वापस कर देंगे, इसलिए एक स्टन, चंगा, हमला, ढाल, आदि उस मोड़ में बाद में चलने वाले किसी भी बॉट को प्रभावित नहीं करेगा। उदाहरण के लिए, यदि बॉट ए, बॉट बी, और बॉट बी टर्न ऑर्डर में बॉट ए के बाद है, तो बॉट बी बाद में भी उसी मोड़ पर आगे बढ़ेगा और स्टन अगले मोड़ पर होगा।
मुकाबला, खेती और उन्नयन:
प्रत्येक बॉट में अधिकतम 100 एचपी होता है, और 0 और 99 के बीच एक यूआईडी निर्दिष्ट होता है। यह यूआईडी हर दौर के बाद बदलता है, और यह है कि बॉट एक दूसरे का ट्रैक कैसे रखते हैं।
हीलिंग सबसे सरल चालों में से एक है, अपने स्तर से निर्धारित एचपी की मात्रा को जोड़ना (5 एचपी से शुरू होता है)। एक बॉट पिछले 100 एचपी को ठीक नहीं कर सकता है।
यूआईडी द्वारा एक बॉट पर हमला करना एक और संभावित कदम है, जिसका स्तर 0. 5 स्तर पर एचपी की क्षति के साथ है। बॉट्स भी स्तब्ध रह सकते हैं, अपने अगले मोड़ को छोड़ देते हैं, जो यूआईडी का भी उपयोग करता है।
बॉट में अतिरिक्त ढाल एचपी है, जिसकी कोई सीमा नहीं है। यह ढाल एचपी अन्य बॉट से सीधे हमलों से नुकसान को अवशोषित करेगी, और परिरक्षण द्वारा जोड़ा जाता है। स्तर 0 पर, परिरक्षण 5 ढाल एचपी जोड़ता है।
खेती 2 एचपी की लागत से, 0 के स्तर पर 5 स्वर्ण अर्जित करेगी। इस 2 एचपी को परिरक्षित नहीं किया जा सकता है। सोने (जीतने से परे) के लिए एकमात्र उपयोग चाल को उन्नत करना है। हीलिंग, आक्रमण और परिरक्षण का आधार मूल्य 5 HP है, और खेती 5 स्वर्ण से शुरू होती है। उन चालों में से प्रत्येक में व्यक्तिगत स्तर होते हैं, जो 0. पर शुरू होते हैं। ये सूत्र एक कदम के एचपी या सोने में मूल्य का निर्धारण करेंगे, जहां एल स्तर है:
- हीलिंग:
L + 5
- हमला:
1.25L + 5
- परिरक्षण:
1.5L + 5
- खेती:
2L + 5
किसी भी चाल को उन्नत करने की लागत एक निश्चित स्तर के लिए समान है, और यह निर्धारित किया जाता है 2.5L² + 2.5L + 10
, जहां एल वर्तमान स्तर है। एक बॉट इसे cost(currentLevel)
निर्धारित करने के लिए एक शॉर्टकट के रूप में फ़ंक्शन का उपयोग कर सकता है ।
बॉट्स 25 सोने से शुरू होते हैं, जिससे वे जल्दी से या तो दो चालों को स्तर 1 पर ले जा सकते हैं, या एक स्तर पर ले जा सकते हैं 2. यह शुरुआत सोना कुल मूल्य के बॉट की ओर नहीं गिना जाता है। एक बॉट को मारने से आपको सोने में उसकी कुल कीमत का आधा हिस्सा मिलता है, गोल किया जाता है, और अगर दो बॉट एक ही मोड़ में दूसरे को मारते हैं, तो वे दोनों को इनाम मिलता है।
इनपुट आउटपुट:
नियंत्रक के साथ संवाद करने के लिए, चाल जानकारी भेजने के लिए फ़ंक्शन के रिटर्न मान का उपयोग किया जाता है। इनमें से एक को लौटाया जाना चाहिए:
- चंगा:
heal()
- हमला:
attack(uid)
- शील्ड:
shield()
- अचेत:
stun(uid)
- खेत:
farm()
- अपग्रेड:
upgrade("heal" / "attack" / "shield" / "farm")
एक मोड़ (कुछ भी नहीं) को छोड़ने के लिए, कुछ भी नहीं लौटाएं, या एक झूठा मान लौटाएं।
वर्तमान टर्न नंबर प्राप्त करने के लिए (1 से शुरू होता है), उपयोग करें turn()
।
आपके फ़ंक्शन के तर्कों में आपके बॉट, अन्य बॉट्स के यूआईडी और टर्न-स्टोरेज के बारे में जानकारी शामिल होगी। पहला तर्क निम्नलिखित गुणों के साथ एक वस्तु है: uid
, hp
, gold
, और shield
। ये आपके बॉट की वर्तमान जानकारी की प्रतियां हैं। वहाँ भी एक नेस्टेड वस्तु है levels
के स्तर की संख्या के साथ, heal
, attack
, shield
, और farm
।
दूसरा तर्क आपके अलावा अन्य सभी जीवित बॉट्स का एक फेरबदल सरणी है, जिसे एक गुण वाली वस्तु के रूप में स्वरूपित किया गया है uid
, hp
(प्लस शील्ड) worth
, और attack
(हमला स्तर)। तीसरा तर्क एक खाली वस्तु है जिसका उपयोग टर्न-टर्न स्टोरेज के लिए किया जा सकता है।
उदाहरण बॉट:
यह बॉट तब तक खेती करेगा जब तक यह अपने हमले को 5 के स्तर तक अपग्रेड नहीं कर सकता है, तब तक प्रत्येक बारी में एक यादृच्छिक बॉट पर हमला करता है जब तक कि वह मर नहीं जाता (या जीतता है)। उपचार / परिरक्षण की कमी के कारण बहुत प्रभावी नहीं है।
function freeTestBotA(me, others, storage) {
if (me.levels.attack < 5) {
if (me.gold < cost(me.levels.attack))
return farm();
return upgrade("attack");
}
return attack(others[0].uid);
}
इस बॉट में दो मोड हैं: आक्रामक और रक्षात्मक। यह रक्षात्मक मोड में या तो एक यादृच्छिक बॉट या चंगा करेगा, और यह आक्रामक मोड में होने पर या तो हमला करेगा या ढाल देगा। यह जब भी संभव होगा अपने हमलों को उन्नत करने का प्रयास करेगा।
function freeTestBotB(me, others, storage) {
if (me.gold >= cost(me.levels.attack))
return upgrade("attack");
if (me.hp < 50)
if (Math.random() < 0.5)
return stun(others[0].uid);
else
return heal();
else
if (Math.random() < 0.5)
return attack(others[0].uid);
else
return shield();
}
नियम:
- मानक Loopholes निषिद्ध
- बॉट्स अपने दायरे से बाहर किसी भी चर को पढ़, संशोधित या जोड़ नहीं सकते हैं, धोखा देने का प्रयास नहीं कर सकते हैं, और किसी भी नियंत्रक-परिभाषित या DOM कार्यों को नहीं कह सकते हैं।
- वापसी मान गलत होना चाहिए, या उपरोक्त फ़ंक्शन आउटपुट में से एक होना चाहिए
- बॉट्स को एक विशिष्ट बॉट को लक्षित करने के लिए डिज़ाइन नहीं किया जाना चाहिए, लेकिन आम रणनीतियों का लाभ उठाने के लिए डिज़ाइन किया जा सकता है
- बॉट्स खुद पर हमला नहीं कर सकते (@Ness द्वारा टिप्पणी के कारण खोजा गया)
- बॉट्स को किसी भी अन्य बॉट्स से पर्याप्त रूप से अलग होना चाहिए कि उन्हें यथोचित रूप से अलग एंट्रीज माना जा सके
- अब टीम बनाने की अनुमति नहीं है
- नियंत्रक यहां पाया जा सकता है
- गपशप करने का कमरा
नए नियंत्रक डिबगिंग:
फ़ाइल का उपयोग करके gold-battle-log.js
, आप debug
एक बॉट की संपत्ति का मान botData
0 (कोई लॉगिंग), 1 (लॉग चाल), या 2 (लॉग चाल, एचपी, सोना, स्तर, आदि) निर्धारित कर सकते हैं।
शुक्रवार, 9 अगस्त को 1700 यूटीसी पर चुनौती समाप्त होती है
[closed]
अंत में आकस्मिक दर्शकों को मेरी चुनौती को पढ़ने के बाद छोड़ देने की संभावना है, क्योंकि यह कम गुणवत्ता वाला या ऑफ-टॉपिक है।