Обратите внимание: это испытание царя горы завершено. Это означает, что зеленая галочка, которая была присуждена C5H8NNaO4 за их запись Наблюдатель, не будет перемещена в новый ответ.
Вы по-прежнему можете отправлять новые записи, но могут быть задержки в новых турнирах, поскольку я больше не проверяю новые записи.
Введение
В этом испытании вы играете в аркадную игру под названием The Ultimate Samurai Showdown Ultimate Edition, специальная версия 2.0 X Alpha Omega Turbo (или просто Ultimate Samurai Showdown для краткости). Ваши оппоненты? Никто иной, как другие участники Programming Puzzles & Code Golf!
Как и следовало ожидать от аркадной игры PPCG, вы не играете в Ultimate Samurai Showdown напрямую, а скорее пишете программу, которая будет играть в эту игру для вас. Эта программа будет бороться с программами, представленными другими пользователями в поединках один на один. Самая опытная программа будет увенчана Ultimate Samurai of PPCG и получит зеленую галочку легенды.
Описание игры
В этом разделе описана механика игры.
Условие Победы
Матч состоит из двух самураев , которые сталкиваются друг против друга. Каждый самурай начинает каждый матч с 20 хитами и 1 честью . Самурай побеждает, если его противник мертв, а он все еще жив. Есть два способа, которыми самурай может умереть:
- Если хиты самурая будут снижены до 0, он умрет.
- Если самурай принесет свою честь ниже 0, он будет сбит богами за нечестную игру в поединке.
Уничтожение богов имеет более высокий приоритет по сравнению с уменьшением очков жизни до 0, поэтому в ситуации, когда один самурай имеет 0 очков здоровья, а другой - -1 честь, самурай с 0 очками здоровья выиграет. В ситуации, когда оба самурая имеют честь -1, они оба поражены богами, и игра становится ничьей.
Матч состоит из 500 ходов . Если все 500 ходов пройдены и матч не решен (ни один самурай не умер), богам становится скучно, и они сбивают обоих самураев, что приводит к ничьей.
действия
На каждом ходу самурай должен выполнять ровно одно из следующих действий:
W
Самурай должен ждать и не предпринимать никаких действий. Это заставляет его выглядеть круто, но не помогает ему победить своего противника. Это также действие по умолчанию.
B
Самурай должен почтительно поклониться своему противнику. Это радует богов и, таким образом, самурай получит 1 Честь. Честь жизненно важна для успеха вашего самурая, потому что Честь, по сути, является «ресурсом» для этой игры - все движется отдельно B
и W
может уменьшить Честь. Кроме того, если самурай получает 7 или более Чести, ему предоставляется право использовать Меч Богов . Последствия этого описаны ниже.
Однако, кланяясь своему противнику, вы остаетесь открытым, если ваш противник решает ударить вас своим мечом, поэтому будьте осторожны, когда решите поклониться.
G
Самурай должен войти в оборонительную позицию и защищаться от любых ударов мечом. Этот ход успешно заблокирует все удары мечом, даже те, что были сделаны с помощью Меча Богов .
Тем не менее, боги недовольны чрезмерно оборонительными самураями, поэтому этот ход потребует 1 Чести, если действия самурая в непосредственно предшествующем ходу также охраняли. Иначе Хонор не потребляет.
I
Самурай должен попытаться ударить своего противника быстрым извлечением своего меча из ножен. Если у самурая 7 очков чести или больше, он использует Меч Богов вместо своего обычного меча. Этот ход потребляет 1 Чести.
Быстрая ничья - это быстрый удар, который побьет медленные атаки сверху, однако он проиграет против парирования. Если удар успешен, он нанесет 1 урон или 2 урона Мечом Богов .
P
Самурай должен попытаться парировать любую входящую атаку, а затем начать собственную атаку. Если у самурая 7 очков чести или больше, он использует Меч Богов вместо своего обычного меча. Этот ход потребляет 1 Чести.
Парирование - хороший маневр против быстрых ударов, но оно будет подавлено медленными атаками сверху. Если удар успешен, он нанесет 1 урон или 2 урона Мечом Богов .
O
Самурай должен попытаться нанести удар по противнику с более медленной атакой сверху. Если у самурая 7 Чести или выше, он использует Меч Богов вместо своего обычного меча. Этот ход потребляет 1 честь.
Удар сверху может подавить парирование, но он проиграет от быстрых ударов. Если удар успешен, он нанесет 1 урон или 2 урона Мечом Богов .
Меч богов
Самурай с Честностью 7 или более получает способность использовать Меч Богов . Если его Честь будет ниже 7, способность использовать Меч богов будет отозвана у него. Меч Богов наносит 2 повреждения вместо 1.
Меч Богов не позволяет удар победить мечом удар , что он не будет обычно поражение. Например, парирование Меча Богов все равно проиграет при обычном верхнем ударе, а быстрое ничье Меча Богов не одолеет обычное быстрое ничье. На самом деле, так называемый Меч Богов на самом деле не настолько силен - возможно, это космическая шутка, которую играют боги ...
Таблица взаимодействия
Приведенный ниже фрагмент стека содержит таблицу, в которой явно перечислены все возможные результаты различных комбинаций действий, которые могут выполнять два самурая. Чтобы просмотреть его, нажмите «Показать фрагмент кода», затем нажмите «Запустить фрагмент кода».
Программа связи
Чтобы облегчить проведение турнира, была написана программа контроллера, которая сыграет роль «богов» - она хранит записи о чести и здоровье и, соответственно, поражает самураев. В этом разделе описывается, как ваша программа будет взаимодействовать с программой контроллера.
Описание входа
Программа контроллера будет вызывать вашу программу из командной строки следующим образом:
<command> <history> <enemy_history> <your_health> <enemy_health> <your_honour> <enemy_honour>
где:
<command>
это команда, необходимая для запуска вашей программы. Например, если ваша программа находится в файлеsuper_sentai.pl
, команда, вероятноperl super_sentai.pl
.<history>
это история ходов, которые вы сделали. Например, этоWWBP
будет означать , что вы дважды подождали, один раз поклонились и один раз парировали.<enemy_history>
история ходов вашего врага. Например,BBBI
это означает , что ваш враг трижды поклонился и выполнил одну быструю ничью.<your_health>
ваше текущее здоровье.<enemy_health>
это текущее здоровье врага.<your_honour>
ваша нынешняя честь<enemy_honour>
это настоящая честь врага.
Для первого хода, history
и enemy_history
будет пустым, поэтому ваша программа будет вызываться только с последними четырьмя аргументами, подобными этим:
<command> <your_health> <enemy_health> <your_honour> <enemy_honour>
Пожалуйста, будьте готовы к этому!
Проницательные читатели могут заметить, что четыре аргумента, обеспечивающие честь и здоровье обоих самураев, в некоторой степени излишни; Поскольку это идеальная информационная игра, честь и здоровье самурая можно определить, используя только историю.
Эти значения предоставлены для удобства, чтобы вам не приходилось анализировать аргументы истории. Это должно оказаться полезным для реализации простых стратегий, например, не атаковать, когда ваша Честь равна 0.
Описание выхода
Чтобы выбрать действие, ваша программа должна вывести один из W
, B
, G
, I
, P
, или O
на стандартный вывод, в зависимости от того, какие действия вы хотите сделать. Если ваша программа ничего не выводит в течение 1000 мс, она будет прервана, и ваша программа будет обрабатываться так, как если бы она выводила W
.
Если ваша программа выводит более одной буквы, будет рассматриваться только первая буква, поэтому вывод Parry
будет таким же, как и вывод P
.
Если вывод первой буквы вашей программы не соответствует ни одному из перечисленных выше параметров, по умолчанию он будет иметь значение W
.
Формат представления
Отправить программу в качестве ответа на этот пост. Вы можете подать несколько программ. Если вы отправляете несколько простых программ, я рекомендую отправлять их как один ответ; если вы отправляете несколько сложных программ, я рекомендую отправлять их как отдельные ответы. Как только я успешно добавлю вашу программу / программы в турнир, я сделаю коммит в репозиторий git с вашей записью (ссылка ниже).
Если у меня возникнут проблемы, из-за которых ваша программа не будет добавлена в турнир, я оставлю комментарий к вашей записи с указанием проблемы.
Пожалуйста, включите следующее в ваше представление:
- Удобное для чтения имя вашей программы для использования в табло. Здесь разрешены пробелы; Запятые и символы Юникода не являются.
- Язык, на котором написана ваша программа. Пожалуйста, не пишите на странных, труднодоступных языках, таких как TinyMUSH.
- Краткий обзор вашей программы. Это может быть описание того, как работает программа, или просто небольшой текст о вашей программе (если вы хотите быть полностью скрытным), или, возможно, и то, и другое.
- Команда / ы, необходимые для запуска вашей программы. Например, если вы пишете свою заявку на Java
example.java
, вы должны предоставить инструкции по компиляции, аjavac example.java
затем выполнить инструкцииjava example
. - Исходный код программы.
Чтобы помочь в отправке, я предоставляю шаблон отправки, который можно найти здесь . Шаблон заставляет представления выглядеть лучше. Я настоятельно рекомендую использовать его.
Я также приведу два примера записей. Несмотря на то, что примеры заявок будут участвовать в круговом турнире, их основная цель - уточнить форматы подачи и ввода / вывода для турнира, а не быть серьезными претендентами на звание Ultimate Samurai.
Структура турнира
В этом разделе описывается, как будет проходить турнир между участниками.
Программа управления
Управляющая программа написана на Python 2 и может быть найдена в репозитории Ultimate Samurai Showdown Github . Если вы хотите запустить его самостоятельно, инструкции по его запуску включены в файл README.md по ссылке. Однако только турниры, проводимые на моем компьютере, будут официальными, чтобы избежать различий в оборудовании, влияющих на результаты турниров.
Управляющая программа будет работать на ноутбуке под управлением Arch Linux. Он имеет процессор Intel Core i7 и 8 ГБ оперативной памяти. Я постараюсь, чтобы все записи работали на моем компьютере, но я был бы очень признателен, если бы вы избегали языков, к которым нет свободного доступа (как без денежных затрат).
Система баллов
Система начисления очков - круговой. Каждая программа сыграет восемь матчей против любой другой программы. Победа дает программе 1 очко, проигрыш без очков и ничью 0,5 очка. Программа с наибольшим количеством очков побеждает в игре. Если будет ничья, я буду дуэли двух лучших программ друг с другом, чтобы определить победителя.
Количество раз, когда каждая программа будет воспроизводить другую, может быть уменьшено с 8, если количество участников слишком велико. Я добавлю заметку здесь, если это произойдет.
Я буду запускать циклический перебор много раз, так как новые публикации публикуются, но это будет только самый последний циклический перебор.
Дисквалификация
Ваша программа может быть дисквалифицирована из турнира. Дисквалификация может произойти, если:
- Ваша программа не компилируется и не запускается;
- Ваша программа является стратегическим дубликатом другой программы (то есть реализует ту же стратегию, что и другая программа);
- Ваша программа пытается саботировать другие программы, изменяя код контроллера, код другой программы и т. Д .;
- Ваша программа пытается использовать ошибку в коде контроллера. Вместо того, чтобы использовать ошибки, вы должны вместо этого открыть проблему в репозитории git, оставить комментарий здесь или пинговать меня в чате.
Прошлые результаты
Подробные результаты всех турниров доступны на вики-странице .
Самый последний турнир был завершен 2015-07-17 07:20. Вот краткое изложение результатов:
The Observer: 209.0
Coward: 203.0
Monk: 173.0
Elephant Warrior: 157.0
Iniqy: 157.0
Agent 38: 144.0
Ninja: 138.0
Meiyo Senshi: 138.0
Kakashi: 136.0
Yoshimitsu: 131.0
Hermurai: 121.0
Warrior Princess: 120.0
Gargoyle: 119.5
The Honourable: 119.0
Hebi: 118.5
Predictor: 116.0
Whack-a-mole: 107.0
The Fool: 106.0
The Prophet: 105.0
Copy-san: 97.0
YAGMCSE: 80.0
The Waiter: 66.0
Swordsman: 43.0
Spork Holder: 32.5
Blessed Samurai: 27.5
Attacker: 27.0
The Terminator: 17.0
Master Yi: 16.0