Wiem, że to trochę za późno (i trochę wybrednie), ale ...
> <> (Ryba), 47 45 47 bajtów (naprawdę 43 45, jeśli nie użyłem losowego kierunku)
x"!tenalP ,sgniteerG"!|o|!"Greetings, Planet!"x
Te odpowiedzi są nieco inne; istnieje szansa na wykonanie dowolnego kierunku kodu .
Tak więc przez „drukowanie na konsolę” założyłem, że masz na myśli drukowanie na standardowe wyjście. To powoduje błąd; błąd jest zgłaszany do stderr PO wydrukowaniu łańcucha na standardowe wyjście.
Aby udowodnić, że działało to w obie strony, użyłem reżysera „losowy kierunek”, „x”. Ryba jest językiem dwuwymiarowym, więc bez względu na to, w którą stronę wskazuje reżyser, kod nadal (ostatecznie) zostanie wykonany.
Zakładając, że pierwszy reżyser wskazuje w prawo, znaki są ładowane do „stosu” w odwrotnej kolejności, a następnie drukowany jest odwrotność rewersu (lub zwykły tekst).
Zakładając, że oba dyrektory wskazują w lewo, znaki są ponownie ładowane do „stosu” w odwrotnej kolejności (ponieważ kod ładuje go do tyłu tutaj, kierunek jest w lewo), a następnie do tyłu do tyłu (lub tekst normalny) jest drukowany.
Jeśli losowy reżyser wskazuje w górę lub w dół, nie ma to znaczenia - ryba wie, że zapętla się do dolnej lub górnej części kodu, wskazując z powrotem na randomizator. W ten sposób będzie kontynuował pętlę z randomizatorami, dopóki nie wskaże do wewnątrz, w kierunku kodu do wykonania.
Z !|o|!
obu stron bit wykonuje następujące czynności:
!
pomija następną instrukcję (zawsze będzie pomijać |
)
|
jest odbłyśnikiem; wskazuje do wewnątrz z powrotem w kierunku o
.
o
wysyła bieżący element stosu do konsoli jako postać i usuwa go ze stosu.
Zasadniczo jest to sztuczka „dwa zwierciadła w łazience ściśnięte razem”, w której produkuję, dopóki nie będę już w stanie.
Teraz używa emoji kota. >o<
nieskończenie przekierowuje wyjście do wewnątrz, wciąż zgłaszając błąd, ale mogę uniknąć niepotrzebnego przeskoku w odbiciu.
Okazuje się, że miałem rację za pierwszym razem - druga próba nie była palindromiczna , ale była refleksyjna .
Ryba (bez drukowania do stderr), 64 Bytes (ew)
x"!tenalP ,sgniteerG"!;oooooooooooooooooo;!"Greetings, Planet!"x
Ten koleś jest trochę dłuższy.
Ma tę samą losową funkcję strzałki (aby udowodnić, że działa w obie strony) i nie drukuje na stderr.
Różnica tutaj jest oczywista; Dosłownie drukuję każdy element na stosie, a następnie kończę wykonanie za pomocą ;
.
Wykonanie !;
nie kończy się natychmiast, ponieważ !
pomija następny element (w tym przypadku kończy się exec) i trwa, dopóki nie trafi na drugą stronę, która działa jak ;!
, w którym kończy wykonywanie, zanim cokolwiek pominie.
Jest zgodny z tym samym losowym wzorem kierunkowym, co krótsza odpowiedź.