দ্রষ্টব্য : এই প্রতিযোগিতার বিজয়ী হলেন জ্যাক !!! আর কোনও জমা গ্রহণযোগ্য হবে না।
পাহাড়ের এই চ্যালেঞ্জের জন্য এখানে চ্যাট রুম । এটি আমার প্রথম তাই আমি পরামর্শের জন্য উন্মুক্ত!
রিপার হ'ল আর্ট অফ প্রব্লেম সল্ভিংয়ের দ্বারা বিকাশ করা একটি গেম ধারণা যা ধৈর্য এবং লোভকে জড়িত। কোনও KOTH স্টাইলের প্রতিযোগিতায় ফিট করার জন্য গেমটি সংশোধন করার পরে (আপনার পরামর্শ এবং উন্নতির জন্য @ নাথানমারিল এবং @ ডিজাইমাকে ধন্যবাদ), এখানে চ্যালেঞ্জ is
গেমটি নিম্নলিখিত হিসাবে কাজ করে: রিপ হিসাবে আমাদের কাছে একটি মূল্য রয়েছে যা প্রতিটি ধাপে ধ্রুবক দ্বারা গুণ করে। প্রতিটি টিকের পরে, প্রতিটি বটটিতে "রিপিং" এর বিকল্প রয়েছে, যার অর্থ হ'ল কাটার বর্তমান মূল্যটি কারও স্কোরের সাথে যুক্ত করা, এবং ফসল কে হ্রাস করে 1 এ নামানো।
তবে, একটি নির্দিষ্ট সংখ্যক টিক রয়েছে যা একটি বটকে "কাটাগুলি" এর মধ্যে অপেক্ষা করতে হবে এবং গেমটি জিততে প্রয়োজনীয় সংখ্যক পয়েন্ট রয়েছে।
যথেষ্ট সহজ? আপনার ইনপুটগুলি এখানে:
ইনপুট / আউটপুট
আপনাকে পাইথন 3 এ একটি ফাংশন লিখতে হবে যা 3 ইনপুট নেয়। প্রথমটি self
, শ্রেণি অবজেক্টগুলি রেফারেন্স করার জন্য ব্যবহৃত হয় (পরে দেখানো হয়েছে)। দ্বিতীয়টি হ'ল Reap
, শস্য কাটার বর্তমান মান যা আপনি "কাটা" থাকলে আপনি উপার্জন করতে পারবেন। তৃতীয়টি হ'ল prevReap
, আগের টিকের সময় কাটানো বটগুলির একটি তালিকা।
অন্যান্য ক্রিয়াকলাপগুলিতে আপনি নিজের ফাংশনে অ্যাক্সেস করতে পারবেন:
self.obj: An object for your use to store information between ticks.
self.mult: The multiplier that Reap is multiplied by each tick
self.win: The score you need to win
self.points: Your current set of points
self.waittime: The amount of ticks that you must wait between reaps during the game
self.time: The number of ticks since your last reap
self.lenBots: The number of bots (including you) in the game.
self.getRandom(): Use to produce a random number between 0 and 1.
আপনি এই বিষয়বস্তুগুলির কোনও বিষয়বস্তু বাদে অবশ্যই সম্পাদনা করতে পারবেন না self.obj
।
1
ফসল কাটাতে আপনাকে অবশ্যই আউটপুট দিতে হবে এবং ফসল না কাটানোর জন্য অন্য কিছু (বা কিছুই নয়)। মনে রাখবেন যে আপনি যখন টিক্সের অপেক্ষা না করে কাটা পড়ে থাকেন, তখন আপনি যে ফসল কাটতে বেছে নিয়েছেন তা আমি এড়িয়ে যাব।
বিধি
পরামিতি আমি ব্যবহার করা হবে winning_score=10000
, multiplier=1.6-(1.2/(1+sqrt(x)))
, waittime = floor(1.5*x)
যেখানে x
KOTH মধ্যে বট সংখ্যা।
- গেমটি শেষ হয় যখন কোনও প্লেয়ার (বা একাধিক) বিজয়ী স্কোর এ পৌঁছায়।
- যখন একাধিক বট একবারে কাটতে বলে, তখন যে বটগুলি দীর্ঘ অপেক্ষা করেছিল তাদের অগ্রাধিকার দেওয়া হয় (সম্পর্কের ক্ষেত্রে, যে বটগুলি সর্বাধিক সময় অপেক্ষা করেছিল তাদের সকলকে কাটতে এবং পয়েন্টগুলি পাওয়ার জন্য অনুমতি দেওয়া হয়)
- আপনার বটটি অবশ্যই 5 টি টিকের উপরে গড়ে 100 এমএসের বেশি লাগবে না।
- আপনি যদি গ্রন্থাগার আমদানি করতে চান, জিজ্ঞাসা করুন! আমি পাইথনের আমার ডেস্কটপ সংস্করণে যে কোনও লাইব্রেরি চালাতে পারি তা যুক্ত করার চেষ্টা করব (গণিতটি ইতিমধ্যে আমদানি করা হয়েছে: এটি ব্যবহারে নির্দ্বিধায়)
- ডাব্লিকেট বটস, 1-আপ বটস ইত্যাদির মতো কোএইচটিএসের সমস্ত মানক লুফোলগুলি একইভাবে নিষিদ্ধ।
- যে কোনও বট যে কোনও ধরণের এলোমেলো ব্যবহার করে তাদের অবশ্যই
getRandom
প্রদত্ত ফাংশনটি ব্যবহার করতে হবে ।
আপনি নীচের টিআইও লিঙ্কে নিয়ামকটি খুঁজে পেতে পারেন। এটি ব্যবহার করতে, আপনার ফাংশনের নামটি BotList
স্ট্রিং হিসাবে যুক্ত করুন এবং তারপরে কোডটিতে ফাংশন যুক্ত করুন। পরিবর্তন multiplier
পরিবর্তন কি রীপ প্রতিটি টিক দ্বারা গুন করা হয়, সংশোধন করতে winning_score
কি স্কোর খেলা শেষ করার জন্য প্রয়োজনীয় পরিবর্তন করতে এবং সংশোধন waittime
ইন reaps মধ্যে অপেক্ষা করতে এঁটেল পোকা সংখ্যা পরিবর্তন।
আপনার সুবিধার জন্য, এখানে কিছু নমুনা (এবং বরং মূর্খ) বট দেওয়া হয়েছে। এর মতো বট জমা দেওয়ার অনুমতি দেওয়া হবে না। যাইহোক, তারা নিয়ন্ত্রণকারী কীভাবে কাজ করে তা প্রদর্শন করে।
def Greedybot(self,Reap, prevReap):
return 1
def Randombot(self,Reap, prevReap):
if self.obj == None:
self.obj=[]
self.obj.append(prevReap)
if self.getRandom()>0.5:
return 1
আগ্রহীদের জন্য, এটিতে নির্মিত 15 টি জমা সহ কন্ট্রোলার এখানে রয়েছে: এটি অনলাইনে চেষ্টা করুন
শেষ ফলাফল
ওঁরা শেষ পর্যন্ত এখানে আছেন! চূড়ান্ত অবস্থানগুলি উত্পন্ন করতে আমি কোন কোড ব্যবহার করেছি তা দেখতে উপরের টিআইও লিঙ্কটি দেখুন Check ফলাফলগুলি মারাত্মক আকর্ষণীয় নয়। বিভিন্ন র্যান্ডম বীজের সাথে আমি যে 1000 রানের কাজ করেছি, তার ফলাফল ছিল
1000 wins - Jack
0 wins - everyone else
বাউন্টি বিজয়ী জ্যাককে অভিনন্দন !! (ওরফে @ রেনজি)
len(BotList)
?
25
খেলায় বটগুলির উপর ভিত্তি করে আমার বিবরণে আমি যা করেছি তার পরিবর্তে । প্রথমে কিছুটা অপেক্ষা করবে অন্য লোকের বটগুলি দেখুন। রুশভ মেহতা , সমস্ত বট চালানো হবে এবং একটি বিজয়ী নির্ধারিত হবে তখন কি একটি সময়সীমা / চূড়ান্ত তারিখ থাকবে?