Примітка. Цю проблему короля-пагорба завершено. Це означає, що зелена галочка, яку було присвоєно C5H8NNaO4 за їх запис Спостерігач не буде переміщено до жодної нової відповіді.
Ви все ще можете подавати нові записи, але можливі затримки в нових турнірах, оскільки я вже не активно перевіряю наявність нових записів.
Вступ
У цьому виклику ви граєте в аркадну гру під назвою The Ultimate Samurai Showdown Ultimate Edition Спеціальна версія 2.0 X Alpha Omega Turbo (або просто Ultimate Samurai Showdown ). Ваші опоненти? Ніхто інший, як інші члени програми Puzzle Puzzle & Code Golf!
Як ви могли очікувати від аркадної гри PPCG, ви не граєте в Ultimate Samurai Showdown безпосередньо, а скоріше пишете програму, яка буде грати для вас. Ця програма буде боротися з програмами, поданими іншими користувачами в поєдинках один на один. Найбільш кваліфікована програма буде коронована Остаточним Самураєм PPCG та отримає зелений галочок легенди.
Опис гри
Цей розділ описує механіку гри.
Стан перемоги
Матч складається з двох самураїв , які стикаються один проти одного. Кожен самурай починає кожен матч з 20 очок потрапляння та 1 честі . Самурай виграє, якщо його супротивник мертвий і він ще живий. Є два методи, за допомогою яких самурай може померти:
- Якщо точки удару самурая знизяться до 0, він помре.
- Якщо самурай принесе власну честь нижче 0, його вдарять боги за те, що вони нечесно діють у поєдинку.
Ударене богами має більш високий пріоритет над тим, щоб удари очок зменшили до 0, тож у ситуації, коли один самурай на 0 очок здоров’я, а інший у -1 честі, виграє самурай з 0 балами здоров’я. У ситуації, коли обоє самураїв мають -1 честь, вони обоє вражають богів, і гра стає нічиєю.
Матч складається з до 500 оборотів . Якщо всі 500 оборотів пройдуть, і поєдинок не вирішений (ні самурай не загинув), боги нудьгують і б'ють обох самураїв, в результаті чого відбувається нічия.
Дії
На кожному кроці самурай повинен виконати точно одну з наступних дій:
W
Самурай чекає і не робить жодних дій. Це робить його здоровим, але не допомагає йому перемогти опонента. Це також дію за замовчуванням.
B
Самурай чесно кланяється своєму опоненту. Це радує богів, і таким чином самурай здобуде 1 честь. Честь є життєво важливою для успіху вашого самурая, тому що Honor - це, по суті, "ресурс" для цієї гри - все рухається осторонь B
і W
може зменшити честь. Крім того, якщо самурай набирає 7 Честі або більше, йому надається використання Меча Богів . Наслідки цього описані нижче.
Однак поклонитися опоненту залишає вас відкритими, якщо ваш опонент вирішить вдарити вас мечем, тому будьте обережні, коли ви вирішите поклонитися.
G
Самураї вступають в оборонну позицію і охороняють від будь-яких ударів мечем. Цей хід вдало заблокує всі удари мечами, навіть ті, які зроблені з Мечем Богів .
Однак боги нахмурилися надмірно оборонним самураєм, тож цей хід вимагатиме 1 Честі, якщо дія самураїв на попередньому повороті також охороняла. Інакше вона не споживає честі.
I
Самурай намагається завдати удару супротивнику швидким витяганням меча з його ножниці. Якщо у самурая 7 честі або більше, він використовуватиме Меч Богів замість свого звичайного меча. Цей хід витрачає 1 честь.
Швидка нічия - це швидкий страйк, який виграє повільніші атаки, проте програє проти парирів. Якщо удар вдало підключиться, він нанесе 1 збиток, або 2 збитки Мечем Богів .
P
Самурай намагається проаналізувати будь-яку наступну атаку, а потім розпочати власну атаку. Якщо у самурая 7 честі або більше, він використовуватиме Меч Богів замість свого звичайного меча. Цей хід витрачає 1 честь.
Париж - це хороший маневр проти швидких ударів, але він буде подоланий повільнішими нападами. Якщо удар вдало підключиться, він нанесе 1 збиток, або 2 збитки Мечем Богів .
O
Самурай намагається завдати удару свого опонента повільнішою атакою. Якщо у самурая 7 честі або вище, він використовуватиме Меч Богів замість свого звичайного меча. Цей хід витрачає 1 честь.
Ударний удар може перемогти пари, але він втратить проти швидких ударів. Якщо удар вдало підключиться, він нанесе 1 збиток, або 2 збитки Мечем Богів .
Меч Богів
Самурай з честю 7 або більше здобуває можливість використовувати Меч Богів . Якщо його честь знизиться нижче 7, можливість використання Меча Богів буде відкликана у нього. Меч Богів завдає 2 пошкодження замість 1.
Меч Богів не дозволяє удар перемогти мечем удар , що він не буде звичайно поразку. Наприклад, Меч Богів парирується, як і раніше, звичайним ударом під голову, і a швидкий жеребку Меча Богів не переможе звичайний швидкий нічиї. Дійсно, так званий Меч Богів насправді не настільки сильний - можливо, це космічний жарт, який грають боги ...
Таблиця взаємодії
Фрагмент стека нижче містить таблицю, в якій чітко перераховані всі можливі результати різних комбінацій дій, які можуть здійснити два самураї. Щоб переглянути його, натисніть «Показати фрагмент коду», потім натисніть «Запустити фрагмент коду».
Програмна комунікація
Для полегшення проведення турніру була написана програма контролера, яка грала роль «богів» - вона веде облік честі та здоров’я і відповідно побиває самураїв. У цьому розділі описано, як ваша програма буде спілкуватися з програмою контролера.
Опис вводу
Програма контролера викличе вашу програму з командного рядка так:
<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 із вашим записом (зв'язане нижче)
Якщо у мене виникнуть проблеми, які заважають вашій програмі бути доданими до турніру, я залишу коментар до вашого вступу із зазначенням проблеми.
Будь ласка, включіть у подання:
- Зрозуміла для людини назва вашої програми для використання у табло. Тут дозволені простори; коми та символи Unicode не є.
- Мова, якою написана ваша програма. Будь ласка, уникайте писати на чужих, важкодоступних мовах, таких як TinyMUSH.
- Короткий конспект вашої програми. Це може бути опис того, як працює програма, або просто якийсь смаковий текст про вашу програму (якщо ви хочете бути всім секретним), або, можливо, і те й інше.
- Команда / s, необхідна для запуску вашої програми. Наприклад, якщо ви писали свою заявку в 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, коментувати тут чи пінг мені в чаті.
Минулі результати
Детальні результати всіх турнірів розміщені на сторінці wiki .
Останній турнір завершився 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