Результаты - 19 июля 2014 г.
Текущий Король Холма - Наемник от пользователя Fabigler ! Продолжайте представлять записи и сбить его с трона!
Нажмите здесь, чтобы посмотреть табло.
Программы, представленные 19 июля 2014 года или ранее, были включены. Все остальные материалы будут включены в будущие испытания. Новые результаты должны быть опубликованы около 9 августа, так что у вас будет достаточно времени.
Иллюстрированный Крисом Рейнболтом, моим братом и выпускником колледжа искусств и дизайна Саванны.
Введение
Ангелы и демоны сражаются и, как обычно, используют землю в качестве своего поля битвы. Люди застряли в середине и вынуждены принять сторону. Неизвестная нейтральная сила вознаграждает тех, кто последовательно сражается за проигравшую сторону.
Игра
Каждое испытание, вы будете псевдослучайно в паре, а затем перетасовано от 20 до 30 других представлений. Каждое испытание будет состоять из 1000 раундов. Каждый раунд, вы будете проходить ввод и ожидается, что будет производить вывод. Ваш вывод будет записан и оценен. Этот процесс будет повторяться 1000 раз.
вход
Вы получите один аргумент, который представляет прошлые голоса каждого игрока. Раунды разделены запятой. А 0
представляет игрока, который принял сторону Зла в этом раунде. A 1
представляет игрока, который встал на сторону Good. В течение испытания игроки всегда будут в том же порядке. Ваш собственный голос будет включен, но не определен явно. Например:
101100100
В этом примере три раунда были завершены, и три игрока соревнуются. Первый игрок всегда на стороне хорошего. Второй игрок всегда на стороне зла. Игрок третий поменялся местами с Добра в 1-м раунде на Зло в 2-м и 3-м турах. Одним из этих игроков был вы.
Выход
Представления Java
- Верните строку,
good
если вы хотите принять сторону Good. - Верните строку,
evil
если вы хотите принять сторону зла.
Представления не Java
- Выведите строку
good
в stdout, если вы хотите принять сторону Good. - Выведите строку
evil
в stdout, если вы хотите принять сторону зла.
Если ваша программа выводит или возвращает что-то еще, выдает исключение, не компилирует или занимает более одной секунды, чтобы вывести что-либо на этом конкретном компьютере , это будет дисквалифицировано.
счет
Результаты будут опубликованы в электронной таблице Google для легкого просмотра, как только я смогу скомпилировать все текущие записи. Не волнуйтесь - я буду продолжать испытания до тех пор, пока вы, ребята, продолжаете отправлять программы!
- Вы получаете 3 очка за то, что встали на сторону большинства в течение раунда.
- Вы получаете n - 1 балл за то, что встали на сторону меньшинства в течение раунда, где n - это количество раз, которое вы на стороне меньшинства.
Ваша оценка будет медиана 5 испытаний. Каждое испытание состоит из 1000 раундов.
Практические результаты
Представления не Java
Вы должны предоставить уникальный заголовок, программу и строку командной строки Windows, которые будут запускать вашу программу. Помните, что аргумент может быть добавлен к этой строке. Например:
python Angel.py
- Обратите внимание, что у этого нет аргументов. Это раунд один! Будьте готовы к этому.
python Angel.py 11011,00101,11101,11111,00001,11001,11001
Представления Java
Вы должны предоставить уникальный заголовок и класс Java, который расширяет абстрактный класс Human, написанный ниже.
public abstract class Human {
public abstract String takeSides(String history) throws Exception;
}
тестирование
Если вы хотите проверить свою заявку, следуйте инструкциям здесь .
Дополнительные примечания
Вы можете подавать столько разных заявок, сколько пожелаете. Представления, которые кажутся сговорщиками, будут дисквалифицированы. Автор этого вызова будет единственным судьей по этому вопросу.
Новый экземпляр вашей программы или класса Java будет создаваться при каждом вызове. Вы можете сохранить информацию, записав в файл. Вы не можете изменять структуру или поведение чего-либо, кроме вашего собственного класса.
Игроки будут перетасованы до начала игры. Демон и Ангел будут участвовать в каждом испытании. Если число игроков четное, к ним присоединится и Петр Баелиш. Демоны сражаются за зло, Ангел за добро, а Петр Бейлиш выбирает псевдослучайную сторону.
источник
Ответы:
Наемник
Всегда на стороне того, кто заплатил больше всего денег в последнем раунде.
Учитывая, что хорошие люди зарабатывают статистически больше.
источник
Хипстер, рубин
Просто идет с меньшинством последнего раунда, просто потому что все остальное является мейнстримом.
Беги как
источник
Петир Баелиш
Никогда не знаешь, на чьей стороне Петр Баелиш.
Эта запись будет включена, только если количество игроков четное. Это гарантирует, что всегда будет большинство.
источник
C ++, мета-ученый
Этот по сути тот же, что и «Ученый», но действует не на раунды в целом, а на отдельных игроков. Он пытается отобразить волну (или постоянную функцию) для каждого игрока в отдельности и предсказывает их движение в следующем раунде. Исходя из предсказания, полученного в результате раунда, мета-ученый выбирает ту сторону, которая имеет большинство.
Если вы хотите включить операторы отладки, измените чтение строки
#if 0
на#if 1
.Скомпилируйте с
g++ -O3 -std=c++0x -o MetaScientist MetaScientist.cpp
(вам не нужны предупреждения, поэтому нет-Wall
) и запустите сMetaScientist.exe
(возможно, включая аргумент, конечно). Если вы спросите действительно хорошо, я могу предоставить вам исполняемый файл Windows.РЕДАКТИРОВАТЬ: Судя по всему, предыдущая версия исчерпала время около 600 раундов в игру. Это не должно делать это. Его время контролируется
#define WINDOW (...)
линией, больше медленнее, но смотрит назад.источник
ангел
Самый чистый игрок из всех.
программа
команда
источник
Артемида Фаул
В книге 7, The Atlantis Complex , Артемис Фаул контракт психологического заболевания ( так называемый Атлантида комплексом) , который заставил его сделать все , что в упаковке 5 (говорение, действий и т.д.). Когда он не мог сделать это в кратном 5, он запаниковал. Я делаю в основном это: вижу, делится ли добро или зло (преднамеренное смещение) на 5, если нет, то я паникую и вижу, что было лучше, бегаю с этим или паникую еще дальше и случайно выбираю.
источник
break;
в своемswitch
.Disparnumerophobic
Нечетные числа ужасают.
источник
Линус, Рубин
Стремится обескуражить аналитиков, всегда нарушая схему .
Сохранить как
linus.rb
и запустить сruby linus.rb
источник
BackPacker
Определяет игрока, который больше всего выбрал соответствующее меньшинство и выбирает свой последний голос.
CrowdFollower
Определяет игрока, который больше всех выбрал совпадающее большинство, и выбирает свой последний голос.
источник
goWithMajority = true
и одна, где егоfalse
. Это нормально, или мне нужно добавить второй BackPacker для этого?Предсказатель
Это все еще в стадии разработки. Я еще не проверял это. Я просто хотел посмотреть, считает ли ОП, что это нарушает правила или нет.
Идея состоит в том, чтобы смоделировать следующий раунд, выполнив несколько других участников, чтобы получить вероятность результата и действовать соответственно.
источник
C ++, Ученый
Этот пытается, с историей того, что большинство выбрало за раунд
wave
(majority()
дает выбор большинства на раунд), согласовать волну с данными, длиной волны2*period
и фазойphase
. Таким образом, учитывая, что0,1,1,1,0,1,0,1,1,1,0,0,0,1,0
он выбираетperiod=3, phase=5
(maxat=={3,5}
): его оценки становятся9 3 11 5 5 3 5 7 9 7 7 7 7 7 7
. Он зацикливается на все возможные периоды и, если для этого периода счет выше, чем для текущего максимума, он сохраняет,{period,phase}
для которого это произошло.Затем он экстраполирует найденную волну на следующий раунд и принимает предсказанное большинство.
Скомпилируйте с
g++ -O3 -std=c++0x -o Scientist Scientist.cpp
(вам не нужны предупреждения, поэтому нет-Wall
) и запустите сScientist.exe
(возможно, включая аргумент, конечно). Если вы спросите действительно хорошо, я могу предоставить вам исполняемый файл Windows.О, и не смей возиться с форматом ввода. В противном случае он будет делать странные вещи.
РЕДАКТИРОВАТЬ: Судя по всему, предыдущая версия исчерпала время около 600 раундов в игру. Это не должно делать это. Его время контролируется
#define WINDOW (...)
линией, больше медленнее, но смотрит назад.источник
Код бегун
Итак, чтобы было интересно, я создал скрипт, который автоматически загружает код из каждого опубликованного ответа, компилирует его при необходимости, а затем запускает все решения в соответствии с правилами. Таким образом, люди могут проверить, как у них дела. Просто сохраните этот скрипт в run_all.py (требуется BeautifulSoup) и затем:
Несколько вещей:
def submission_type(lang)
.CPPSubmission
). Тип языка извлекается из тега мета-кода< !-- language: lang-java -- >
, поэтому обязательно добавьте его, если хотите, чтобы ваш код запускался (удалите лишние пробелы до и после <>). ОБНОВЛЕНИЕ : теперь есть некоторый чрезвычайно простой вывод, чтобы попытаться обнаружить язык, если он не определен.blacklist.text
и будет удален из будущих испытаний автоматически. Если вы исправить код, просто удалить запись из черного списка и повторного запускаget
,Поддерживаемые в настоящее время языки:
Без дальнейших церемоний:
источник
Прекрасный разум, Рубин
Принимает решение на основе сомнительных шаблонов в битовом представлении последнего раунда
Беги как
источник
Piustitious, Луа
Суеверная программа, которая верит в Знамения и Чудеса.
запустить его с:
с последующим вводом.
источник
Винчестеры
Сэм и Дин хороши (большую часть времени).
источник
9:1
это правильное соотношение? Может быть, нам следует провести анализ данных и получить более точное соотношение?9:1
мне это кажется нормальным;)статистик
источник
Math.ceil(Math.random()-Math.random())
тебя тоже можно делать простоMath.round(Math.random())
.R, несколько байесовский бот
Используйте таблицу частот для каждого пользователя в качестве априорной вероятности вывода других пользователей.
Вызывается с помощью,
Rscript BayesianBot.R
а затем вводится.Изменить : просто чтобы уточнить, что это делает, вот пошаговый пример ввода:
Затем линия, начинающаяся с
result<-
, для каждого игрока выбирает случайным образом либо 0, либо 1, используя эту последнюю таблицу в качестве весов (т. Е. Для игрока 1 вероятность выбора 0 составляет 2/7, выбора 1 5/7 и т. Д.). Он выбирает один результат для каждого игрока / колонки и, наконец, возвращает число, которое закончилось как наиболее распространенное.источник
швейцарцы
Всегда поддерживает нейтралитет. Обречен никогда не побеждать.
источник
HAL 9000
Изменить: возможно, это больше подходит для HAL 9000, но будьте осторожны! Это очень зло. Я рекомендую
cd
очистить каталог перед его запуском.Не очень очевидный вызов:
В М $
В * nix
источник
Воля большинства
Сохраните как
WotM.py
, запустите какpython3 WotM.py
следует после ввода.Простая программа, просто чтобы посмотреть, как она будет работать. Идет с тем, что большинство говорило в прошлый раз, или иначе.
источник
Алан Ширер
Повторяет то, что только что сказал человек, с которым он сидит рядом. Если человек оказывается неправ, он переходит к следующему человеку и вместо этого повторяет то, что они говорят.
источник
lastRound
до того, как вы ее объявили. Кроме того, вы добавили круглые скобки ко всем своим,String.length
но это не функция. Можете ли вы получить ваше представление к точке, где оно будет компилироваться?lastRound.length
все еще доступен (в первом if) до того,lastRound
как объявлен (в этом случае if). Пожалуйста, попробуйте скомпилировать (и, возможно, запустить) свой код, прежде чем отправлять его здесь.Позже это зло, JavaScript ( node.js )
Измеряет количество времени между казнями. Если разница во времени больше, чем в прошлый раз, это должно быть зло. В остальном хорошо.
Бежать с:
node laterisevil.js
источник
Pattern Finder, Python
Ищет повторяющийся шаблон, и если он не может найти его, просто идет с большинством.
бежать с
источник
Отступник
Отступники считают, что из-за других участников боевых действий большинство после каждого раунда будет чередовать добро и зло чаще, чем на одной стороне. Таким образом, он начинает первый раунд с того, что произвольно переходит на сторону добра, а затем чередует каждый раунд в попытке остаться в выигрышной или проигравшей команде чаще, чем нет.
После написания этого я понял, что из-за записей, основанных на статистическом анализе, импульс заставил бы большинство переходить на другую сторону меньше, поскольку больше раундов было завершено. Отсюда и ленивый перебежчик.
Ленивый перебежчик
Ленивый перебежчик начинает, как перебежчик, но по мере прохождения раундов он становится все ленивее и ленивее переключаться на другую сторону.
источник
Биограф, Рубин
Моя попытка почти интеллектуального вступления (на самом деле интеллектуальный требовал тестирования на поле). Написано на Ruby, так что есть вероятность, что это будет слишком медленно, но на моем компьютере все равно требуется 0,11 секунды для расчета последнего раунда, когда в нем 40 случайных игроков, поэтому я надеюсь, что он будет работать достаточно хорошо.
сохранить как
biographer.rb
, запустить какruby biographer.rb
Идея состоит в том, что для каждого игрока он оценивает свои шансы на выбор «хорошо», рассматривая как свои собственные выборы за последние десять раундов, так и общие результаты, а также находя в прошлом случаи, когда были идентичные обстоятельства (их голоса + общее число). результаты) произошло. Он выбирает самую длинную длину взгляда за спину, до 10 раундов, так что есть какой-то прецедент, и использует ее для создания частоты (скорректированной в соответствии с Законом о наследовании Лапласа, чтобы мы никогда не были на 100% уверены ни в ком).
Затем он запускает некоторые симуляции и видит, как часто добро побеждает. Если моделирование получилось в основном таким же образом, то, вероятно, в общем случае прогнозирование будет успешным, поэтому будет выбрано предсказанное меньшинство. Если он не уверен, он выбирает предсказанное большинство.
источник
Иуда
Иуда действительно хороший человек. Жаль, что он предаст хороших парней за несколько копеек.
источник
,
ихhistory
, даже больше, так как Рашер собирается разделить игру на группы.Ложный Игрок (Питон)
Если одна сторона выиграла большинство раз несколько раз подряд, игрок понимает, что другая сторона с большей вероятностью станет большинством в следующем раунде (верно?), И это влияет на его голос. Он стремится к меньшинству, потому что, если он превратит это в меньшинство, однажды он может сделать это несколько раз (верно?) И получить много очков.
использование
Для первого раунда:
и потом:
источник
Сотовый Автомат
Это использует общепринятые правила игры жизни Конвея, чтобы выбрать сторону. Сначала создается 2D сетка из предыдущих голосований. Затем «мир» продвигается на одну ступень вперед и вычисляется общее количество оставшихся живых клеток. Если это число больше половины общего количества ячеек, выбирается «хорошо». В противном случае «зло» выбрано.
Пожалуйста, простите любые ошибки, это было разбито во время моего обеденного часа. ;)
источник
Хребет Профессор
Я надеюсь, что использование библиотек разрешено, не хочется делать это без одного =)
Основная идея состоит в том, чтобы обучить классификатор регрессии гребня для каждого участника в последних раундах, используя 30 результатов перед каждым раундом в качестве функций. Первоначально включал в себя последний раунд результатов для всех игроков, чтобы предсказать результат для каждого игрока, но это сокращало его довольно близко для времени, когда число участников увеличивается (скажем, 50 или около того).
Скомпилировать
Сохраните исходный код в файле с именем
ridge_professor.cc
, загрузите библиотеку Eigen и разархивируйте найденную внутри папку Eigen в ту же папку, что и исходный файл. Компилировать сg++ -I. -O3 -ffast-math -o ridge_professor ridge_professor.cc
.Бежать
вызовите ridge_profess.exe и предоставьте аргумент по мере необходимости.
Вопрос
Поскольку я пока нигде не могу комментировать, я спрошу здесь: не делает ли ограничение размера аргумента в окнах невозможным вызов конечных двоичных файлов со всей историей за несколько сотен оборотов? Я думал, что в аргументе не может быть больше ~ 9000 символов ...
источник
Crowley
Потому что винчестеры гораздо менее интересны без этого парня. Он явно встает на сторону зла ... если только ему не нужно заботиться о большем зле.
Я смотрю на последние два хода (0 запятых и 1 запятая), и если оба позволят злу победить, я проголосую за добро. В противном случае я голосую за зло.
источник