ПРИМІТКА : Переможець цього змагання - Джек !!!. Більше жодних заявок не приймається.
Ось балачка для цього виклику королівства . Це мій перший, тому я відкритий для пропозицій!
Жнець - це ігрова концепція, розроблена мистецтвом вирішення проблем, яка передбачає терпіння та жадібність. Змінивши гру, щоб вона підходила до змагань у стилі KOTH (Дякую @NathanMerrill та @dzaima за ваші пропозиції та вдосконалення), ось це завдання.
Гра працює наступним чином: у нас є значення, відоме як Reap, що множиться на задану константу кожного галочки. Після кожного галочки кожен бот має можливість "пожинати", що означає додавання поточного значення Reap до своєї оцінки та зменшення Reap до 1.
Однак є фіксована кількість кліщів, яких бот повинен чекати між «жнетами», і фіксованою кількістю очок, необхідних для виграшу гри.
Досить просто? Ось ваші входи:
I / O
Ви повинні написати функцію в Python 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.
- Гра закінчується, коли гравець (або декілька) досягає виграшного балу.
- Коли кілька ботів просять отримати пожинання одночасно, пріоритет надається ботам, які чекали довше (у разі зв’язків, ботам, які дочекалися максимуму часу, все дозволяється пожинати та набирати очки в Reap)
- Ваш бот повинен у середньому займати не більше 100 мс протягом 5 кліщів.
- Якщо ви хочете імпортувати бібліотеки, запитайте! Я спробую додати будь-які бібліотеки, які я можу запустити у моїй настільній версії Python (математика вже імпортна: не соромтеся використовувати її)
- Усі стандартні лазівки для KoTH, такі як дублюючі боти, 1-боти тощо, забороняються аналогічно.
- Будь-які боти, які використовують будь-яку випадковість, повинні використовувати
getRandomфункцію, яку я надав.
Ви можете знайти контролер за посиланням TIO нижче. Щоб скористатися ним, додайте ім'я своєї функції у BotListвигляді рядка, а потім додайте функцію до коду. Змініть, multiplierщоб змінити те, що Reap множиться на кожну галочку, модифікуйте, winning_scoreщоб змінити рахунок, необхідний для завершення гри, і модифікуйте, waittimeщоб змінити кількість тиків, щоб чекати між жнетами.
Для вашої зручності, ось кілька зразкових (і досить нерозумних) ботів. Надсилання ботів, подібних до цих, забороняється. Однак вони демонструють, як працює контролер.
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 вбудованими в нього матеріалами: Спробуйте в Інтернеті
ЗВІТНІ РЕЗУЛЬТАТИ
ВОЛО ТОМУ НАРОДНО ТУТ! Перевірте посилання TIO вище, щоб побачити, який код я використав для генерації підсумкових таблиць. Результати не страшно цікаві. За 1000 пробіжок, які я робив з різними випадковими насінням, результати були
1000 wins - Jack
0 wins - everyone else
Вітаємо переможця Баунті Джека !! (він же @Renzeee)
len(BotList)?
25ботів у грі. Спочатку трохи зачекайте, побачите ботів інших людей. Rushabh Mehta , чи буде кінцевий термін / кінцева дата, коли будуть запущені всі боти і визначено переможець?