Этот вызов создан в честь моего первого эзотерического языка, Backhand !
Backhand - это одномерный язык с нелинейным потоком указателей. Указатель перемещается по три шага за раз, выполняя только каждую третью инструкцию.
Программа 1..1..+..O..@
добавит 1 + 1 и вывод 2 до завершения. Промежуточные инструкции пропущены, поэтому 1<>1()+{}O[]@
точно такая же программа.
Когда указатель собирается сойти с конца ленты, он вместо этого меняет направление и переходит в другую сторону, 1.@1.O+.
как и та же программа. Обратите внимание, что он считает команду завершения только один раз. Это позволяет нам сжимать большинство линейных программ, таких как1O+1@
Ваша задача здесь состоит в том, чтобы написать программу или функцию, которая принимает строку и выводит инструкции, которые были бы выполнены, если бы программа была интерпретирована как Backhand (вам не нужно обрабатывать какие-либо фактические инструкции Backhand). Вы должны выводить только до тех пор, пока указатель не окажется на последнем символе строки (после чего выполнение обычно будет идти назад).
Но подождите , это еще не все! Когда ваша программа интерпретируется таким образом, результирующий код должен вывести одно из следующих:
(Mostly) works
Turing complete
'Recreational'
(кавычки могут быть или'
или"
, но не оба)Perfectly okay
Only a few bugs
Например, если у вас есть исходный код code 2 backhand
, программа ce cankb od2ahd
должна вывести одну из этих фраз.
Тестовые случаи:
"1 1 + O @" -> "11+O@"
"1O+1@" -> "11+O@"
"HoreWll dlo!" -> "Hello World!"
"abcdefghijklmnopqrstuvwxyz" -> "adgjmpsvyxurolifcbehknqtwz"
"0123456789" -> "0369" (not "0369630369")
"@" -> "@"
"io" -> "io" (Cat program in Backhand)
"!?O" -> "!?O" (Outputs random bits forever in Backhand)
"---!---!" -> "-!-----!"
И справочная программа, написанная, конечно же, в Backhand ( это может быть немного глючно. Хорошо, я думаю, что я это исправил).
Правила.
- Стандартные лазейки запрещены
- Ввод первой программы будет содержать только ASCII для печати и переноса строк (то есть байты
0x20
-0x7E
так же как 0x0A) - Вы можете выбрать, будет ли ваша вторая программа преобразована из вашей первой байтами или символами UTF-8.
- Вторая программа:
- Дело не имеет значения, поэтому ваш вывод может быть,
pErFectLy OKay
если хотите. - Любое количество конечных / ведущих пробелов (перевод строки, табуляция, пробелы) также в порядке.
- Вторая программа должна быть того же языка, что и первая, но не обязательно того же формата (программа / функция)
- Я рад включить предложения из комментариев на дополнительные фразы (если они не слишком короткие)
- Дело не имеет значения, поэтому ваш вывод может быть,
- Так как это код-гольф , ваша цель - получить кратчайший ответ для вашего языка!
- Через две недели я присуду 200 наград за самый короткий ответ.
"---!---!"