Последняя таблица лидеров @ 2014-08-02 12:00
| Pos # | Author | Name | Language | Score | Win | Draw | Loss | Avg. Dec. Time |
+-------+----------------------+-------------------------+------------+-------+-------+-------+-------+----------------+
| 1st | Emil | Pony | Python2 | 064 | 064 | 000 | 005 | 0026.87 ms |
| 2nd | Roy van Rijn | Gazzr | Java | 062 | 062 | 001 | 006 | 0067.30 ms |
| 2nd | Emil | Dienstag | Python2 | 062 | 062 | 001 | 006 | 0022.19 ms |
| 4th | ovenror | TobiasFuenke | Python2 | 061 | 061 | 001 | 007 | 0026.89 ms |
| 5th | PhiNotPi | BayesianBot | Perl | 060 | 060 | 000 | 009 | 0009.27 ms |
| 6th | Claudiu | SuperMarkov | Python2 | 058 | 058 | 001 | 010 | 0026.77 ms |
| 7th | histocrat | Alternator | Ruby | 057 | 057 | 001 | 011 | 0038.53 ms |
| 8th | histocrat | LeonardShelby | Ruby | 053 | 053 | 000 | 016 | 0038.55 ms |
| 9th | Stretch Maniac | SmarterBot | Java | 051 | 051 | 002 | 016 | 0070.02 ms |
| 9th | Martin Büttner | Markov | Ruby | 051 | 051 | 003 | 015 | 0038.45 ms |
| 11th | histocrat | BartBot | Ruby | 049 | 049 | 001 | 019 | 0038.54 ms |
| 11th | kaine | ExcitingishBot | Java | 049 | 049 | 001 | 019 | 0065.87 ms |
| 13th | Thaylon | UniformBot | Ruby | 047 | 047 | 001 | 021 | 0038.61 ms |
| 14th | Carlos Martinez | EasyGame | Java | 046 | 046 | 002 | 021 | 0066.44 ms |
| 15th | Stretch Maniac | SmartBot | Java | 045 | 045 | 001 | 023 | 0068.65 ms |
| 16th | Docopoper | RoboticOboeBotOboeTuner | Python2 | 044 | 044 | 000 | 025 | 0156.55 ms |
| 17th | Qwix | Analyst | Java | 043 | 043 | 001 | 025 | 0069.06 ms |
| 18th | histocrat | Analogizer | Ruby | 042 | 042 | 000 | 027 | 0038.58 ms |
| 18th | Thaylon | Naan | Ruby | 042 | 042 | 004 | 023 | 0038.48 ms |
| 20th | Thaylon | NitPicker | Ruby | 041 | 041 | 000 | 028 | 0046.21 ms |
| 20th | bitpwner | AlgorithmBot | Python2 | 041 | 041 | 001 | 027 | 0025.34 ms |
| 22nd | histocrat | WereVulcan | Ruby | 040 | 040 | 003 | 026 | 0038.41 ms |
| 22nd | Ourous | QQ | Cobra | 040 | 040 | 003 | 026 | 0089.33 ms |
| 24th | Stranjyr | RelaxedBot | Python2 | 039 | 039 | 001 | 029 | 0025.40 ms |
| 25th | JoshDM | SelfLoathingBot | Java | 038 | 038 | 001 | 030 | 0068.75 ms |
| 25th | Ourous | Q | Cobra | 038 | 038 | 001 | 030 | 0094.04 ms |
| 25th | Ourous | DejaQ | Cobra | 038 | 038 | 001 | 030 | 0078.31 ms |
| 28th | Luis Mars | Botzinga | Java | 037 | 037 | 002 | 030 | 0066.36 ms |
| 29th | kaine | BoringBot | Java | 035 | 035 | 000 | 034 | 0066.16 ms |
| 29th | Docopoper | OboeBeater | Python2 | 035 | 035 | 002 | 032 | 0021.92 ms |
| 29th | Thaylon | NaanViolence | Ruby | 035 | 035 | 003 | 031 | 0038.46 ms |
| 32nd | Martin Büttner | SlowLizard | Ruby | 034 | 034 | 004 | 031 | 0038.32 ms |
| 33rd | Kyle Kanos | ViolentBot | Python3 | 033 | 033 | 001 | 035 | 0032.42 ms |
| 34th | HuddleWolf | HuddleWolfTheConqueror | .NET | 032 | 032 | 001 | 036 | 0029.86 ms |
| 34th | Milo | DogeBotv2 | Java | 032 | 032 | 000 | 037 | 0066.74 ms |
| 34th | Timmy | DynamicBot | Python3 | 032 | 032 | 001 | 036 | 0036.81 ms |
| 34th | mccannf | YAARBot | JS | 032 | 032 | 002 | 035 | 0100.12 ms |
| 38th | Stranjyr | ToddlerProof | Java | 031 | 031 | 010 | 028 | 0066.10 ms |
| 38th | NonFunctional User2..| IHaveNoIdeaWhatImDoing | Lisp | 031 | 031 | 002 | 036 | 0036.26 ms |
| 38th | john smith | RAMBOBot | PHP | 031 | 031 | 002 | 036 | 0014.53 ms |
| 41st | EoinC | SimpleRandomBot | .NET | 030 | 030 | 005 | 034 | 0015.68 ms |
| 41st | Martin Büttner | FairBot | Ruby | 030 | 030 | 006 | 033 | 0038.23 ms |
| 41st | Docopoper | OboeOboeBeater | Python2 | 030 | 030 | 006 | 033 | 0021.93 ms |
| 44th | undergroundmonorail | TheGamblersBrother | Python2 | 029 | 029 | 000 | 040 | 0025.55 ms |
| 45th | DrJPepper | MonadBot | Haskel | 028 | 028 | 002 | 039 | 0008.23 ms |
| 46th | Josef E. | OneBehind | Java | 027 | 027 | 007 | 035 | 0065.87 ms |
| 47th | Ourous | GitGudBot | Cobra | 025 | 025 | 001 | 043 | 0053.35 ms |
| 48th | ProgramFOX | Echo | .NET | 024 | 024 | 004 | 041 | 0014.81 ms |
| 48th | JoshDM | SelfHatingBot | Java | 024 | 024 | 005 | 040 | 0068.88 ms |
| 48th | Trimsty | Herpetologist | Python3 | 024 | 024 | 002 | 043 | 0036.93 ms |
| 51st | Milo | DogeBot | Java | 022 | 022 | 001 | 046 | 0067.86 ms |
| 51st | William Barbosa | StarWarsFan | Ruby | 022 | 022 | 002 | 045 | 0038.48 ms |
| 51st | Martin Büttner | ConservativeBot | Ruby | 022 | 022 | 001 | 046 | 0038.25 ms |
| 51st | killmous | MAWBRBot | Perl | 022 | 022 | 000 | 047 | 0016.30 ms |
| 55th | Mikey Mouse | LizardsRule | .NET | 020 | 020 | 007 | 042 | 0015.10 ms |
| 55th | ja72 | BlindForesight | .NET | 020 | 020 | 001 | 048 | 0024.05 ms |
| 57th | robotik | Evolver | Lua | 019 | 019 | 001 | 049 | 0008.19 ms |
| 58th | Kyle Kanos | LexicographicBot | Python3 | 018 | 018 | 003 | 048 | 0036.93 ms |
| 58th | William Barbosa | BarneyStinson | Lua | 018 | 018 | 005 | 046 | 0005.11 ms |
| 60th | Dr R Dizzle | BartSimpson | Ruby | 017 | 017 | 001 | 051 | 0038.22 ms |
| 60th | jmite | IocainePowder | Ruby | 017 | 017 | 003 | 049 | 0038.50 ms |
| 60th | ArcticanAudio | SpockOrRock | PHP | 017 | 017 | 001 | 051 | 0014.19 ms |
| 60th | Dr R Dizzle | BetterLisaSimpson | Ruby | 017 | 017 | 000 | 052 | 0038.23 ms |
| 64th | Dr R Dizzle | LisaSimpson | Ruby | 016 | 016 | 002 | 051 | 0038.29 ms |
| 65th | Martin Büttner | Vulcan | Ruby | 015 | 015 | 001 | 053 | 0038.26 ms |
| 65th | Dr R Dizzle | Khaleesi | Ruby | 015 | 015 | 005 | 049 | 0038.29 ms |
| 67th | Dr R Dizzle | EdwardScissorHands | Ruby | 014 | 014 | 002 | 053 | 0038.21 ms |
| 67th | undergroundmonorail | TheGambler | Python2 | 014 | 014 | 002 | 053 | 0025.47 ms |
| 69th | cipher | LemmingBot | Python2 | 011 | 011 | 002 | 056 | 0025.29 ms |
| 70th | Docopoper | ConcessionBot | Python2 | 007 | 007 | 000 | 062 | 0141.31 ms |
+-------+----------------------+-------------------------+------------+-------+-------+-------+-------+----------------+
Total Players: 70
Total Matches Completed: 2415
Total Tourney Time: 06:00:51.6877573
Турнирные заметки
- WOO HOO 70 БОТОВ
- Эмиль все еще с KOTH,
Pony
и его новый ботDienstag
занимает 3 место - Поздравляю Роя за то, что он прыгнул на 2-е место со своим
Gazzr
ботом - Уильям Барбоза получает награду Quick Draw за своего бота
BarneyStinson
И Slow Poke награда вручается Docopoper за его боты
R.O.B.O.T
иConcessionbot
которые оба были> 140мса в рукуДоступные журналы @ https://github.com/eoincampbell/big-bang-game/blob/master/tourneys/Tournament-2014-08-01-23-24-00.zip?raw=true
Исключенные боты
- BashRocksBot - до сих пор не радует .net за исключением сценариев Cygwin Bash
- CounterPreferenceBot - ожидание исправления ошибки
- RandomlyWeighted - ожидание исправления ошибки
- CasinoShakespeare - исключено, поскольку требуется активное подключение к Интернету
Оригинальный вопрос
Вы отправились в дом своих друзей на самую эпическую битву за всю историю Рок, Бумага, Ножницы, Ящерица, Спок. В истинном стиле BigBang, ни один из игроков не играет сам, но создал консольных ботов, чтобы играть от их имени. Вы достаете свой USB-ключ и передаете его Шелдору Завоевателю для включения в битву . Пенни падает в обморок. Или, возможно, Говард обморок. Мы не судим здесь, в квартире Леонарда.
правила
Применяются стандартные правила: камень, бумага, ножницы, ящерица, спок.
- Ножницы вырезанные из бумаги
- Бумажные обложки Rock
- Каменная крошка Ящерица
- Ящерица отравляет Спока
- Спок разбивает ножницы
- Ножницы обезглавливают Ящерицу
- Ящерица ест бумагу
- Бумага опровергает Спока
- Спок испаряет камень
- Камень давит Ножницы
Бот каждого игрока сыграет один матч против другого бота в турнире.
Каждый Матч будет состоять из 100 итераций игры RPSLV.
После каждого матча победителем становится игрок, выигравший наибольшее количество игр / раздач из 100.
Если вы выиграете матч, вам будет присвоено 1 очко в таблице лиги. В результате ничьей ни один из игроков не получит очко.
Требования к боту
Ваш бот должен быть запущен из командной строки.
* Шелдор * nix box умер, поэтому мы запускаем его с его игрового ноутбука Windows 8, поэтому убедитесь, что ваше решение может работать на Windows. Шелдор любезно предложил установить любые необходимые среды выполнения (в пределах разумного), чтобы иметь возможность запустить ваше решение. (.NET, Java, Php, Python, Ruby, Powershell ...)
входные
В первой игре каждого матча вашему боту не приводятся аргументы. В каждой последующей игре каждого матча: - Arg1 будет содержать историю ваших рук / решений ботов в этом матче. - Arg2 будет содержать историю рук / решений ваших оппонентов в этом матче.
История будет представлена последовательностью отдельных заглавных букв, обозначающих возможные руки, которые вы можете сыграть.
| R | Rock |
| P | Paper |
| S | Scissors |
| L | Lizard |
| V | Spock |
Например
- Игра 1: MyBot.exe
- Игра 2: MyBot.exe SV
- Игра 3: MyBot.exe SS VL
- Игра 4: MyBot.exe SSR VLS
Выход
Ваш бот должен написать отдельный ответ персонажа, представляющий его «руку» для каждой игры. Результат должен быть записан в STDOUT, а затем бот должен выйти. Допустимые одиночные заглавные буквы ниже.
| R | Rock |
| P | Paper |
| S | Scissors |
| L | Lizard |
| V | Spock |
В том случае, если ваш бот не возвращает действительную руку (т.е. 1 из 5 вышеуказанных заглавных букв), вы автоматически лишаетесь этой руки, и матч продолжается.
В случае, когда оба бота не возвращают действительную руку, игра считается ничьей, и матч продолжается.
Формат матча
Каждый представленный бот сыграет один матч против другого бота в турнире.
Каждый матч продлится ровно 100 игр.
Матчи будут разыгрываться анонимно, вы не будете иметь глубоких знаний о конкретном боте, с которым вы играете, однако вы можете использовать любую информацию, которую вы можете получить из его решений в течение истории текущего матча, чтобы изменить свою стратегию против вашего. противник. Вы также можете отслеживать историю ваших предыдущих игр для создания шаблонов / эвристики и т. Д. (См. Правила ниже)
В течение одной игры движок оркестровки будет запускать вашего бота, а ваши оппоненты - на расстоянии 100 миллисекунд, а затем сравнивать результаты, чтобы избежать любых столкновений PRNG на одном языке / времени выполнения. (это на самом деле случилось со мной во время тестирования).
Судья и ограничения
Доктор Шелдон Купер под видом Шелдора Завоевателя любезно предложил присмотреть за ходом турнира. Шелдор Завоеватель - честный и просто надзиратель (в основном). Все решения Шелдора являются окончательными.
Игры будут проводиться честно и правильно:
- Ваш скрипт / программа для бота будет храниться в движке оркестровки в подпапке
Players\[YourBotName]\
- Вы можете использовать подпапку
Players\[YourBotName]\data
для регистрации любых данных или истории игр текущего турнира по мере его продолжения. Каталоги данных будут очищаться в начале каждого турнира. - Вы не можете получить доступ к каталогу Игрока другого игрока в турнире.
- У вашего бота не может быть определенного кода, нацеленного на другое поведение конкретного бота
- Каждый игрок может отправить в игру более одного бота, если они не взаимодействуют и не помогают друг другу.
Изменить - Дополнительные ограничения
- Что касается штрафов, они не будут поддерживаться. Ваш бот должен сыграть одну из 5 действительных рук. Я протестирую каждого бота вне турнира с некоторыми случайными данными, чтобы убедиться, что они ведут себя. Любые боты, которые выбрасывают ошибки (т.е. теряют ошибки), будут исключены из турнира, пока они не исправят ошибку.
- Боты могут быть производными, если они кратко отличаются по своему поведению. Боты (в том числе на других языках), которые ведут себя точно так же, как и существующие боты, будут дисквалифицированы
- Уже есть спам-боты, поэтому, пожалуйста, не отправляйте повторно
- Рок - БартСимпсон
- Бумага - ЛизаСимпсон
- Scissor - EdwardScissorhands
- Спок - Вулкан
- Ящерица - Халиси
- Псевдослучайный - SimpleRandomBot & FairBot
- Psuedo Random RPS - ConservativeBot
- Psuedo Random LV - Барни Стинсон
- Боты не могут вызывать сторонние сервисы или веб-ресурсы (или что-либо еще, что значительно замедляет скорость / время принятия решений в матчах).
CasinoShakespeare
это единственное исключение, так как этот бот был представлен до добавления этого ограничения.
Шелдор будет обновлять этот вопрос так часто, как он может с результатами Турнира, так как будет представлено больше ботов.
Программа оркестровки / управления
Программа оркестровки вместе с исходным кодом для каждого бота доступна на github.
https://github.com/eoincampbell/big-bang-game
Детали представления
Ваша заявка должна включать
- Имя вашего бота
- Ваш код
- Команда для
- выполнить свой бот из оболочки, например
- ruby myBot.rb
- python3 myBot.py
- ИЛИ ЖЕ
- сначала скомпилируйте оба, а затем выполните. например
- csc.exe MyBot.cs
- MyBot.exe
Образец представления
BotName: SimpleRandomBot
Compile: "C:\Program Files (x86)\MSBuild\12.0\Bin\csc.exe" SimpleRandomBot.cs
Run: SimpleRandomBot [Arg1] [Arg2]
Код:
using System;
public class SimpleRandomBot
{
public static void Main(string[] args)
{
var s = new[] { "R", "P", "S", "L", "V" };
if (args.Length == 0)
{
Console.WriteLine("V"); //always start with spock
return;
}
char[] myPreviousPlays = args[0].ToCharArray();
char[] oppPreviousPlays = args[1].ToCharArray();
Random r = new Random();
int next = r.Next(0, 5);
Console.WriteLine(s[next]);
}
}
осветление
Любые вопросы задавайте в комментариях ниже.
источник
Ответы:
Пони (Питон 2)
Это основано на боте «камень-ножницы-бумага», который я написал некоторое время назад для программирования в конце онлайн-класса Udacity . Я изменил его, чтобы включить Спока и ящерицу, и сделал некоторые улучшения.
Программа имеет 11 различных простых стратегий, каждая с 5 вариантами. Он выбирает среди них, основываясь на том, насколько хорошо они выступили бы в последних раундах.
Я удалил запасную стратегию, которая просто играла случайно против более сильных противников. Я думаю, что это веселее, как это.
Беги как:
Изменить : я сделал небольшое изменение, вставив уклон в сторону самой простой стратегии (то есть всегда играть один и тот же ход) в неуверенных случаях. Это немного помогает не пытаться найти слишком сложные паттерны там, где их нет, например, в таких ботах, как ConservativeBot.
Примечание : я попытался объяснить основную стратегию сопоставления истории, которую этот бот использует в посте для моего другого бота Dienstag .
источник
Марков, Рубин
Рассматривает последние два хода противника и определяет возможные (и наиболее вероятные) последующие действия. Если комбинация не была выбрана раньше, он просто использует все ходы противника (пока). Затем он собирает все возможные ответы на них и выбирает случайный.
Беги как
источник
ConservativeBot, Ruby
Новые вещи плохие.
Беги как
источник
Фанат Звездных Войн - Рубин
Винт ты, Спок
Запустите это как:
источник
Барни Стинсон - Луа
У меня только одно правило: новое всегда лучше. Винт старый Джо Кен По или как вы это называете.
Запустите это как:
источник
Скучный бот (Java)
Он предполагает, что каждый всегда играет одно и то же и планирует соответственно. Хотя он обычно выбирает камни в галстуках, потому что так ли все остальные правы?
источник
max
IocainePowder, Рубин
Основанный на (бесстыдно украденной) стратегии RPS здесь . Похоже, бот выбирает предположение, идентичное марковскому, но предполагает, что противник угадал, что он выберет, и выбирает ход, чтобы превзойти его.
Обратите внимание, что я только что адаптировал основную идею связанной стратегии, а не следовал ей подробно.
Беги как
источник
HuddleWolfTheConqueror - C #
HuddleWolf вернулся и лучше, чем когда-либо. Он победит Шелдора Завоевателя в своей глупой игре. HuddleWolf достаточно умен, чтобы выявлять и противостоять спаммерботам. Для более умных противников HuddleWolf использует свои знания базовой статистики 5-го класса и использует взвешенный бросок костей, основанный на истории игр противника.
источник
ToddlerProof
Этот довольно глупый бот предполагает, что он играет малыша, который будет «преследовать» свои ходы, всегда пытаясь побить то, что было брошено последним. Если бота бьют несколько раз подряд, он переходит на новую точку в паттерне. Это основано на моей стратегии всегда побеждать моего намного младшего брата. :)
EDIT :: Изменена длина полосы проигрыша, необходимая для прыжка в случайные броски. Также исправлена серьезная ошибка со случайным прыжком.
Сохранить как
ToddlerProof.java
, скомпилировать, затем запустить сjava ToddlerProof [me] [them]
источник
Барт Симпсон
"Старый добрый рок! Ничто не сравнится с рок!"
Беги как
Лиза Симпсон
«Бедный, предсказуемый Барт. Всегда выбирает рок».
Беги как
Лучше Лиза Симпсон
Я чувствовал себя плохо из-за того, что сделал Лизу такой глупой, поэтому позволил ей случайным образом выбирать одну из рук, которые будут бить рок. Все еще глупо, но она все-таки Симпсон. Может быть, карандаш застрял в ее мозгу?
Беги как
источник
эхо
Написано на C #. Компилировать с
csc Echo.cs
. Беги какEcho.exe ARG1 ARG2
.При первом запуске Echo выбирает случайный вариант. Каждый раз после первого Echo просто повторяет последнее действие противника.
источник
Вулкан, Рубин
Мои пальцы склеены.
Беги как
(Я думаю, что это единственная в своем роде стратегия для вашей фоновой настройки.)
источник
Тиранозавр, Годзилла, Барни ... Правило ящериц. Иногда они попадают в беду и должны позвонить Споку или бросить Камни
источник
BayesianBot, Perl (теперь v2!)
Помимо всего прочего, это уникальная программа. В нем вы увидите блестящее слияние статистики и ужасной формы программирования. Также этот бот, вероятно, нарушает многие правила байесовской статистики, но название звучит круче.
Суть этого бота заключается в создании 250 различных прогнозирующих моделей. Каждая модель принимает форму «Учитывая, что в последний ход я играл рок, а мой оппонент играл два шага назад, это распределение вероятностей для следующего хода моего оппонента». Каждое распределение вероятностей принимает форму многомерного распределения Дирихле.
Каждый ход прогнозы всех применимых моделей (обычно 10) умножаются вместе для формирования общего прогноза, который затем используется для определения того, какие ходы имеют наибольшую ожидаемую отдачу.
Редактировать 1: В этой версии я изменил предыдущий дистрибутив и сделал бота более рандомизированным, когда он проигрывает.
Есть несколько вещей, которые могут быть улучшены, такие как количество моделей (250 - это только трехзначное число), выбор предварительного распределения (в настоящее время Dir (3,3,3,3,3)) и метод слияния предсказаний. Кроме того, я никогда не удосужился нормализовать какое-либо из распределений вероятности, что пока нормально, потому что я их умножаю.
У меня нет супер высоких ожиданий, но я надеюсь, что этот бот сможет преуспеть.
Я запустил эту программу так:
источник
DynamicBot
Динамический бот почти всегда меняется. Это действительно ненавидит повторяться
Язык: Python 3.4.1
Команда:
python dynamicbot.py <history>
или вpython3 dynamicbot.py <history>
зависимости от вашей системыисточник
SmartBot - Java
Моя первая запись о чем-либо на этом сайте!
Хотя не очень креативное имя ...
SmartBot находит последовательности ходов, в которых ходы противника и / или самого себя аналогичны последним сделанным ходам, и планирует соответственно.
name = SmartBot
Я думаю, чтобы запустить его, поправьте меня, если я ошибаюсь.
java -jar SmartBot.jar
Он присваивает оценку каждому возможному следующему ходу по количеству повторений похожих паттернов.
Это немного одобряет ящерицу.
источник
java ABot
должны сработать (не забудьте назвать файл так же, как открытый класс)SpockOrRock - PHP
Когда играют в реальном мире, большинство людей инстинктивно выбирают ножницы. Этот бот выбирает Спока или Рока, чтобы побить среднего игрока. Это не беспокоит предыдущие раунды.
бежать с
php spockorrock.php
источник
SlowLizard, Ruby
Начав с Ящера, он всегда выбирает случайный ход, который бьет предыдущий ход противника.
Беги как
источник
LexicographicBot
Этот бот любит заказывать свои письма, поэтому он выберет ответ, который на 1 больше, чем его оппонент в предыдущем раунде - если только оппонент не выбрал Вулкана, он случайным образом выбирает ответ.
Это предполагает, что рука оппонента будет сдана второй:
источник
Веревулкан - Рубин
Беги как
ruby werevulcan.rb
Днем оборотень выглядит нормально, но когда восходит луна, уши становятся заостренными, а движения становятся более логичными.
источник
Аналог - Рубин
Беги с
ruby analogizer.rb
. Я сделал логическое исправление в коде, но не знаю, почему с этим были ошибки.Предполагается, что бот-противник всегда реагирует на мой предыдущий ход и выбирает что-то, что побьет его, что-то, что может быть ему проиграно, или тот же ход, возможно, из ограниченного набора возможных ходов. Затем он выбирает лучший ход, учитывая это предположение.
За исключением того, что первые десять ходов жестко запрограммированы: сначала я притворяюсь, что знаю только ящерицу, затем я предполагаю, что мой оппонент всегда бросает что-то, чтобы побить последнее, что я бросил, пока у меня не будет достаточно данных для надлежащего анализа.
источник
Java - SelfLoathingBot
Бот начинает случайным образом, затем ~ 33%, чтобы выбрать случайный, или ~ 33%, чтобы сыграть выигрышную тактику против любой из предшествующих игр, с 50% выбором выигрышной тактики.
источник
Аналитик
Аналитик анализирует некоторые вещи и делает некоторые вещи, чтобы попытаться победить вас.
скомпилировать
javac Analyst.java
и запустить какjava Analyst
источник
Игрок - Питон 2
Вопреки названию, в этой программе используется случайность только в первом раунде, когда нет информации. Вместо этого, он назван в честь заблуждения игрока, убеждения в том, что если случайное событие случалось реже в прошлом, оно более вероятно произойдет в будущем. Например, если вы подбрасываете честную монету 20 раз, а первые 15 - это головы, ошибка игрока указывает на то, что шансы оставшихся бросков, являющихся хвостами, увеличиваются. Конечно, это неправда; независимо от предыдущих бросков, шансы на выпадение хвоста у честной монеты всегда равны 50%.
Эта программа анализирует историю противника, находит 2 хода, которые она использовала меньше всего, и предполагает, что ход противника на этот раз будет одним из этих двух. Присвоив 2 победе, 1 ничьей и 0 проигрышу, он находит ход с максимальным счетом против этих двух предсказанных ходов и бросает его.
Брат игрока - Питон 2
Переключив
MODE
переменную на 0, эта программа будет работать на основе связанной ошибки, которая также иногда называется ошибкой игрока. В нем говорится, что если случайное событие происходило чаще в прошлом, оно более вероятно произойдет в будущем. Например, если вы подбрасываете монету 20 раз, а первые 15 - это головы, это заблуждение говорит о том, что оставшиеся броски с большей вероятностью будут головами, поскольку в настоящее время существует полоса. В режиме 0 эта программа работает аналогичным образом, за исключением того, что предполагается, что противник бросит один из двух ходов, которые он кидал чаще всего.Так что да, эти две программы отличаются друг от друга. :)
источник
Dienstag (Python 2)
Моя первая запись « Пони», кажется, вполне справляется со всеми ее вторыми догадками (тройным угадыванием, ...) и мета-рассуждениями. Но это даже необходимо?
Итак, вот Динстаг, маленький друг Пони, у которого есть только одна из 55 стратегий: предсказать следующий ход противника и одолеть его.
В долгосрочной перспективе Dienstag выигрывает или связывается с каждым ботом в первой десятке текущего списка лидеров. За исключением Пони.
Беги как:
Я признаю, что код немного запутан. Если кто-то захочет узнать больше об этом, я мог бы добавить объяснения.
Изменить: Вот
краткоепримерное руководство, чтобы объяснить идею:Программа получает свою историю и ходы противника:
sys.arg[1] = 'LLVLLVL', sys.arg[2] = 'RPSPSSP'
История объединяется в список пар, а ходы переводятся в числа (R = 0, ...):
hist = [[4, 0], [4, 1], [3, 2], [4, 1], [4, 2], [3, 2], [4, 1]]
Количество сыгранных раундов определяется:
N = 7
Основная идея теперь состоит в том, чтобы искать самую длинную непрерывную цепочку точно из последних ходов в более ранней истории. Программа отслеживает, где такая цепочка заканчивается в списке
cand
(для «кандидатов»). В начале, без проверки, каждая позиция в истории, кроме последней, считается:cand = [0, 1, 2, 3, 4, 5]
Теперь длина возможных цепочек увеличивается шаг за шагом. Для длины цепи
l = 1
он ищет предыдущие вхождения последней пары ходов[4, 1]
. Это может быть найдено в истории позиции1
и3
. Только они хранятся вcand
списке:cand = [1, 3]
Далее, для
l = 2
него проверяется, кому из возможных кандидатов предшествовала пара со второго до последнего хода[3, 2]
. Это только случай для позиции3
:cand = [3]
Для
l = 3
и более не существует предыдущих цепочек такой длины иcand
будет пустым. В этом случаеcand
сохраняется последний элемент :cand = [3]
Теперь бот предполагает, что история повторится. В последний раз, когда
[3, 2], [4, 1]
произошел каин , за ним последовало[4, 2]
. Итак, противник сыграл2
(ножницами), которых можно побить(2+1)%5 = 3
(Споком) или(2+3)%5 = 0
(камнем). Бот отвечает, с первой или второй альтернативой, в зависимости от того,N
является ли странным или даже просто ввести некоторую дисперсию.Здесь
3
выбирается ход, который затем переводится обратно:print 'V'
Примечание: Dienstag имеет временную сложность O ( N 2 ) для возврата следующего хода после N раундов. Пони имеет временную сложность O ( N 3 ). Так что в этом аспекте они, вероятно, намного хуже, чем большинство других записей.
источник
Баш скалы
Cygwin слишком много, чтобы спросить как время выполнения?
bashrocks.sh:
и запустить его так:
источник
R
. ;)dos2unix
файл в cygwin перед его выполнением?Алгоритм
Алгоритм ради того, чтобы иметь один.
Потому что всегда безопаснее делать что-то, чем сложнее, тем лучше.
Еще не сделали какой-то серьезной математики, поэтому этот алгоритм может быть не таким эффективным.
Программа Python 2:
python algorithm.py
источник
FairBot, Ruby
Давайте начнем с простого.
Беги как
источник
ViolentBot
Этот бот выбирает наиболее жестокий вариант, основываясь на предыдущем выборе оппонентов:
Беги как
источник
Haskell - MonadBot
Я не знаю, считается ли ghc «в пределах разумного», но давайте просто предположим, что это так. Стратегия этого бота заключается в противодействии наиболее популярному ходу противника.
Код:
источник