ПРИМЕЧАНИЕ : победителем этого конкурса является Джек !!! Больше никаких заявок не будет принято.
Вот чат для этого испытания царя горы . Это мой первый, поэтому я открыт для предложений!
Жнец - это игровая концепция, разработанная «Искусством решения проблем», которая включает терпение и жадность. После внесения изменений в игру, чтобы она соответствовала конкурсу в стиле 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.
- Игра заканчивается, когда игрок (или несколько) достигает выигрышного счета.
- Когда несколько ботов просят пожинать одновременно, приоритет отдается ботам, которые ждали дольше (в случае связей, боты, которые ждали максимальное время, все могут пожинать и получать очки в Жатве)
- Ваш бот должен занять в среднем не более 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 встроенными в него представлениями: Попробуйте онлайн
ЗАКЛЮЧИТЕЛЬНЫЕ РЕЗУЛЬТАТЫ
WOO ОНИ НАКОНЕЦ ЗДЕСЬ! Проверьте ссылку TIO выше, чтобы увидеть, какой код я использовал для генерации итоговых результатов. Результаты не очень интересные. За 1000 прогонов, которые я сделал с разными случайными семенами, результаты были
1000 wins - Jack
0 wins - everyone else
Поздравляем победителя Баунти Джека! (он же @Renzeee)
len(BotList)
?
25
ботов в игре. Однако сначала нужно немного подождать, чтобы увидеть ботов других людей. Рашабх Мехта , будет ли крайний срок / окончательная дата, когда будут запущены все боты и определен победитель?