Напишите некоторый код, который действует как программа cat. То есть ввести строку и вывести ее как есть. Но нормальная реверсия вашего кода должна выводить нормальную реверсию входной строки. И визуальная реверсия вашего кода должна выводить визуальную реверсию входной строки.
Обычное обращение - это обратная последовательность символов строки. Визуальная реверсия - это нормальная реверсия с ()[]{}<>
заменой символов )(][}{><
соответственно.
Вы можете использовать любую кодовую страницу, которая имеет символы ()[]{}<>
и опубликована перед этим испытанием, чтобы определить символы. Вы должны использовать одну и ту же кодовую страницу для всего своего кода. Ваш оригинальный код должен быть действительным в этой кодовой странице, и применение любого из ваших обращенных кодов должно привести к самому себе.
Это код-гольф , выигрывает самый короткий код в байтах.
пример
Для строки AB(XY)
ее нормальные и визуальные реверсии есть )YX(BA
и (YX)BA
соответственно.
Если ваш код (на гипотетическом языке) есть AB(XY)
, то код )YX(BA
и (YX)BA
должен выводить нормальное и визуальное реверсии входной строки соответственно. И AB(XY)
должен выступить в роли кошачьей программы.
источник
Ответы:
05AB1E , 16 байтов
Использует тот факт, что 05AB1E имеет предопределенную константу
"()<>[]{}"
и не влияет на визуальную реверсию.Код:
Объяснение:
Попробуйте онлайн!
Перевернутый:
Объяснение:
Попробуйте онлайн!
Визуально перевернуто:
Объяснение:
Попробуйте онлайн!
Использует кодировку CP-1252 .
источник
CJam, 21 байт
Проверьте это здесь.
Нормальная реверсия:
Проверьте это здесь.
Визуальная реверсия:
Проверьте это здесь.
объяснение
Сначала нормальный код:
Это просто:
q
считывает все вводимые данные,e#
комментирует оставшуюся часть программы и ввод неявно печатается в конце.Теперь нормальный возврат:
И наконец, визуальная реверсия:
источник
Haskell, 124 байта
Вперед:
Нормальный реверс:
Визуальный реверс:
Каждая версия определяет функцию,
f
которая принимает и возвращает строку. В режиме пересылкиf
- функция идентификацииid
, остальная часть кода - комментарий. В нормальном реверсивном режиме защита1<2
вf
томTrue
, чтоreverse
и применяется. В режиме визуального реверса<
переключатель включен,>
а защита -False
. Вторая защита - наоборот,True
в визуальном режиме, поэтому дополнительноq
применяется переключение "() <> {} []".Кроме того ,
<
и>
в гвардии, мой код не использует какое - либо из скобок, поэтому они не могут быть перепутаны.источник
Bash + общие утилиты Linux, 51
Нормальная реверсия:
Визуальная реверсия:
Основной трюк здесь заключается в том, что строка
()[]{}<>
закодирована как 691E97CA5D607DB5 (база 15). Результирующаяdc
команда даст тот же результат после любого вида реверсии. Однако'()[]{}<>'
строковый литерал чувствителен к типу обращения.tac
требуется для обратного порядка строк ввода иrev
требуется для обращения символов каждой строки. Любой вход ASCII должен быть приемлемым.источник
MATL,
26242216 байтВперед
Попробуйте онлайн!
Объяснение:
Нормальная реверсия:
Попробуйте онлайн!
Объяснение:
Визуальная реверсия:
Попробуйте онлайн!
Объяснение:
источник
()[]{}<>
заменой символов)(][}{><
соответственно.GolfScript,
3228 байтПопробуйте онлайн!
Нормальная реверсия:
Попробуйте онлайн!
Визуальная реверсия:
Попробуйте онлайн!
Тот факт, что непревзойденное
}
завершение программы в GolfScript, сделал это довольно просто. Тем не менее, я уверен, что мой код для замены скобок еще не оптимален.источник
Python 2,7, 208 байт
Вперед
Нормальная реверсия
https://eval.in/574639
Визуальная реверсия
https://eval.in/574638
Все направления читаются от стандартного до EOF.
Здесь нет ничего сверхумного. Завершающие комментарии для выполнения только прямого и обратного кода, а затем
exec
оператора в блоке try для обнаружения синтаксических ошибок для двух разных реверсий.источник