Я знаю, что это немного поздно (и немного привередливо), но ...
> <> (Рыба), 47 45 47 байт (на самом деле 43 45, если я не использовал случайное направление)
x"!tenalP ,sgniteerG"!|o|!"Greetings, Planet!"x
Эти ответы немного отличаются друг от друга; существует вероятность выполнения любого направления кода .
Итак, под «печатью на консоль» я предположил, что вы имели в виду печать на стандартный вывод. Это выдает ошибку; ошибка выводится в stderr ПОСЛЕ того, как строка выводится на стандартный вывод.
Чтобы доказать, что это сработало в обоих направлениях, я использовал «случайное направление» режиссера «х». Fish - это двумерный язык, поэтому, независимо от того, куда указывает директор, код все равно будет (в конечном итоге) выполняться.
Предполагая, что первый директор указывает вправо, символы загружаются в «стопку» в обратном порядке, затем печатается обратная сторона реверса (или обычный текст).
Предполагая, что оба директора указывают налево, символы снова загружаются в «стек» в обратном порядке (потому что код загружает его в обратном направлении, направление влево), затем происходит обратное обратное (или нормальный текст) печатается.
Если рандомизированный директор указывает вверх или вниз, это не имеет значения - рыба знает, что зацикливается на нижней или нижней части кода, указывая на рандомизатор. Таким образом, он продолжит цикл с рандомизаторами, пока не будет направлен внутрь, к коду для выполнения.
С !|o|!
обеих сторон бит выполняет следующее:
!
пропускает следующую инструкцию (всегда пропускает |
)
|
является отражателем; это указывает внутрь назад к o
.
o
выводит текущий элемент стека на консоль как символ и удаляет его из стека.
Так что, по сути, это трюк «два зеркала в ванной прижаты друг к другу», когда я выхожу, пока не могу больше.
Теперь с помощью кошки смайликов. >o<
перенаправляет вывод внутрь бесконечно, все еще выбрасывая ошибку, но я могу обойтись без использования пропуска в отражении.
Оказывается, я был прав с первого раза - вторая попытка не была палиндромной , но она была рефлексивной .
Рыба (без печати на stderr), 64 байта (ов)
x"!tenalP ,sgniteerG"!;oooooooooooooooooo;!"Greetings, Planet!"x
Этот чувак немного дольше.
Он имеет ту же функцию рандомизированной стрелки (чтобы доказать, что она работает в обоих направлениях) и не печатает в stderr.
Разница здесь очевидна; Я буквально распечатываю каждый элемент в стеке, а затем заканчиваю выполнение кнопкой ;
.
Операция !;
не завершает выполнение немедленно, так как !
пропускает следующий элемент (в данном случае end exec) и продолжается до тех пор, пока не достигнет другой стороны, которая действует так ;!
, что завершает выполнение, прежде чем что-либо пропустить.
Он следует той же схеме случайного направления, что и более короткий ответ.