Cyclic Polyglot Challenge (Менты)


11

Cyclic Polyglot Challenge

Это нить ментов. Вы можете найти нить грабителей здесь .

Циклический полиглот

N-элементный циклический полиглот - это полная программа, которая может быть запущена на N разных языках. На каждом языке, когда программа запускается без ввода (возможно, с учетом этого исключения ), она должна напечатать название языка в STDOUT. В частности, если программа запускается на K-ом языке, она должна напечатать название (K + 1) -ого языка. Если программа запускается на N-м языке (то есть на последнем языке в цикле N-элемента), она должна напечатать название первого языка.

Пример может быть полезным.

a = [[ v = 7, puts('Befunge') ]]
__END__
= print("Ruby")
-->*+:292*++,,@
--3    9
--7    *
--^,:-5<

Запуск этой программы с Lua печатает строку "Ruby". При запуске этой программы в Ruby печатается строка «Befunge». При запуске этой программы в Befunge выводится строка «Lua», завершающая цикл. Эта программа состоит из 3 циклов, состоящих из Lua, Ruby и Befunge.

Один и тот же язык не может появляться дважды в цикле, и разные версии одного и того же языка (например, Python 2 и Python 3) не могут появляться в одном и том же цикле друг с другом.

Менты

Ваша задача состоит в том, чтобы написать N-циклический полиглот, где N не меньше 2. Затем вы должны добавить, заменить и удалить некоторое количество символов в программе, чтобы создать M-циклический полиглот, где M строго больше, чем N Затем вы должны опубликовать более короткий N-циклический полиглот (и языки, на которых он работает), а также количество символов, которые вы изменили для создания более длинного полиглота. Ваша оценка N, количество языков в вашем более коротком цикле.

Грабители попытаются определить ваш более длинный цикл. Если по истечении семи дней никто не смог успешно взломать ваше решение, вы должны отредактировать свой ответ, заявив, что это безопасно. Вы также должны опубликовать свой более длинный M-циклический полиглот в это время.

Грабители

Учитывая N-циклический полиглот полицейского и количество символов, которые они добавили для создания большего цикла полиглота, ваша цель - создать этот больший цикл. Если вы можете создать более длинный цикл, добавляя, удаляя или заменяя столько символов, сколько сделал полицейский, либо меньше символов , вы взломали полиглот полицейского. Ваша оценка - это длина нового цикла, который вы создали. Ваш новый полиглот не обязательно должен быть таким же или даже похожим на секретный полиглот полицейского; это только должно быть больше, чем их существующий.

Ваше решение также может быть взломано. Если приходит другой грабитель и производит цикл, который строго больше вашего, начиная с полиглота того же полицейского, они украли ваши очки.

Допустимые языки программирования

Поскольку эта задача косвенно включает в себя угадывание языков программирования, используемых другими участниками, определение языка программирования для целей этой задачи будет немного более строгим, чем обычное определение. Язык программирования, используемый в этой задаче, должен удовлетворять всем следующим условиям.

Финальные заметки

  • Код, который вы пишете, должен быть отдельной программой на каждом языке, на котором он предназначен. Функции или фрагменты кода не допускаются.
  • Ваша программа не будет вводиться через STDIN. Аналогично, ваша программа не должна ничего печатать в STDERR.
  • Оценка полицейского - это количество языков в цикле полиглота, который они разместили. Полицейский должен опубликовать языки, на которых корректно работает размещенный полиглот, а также количество символов, добавленных для создания более длинного полиглота. Они не несут ответственности за публикацию языков, на которых работает более длинный скрытый полиглот, пока их ответ не будет безопасным.
  • Оценка грабителя - это количество языков, на которых работает модифицированный полиглот. Как и в случае с копом, грабитель должен опубликовать список языков, на которых полиглот работает правильно.
  • Количество измененных символов должно быть рассчитано на расстоянии Левенштейна.

3
«В языке должен быть свободно доступный интерпретатор или компилятор. Извините, поклонники Mathematica, но грабители должны иметь возможность проверить ваше решение». Что не так с открытым облаком Wolfram? sandbox.open.wolframcloud.com
Скотт Милнер,

Я не знал об этом, потому что у меня есть локальная копия Mathematica на моем компьютере. Комментарий удален.
Сильвио Майоло

Это нормально для N = 2 и M = 3?
mdahmoune

Да, это нормально. Ваша оценка тогда будет просто 2, но это вполне приемлемо.
Сильвио Майоло

Ответы:


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.