В отличие от многих проблем C & R, это не требует отдельной должности грабителей; цель грабителей состоит в том, чтобы взломать предыдущий ответ и затем опубликовать новый как полицейский.
Как ответчики, вы напишите серию полиглотов, которые выглядят следующим образом (каждый столбец является языком, а каждая запись является выходом ответа на этом языке):
Language: 1 2 3 4 5 6 7 8 ...
Answer 1: 0 1 2
Answer 2: 1 2 3
Answer 3: 2 3 4
Answer 4: 3 4 5
Answer 5: 4 5 6
Answer 6: 5 6 7
...
(пробелы означают, что в этом случае поведение не требуется).
Каждый ответ должен работать на 3 -х языках и печать 3 различных последовательных номеров, каждый из которых один больше , чем цифры , напечатанных предыдущим ответом (первый ответ печатает 0
, 1
и 2
). Каждый ответ использует два языка из предыдущего представления и третий новый язык. Ответчик должен попытаться запутать, что это за третий язык.
Чтобы опубликовать новый ответ, вы должны:
- Взломайте самый последний ответ, найдя его третий язык.
- Желательно добавить объяснение крэка и сообщить автору ответа. После того, как ваша заявка была взломана, вы также должны добавить объяснение.
- Напишите полиглот, состоящий из второго и третьего языков этого ответа, а также другого языка по вашему выбору. Покажите свои первые два языка, но не раскрывайте свой новый. Следующей целью постера будет найти этот язык (или любой другой язык, на котором он работает), поэтому вы должны попытаться запутать его.
Характеристики
Критерии допустимого языка программирования такие же, как и в Викторине по языку программирования Mark II - Cops :
- Он имеет статью английской Википедии , в esolangs статью или статью Rosetta код в то время эта проблема была размещена, или на попробовать Интернет! , Наличие переводчика, связанного на любой из этих страниц, делает его полностью легальным.
- Он должен удовлетворять нашим правилам относительно того, что составляет язык программирования .
- У него должен быть бесплатный переводчик (как в пиве). Бесплатно здесь означает, что любой может использовать программу, не платя за это.
Каждый ответ должен выполняться менее чем за минуту на приемлемом ПК.
- Вы можете повторно использовать языки программирования, но между ними должно быть как минимум два ответа (поэтому отдельный ответ не может повторно использовать язык).
- Взлом представления состоит из поиска любого языка программирования, который печатает правильный результат, а не только предполагаемый. Если отправка выполняется на каком-либо языке, который не был объявлен или признан работоспособным, не требуется никаких действий.
- Вы не можете публиковать дважды (или более) подряд.
Критерий победы
Победным ответом является тот ответ, который понадобился большинству времени для взлома. Задача никогда не закончится, поэтому всегда возможно, что победивший ответ изменится.
источник
Ответы:
Гексагония, Кляйн (101) и ???
Это печатается
7
в гексагонии ,8
в Кляйне (101) и9
в ???.9
Не работает , если новая строка добавляется в конце кода. Будьте осторожны, если вы проводите локальное тестирование.Редактировать: 20-ти часовой концерт - это уже рекорд, так что теперь я дам несколько советов. (Также, потому что рассматриваемый язык - IMO, еще не известный.)
Советы
9
Не работает , если новая строка добавляется в конец» является очень важным, как и первые два пространства (которые игнорируются как Hexagony и Klein).v
команда завершает программу.Пояснение ( взломанный пост )
В исходном коде
Соответствующие инструкции в Кляйне (101):
Klein - это подобный веселью 2D-язык, где пересечение границы области кода (которая является квадратом) зависит от топологии Klein.
/
и\
являются зеркалами.IP начинается в верхнем левом углу, направленном вправо. Он встречает зеркало по направлению к верхней границе и снова входит в область кода с правой стороны, как показано выше. Затем он снова попадает в зеркало, 8 толкается, а затем (после прохождения границы несколько раз) останавливается на
@
. Затем содержимое стека печатается на стандартный вывод, который является единственным 8.источник
Befunge-96, шестиугольник и ???
Это печатает
6
в Befunge-96 ,7
в шестиугольнике и8
в неверном .объяснение
Код шестиугольника, когда «предварительно подтверждено»:
Путь казни начинается в левом верхнем углу в восточном направлении. Верхний ряд мало что делает.
-
изменяет текущий край памяти так, чтобы значение в нем было0
. Выполнение продолжается в восточном направлении в среднем ряду, где7!
загружается7
текущий край памяти и печатается как целое число.[
изменяет указатель инструкции на северо-восток, начиная с7
. После того, как7+3
выполнение затем достигает[
который изменяет указатель команд на Северо - Запад , начиная в углу Юго - Восточной. Наконец путь,..@
где@
заканчивается программа.источник
Луа, блядь, ???
Отпечатки 3 в Lua, 4 в Brainfuck и 5 в ???.
Пояснение к взломанному посту :
3--(-1)
это 2, поэтомуprint(f)
печатает 2 (другие вещи не нужны)--
снова комментарий, так3--(-1)
же просто 3, поэтомуprint(f)
печатает 3 (другие вещи опять не нужны).
выводит символ 52, который равен 4.источник
Триггер , JavaScript и ???
Печать
11
в триггере ,12
в JavaScript и13
вREDACTED
.Так как это не было взломано дольше, чем любой другой ответ, вот несколько подсказок:
Т
ие
в первой строке - многобайтовые символы.[ //
и\\ ][ //
нет опс.-²52
мертвый код.²6
образует бесконечный цикл.²
, вместе с6
, образует бесконечный цикл./!'!/
объяснение
Ну, это заняло некоторое время, чтобы взломать. Давайте посмотрим, как выглядит код:
Это означает, что, хотя многие доступные эмуляторы ведут себя правильно, реализация по правилам связана со вторым предложением на странице Википедии . Конечно, он не может быть запущен напрямую на обычном ПК, но я нашел эмулятор Emma 02, связанный с VIP-страницей COSMAC, для лучшей работы.
источник
Python 2, Python 3, ???
Это печатает 1 в Python 2, 2 в Python 3 и 3 в ???.
Crack объяснение (Cracked post) :
0
: C: Первая строка определяет функционально-подобный макрос,print
который игнорирует свой единственный аргумент и оценивает егоmain(){puts("0");}
, как полную программу, которая печатает0
и завершает работу. Целое выражение1+bool(1/2)
игнорируется, когдаprint( )
макрос во второй строке раскрывается вmain(){puts("0");}
.1
: Python 2: первая строка - комментарий.1/2
использует целочисленное деление в Python 2, давая 0. Это значение затем интерпретируется как логическое (bool(0)
->False
), затем добавляется к1
(1+False
->1
) и затем печатается.2
: Python 3: первая строка - комментарий.1/2
использует деление с плавающей точкой в Python 3, давая 0,5. Это значение затем интерпретируется как логическое (bool(0.5)
->True
), затем добавляется к1
(1+True
->2
) и затем печатается.источник
JavaScript , CHIP-8 и ???
12
в JavaScript ,13
в CHIP-8 и14
в ???Я собираюсь выйти на конечность и назвать ее сломанной, хотя я не могу заставить ее работать, я уверен в языке (который, кажется, то, что требуют правила).
Вот несовершенное объяснение взломанного поста
Код в шестнадцатеричном "is" (я мог бы быть немного не так):
Вы можете перейти сюда , нажать «Бинарные инструменты» и вставить его в поле байтового массива. Нажмите «Декомпилировать».
Ключевые элементы кода: инструкции, указывающие, где находится «число»,
sprite
команда, которая печатает число, правильное количество мусора здесь и там, и следующее:Чтобы увидеть, что это означает, вы можете нажать «Редактор спрайтов» и вставить эти шестнадцатеричные числа в поле под ним. Вы увидите ответ:
Я почти уверен, что вы можете положить все, что вам нравится, в конце, и результат CHIP-8 не изменится, отсюда и новая запись.
Я был бы рад, если бы кто-то смог сделать это полностью работоспособным, а не «доказательством» ответа, который я дал здесь.
источник
C, Python 2, ???
Это печатает
0
в C,1
в Python 2 и2
в ???.Это будет очень легко взломать для людей, которые знают Python, но я хотел начать с других ответов. Последующие ответы должны попытаться запутать третий язык (я этого не делал).
источник
Питон 3, Луа, ???
Печатает 2 в Python 3, 3 в Lua и 4 в ???.
Пояснение к взломанному посту :
источник
> <>, Befunge-96 и ???
Это печатает 5 в
><>
, 6 вBefunge-96
и7
в ???.Я знаю, что предполагаемое решение было Befunge-93, но я не мог удержаться.
Объяснение:
Befunge-96 идет по тому же пути, что и
><>
, но игнорирует неизвестные инструкции, заканчивая тем, что прибавляет единицу к 5 и умножает ее на 9, чтобы получить 54, код ascii для6
.источник
Комментатор , Битник , ???
Выходы 15 в Комментаторе , 16 в Битнике и 17 на одном, надеюсь, языке, который вы должны найти.
Хорошо, время подсказки:
источник
fn main()
среди прочего), но на самом деле он не работает в Rust (explicit lifetime required in the type of 's'
), ни в TIO, ни в другом интерпретаторе, который я нашел. И я не могу найти другой язык, который используетfn
в качестве идентификатора функции.Brainfuck,> <> и ???
Отпечатки
4
в Brainfuck,5
в> <> и6
в ???v
перенаправляет поток программы вниз.n
Является п umeric выхода.;
заканчивается исполнение.источник
Кляйн (101), Z80Golf, ???
Отпечатки
8
в Кляйне (101) ,9
в Z80Golf и10
в ??? ,источник
Битник , Руст , ???
Это печатает 16 в Beatnik, 17 в Rust и 18 в ???.
�
в строке 4 должен быть заменен символом ASCII 18 (это не было сделано в ссылках TIO, поскольку он не имеет отношения ни к одному из них).Пояснение ( треснуло ):
Язык предыдущего ответа был Rust: в частности, Rust скомпилирован с mrustc . mrustc - экспериментальный компилятор, так как он в основном предназначен для начальной загрузки действительной версии
rustc
, он игнорирует проверку заимствований и проверку на изменяемость, позволяя фрагменту кода @ NieDzejkob компилироваться без ошибок.Эта программа будет работать с обычным компилятором Rust, поэтому вам не нужно устанавливать mrustc для его тестирования.
Советы
Поскольку этот ответ стал самым длинным без взлома, я оставлю подсказку и продолжу делать это регулярно, пока он не взломан:
�
Характер отвлекающий маневр и имеет очень мало значения. Большая часть байтов может быть заменена на место, и программа все равно будет работать.источник
@
,P
,{
илиm
начинает буквенный символ и что - то потом печатает его в десятичной элемент кода, но это не объясняет все++
с ...Z80Гольф , Сомма , ???
Это печатает 9 в Z80Golf , 10 в Сомме и 11 в ??? ,
Благодарим Bubbler за то, что он взломал предыдущий пост как Somme, который в качестве инструкции принимает сумму в столбце. Первые три столбца оценивают как
Который нажимает 10, печатает его и выходит.
источник
Сомма , Триггер и ???
Это печатает
10
в Сомме ,11
в Триггере , и12
в ???.Поскольку последние два языка легко полиглотировать, я решил смешать этот язык .
Пояснение ( взломанный пост )
Триггер видит весь код как серию токенов (токенизация жадная):
A
)AAB
)AAA
)AAAA
)В исходном коде
значительными токенами являются те
((1
11+
111
111
, где первые два ничего не делают, а последние два отпечатка по 1 каждый - таким образом, 11.источник
ЧИП-8 , Кляйн (100) , ???
Выходы 13 в ЧИП-8 (я полагаю), 14 в Кляйне и 15 в ???.
Другая топология Клейна, тск тск. Я сохранил код до
@
, так как я не знаю, что повлияет на CHIP-8.Улики
Я немного запоздалый, извини. Я постараюсь добавить один в день.
not
S иsay
могут быть удалены без влияния на программуДля справки, программа без этого выглядит так:
Попробуйте онлайн!
источник
1
и строку, которая составлена из первой строки и выходит «это не значение» и отбрасывает их, update будет concat, хотя у меня есть оператор для этого, но concat работает с символами и числами, а также со строками, где as+
обрабатывает их как числа ). Но было очень жутко звучать так: «Интересно, что ... о боже, это можно было бы оставить без изменений и стать следующей записью ... если бы я только знал язык ...»Кляйн (100), комментатор , ???
Выходы 14 в Кляйне (100) , 15 в Комментаторе , 16 в ???.
Я серьезно плох в запутывании полиглотов.
Пояснение ( треснувший пост )
В Commentator важными командами являются общие токены комментариев и пробелы, а любые другие символы игнорируются.
<#
делает XOR 1 на текущей ячейке памяти.%
используется для сброса текущей ячейки памяти на ноль.Подождите, есть 16 пробелов после
%
, что случилось?На самом деле это небольшая ошибка (или особенность?) В интерпретаторе.
/
рассматривается как начало команды с двумя символами, поэтому пространство после нее используется. Но/<space>
это неопределенная команда (таким образом, no-op), поэтому пространство эффективно пропускается.источник