Twoim zadaniem jest stworzenie programu, który drukuje „Pozdrowienia, Planeta!” dokładnie do konsoli. Wydaje się to dość proste, prawda? Cóż, oto sztuczka. Kod musi być palindromem, co oznacza, że odczytuje od prawej do lewej tak samo, jak w lewej do prawej. Standardowe luki NIE są dozwolone.
code-golf
restricted-source
hello-world
palindrome
lirtosiast
źródło
źródło
Hello, world!
iHello World!
są to jedyne dozwolone wyjścia dla programu hello-world .Odpowiedzi:
/// , 37 bajtów
źródło
TI-BASIC, 67 bajtów
Działa to, ponieważ ostatni wiersz programu jest wyświetlany na ekranie, podczas gdy pierwszy ciąg jest zasadniczo traktowany jako komentarz.
Każda mała litera jest przechowywana jako 2 bajty, a pozostałe znaki to 1 bajt. Gdybym naginał reguły i drukował wielkimi literami, byłoby to 41 bajtów :
źródło
e
ii
(liczb) w celu dalszego zmniejszenia liczby bajtów?Wiem, że to trochę za późno (i trochę wybrednie), ale ...
> <> (Ryba),
474547 bajtów (naprawdę4345, jeśli nie użyłem losowego kierunku)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 kierunkuo
.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)
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ź.
źródło
Bubblegum , 38 bajtów
źródło
Makaron 0,0,2 , 52 bajty
Rozwiązanie, które nie wykorzystuje komentarzy. (Głównie dlatego, że Macaroni nie ma komentarzy ...)
źródło
CJam, 41 bajtów
Dzięki Dennisowi za trzy bajty wyłączone.
źródło
Foo, 39 bajtów
Wypróbuj online.
źródło
!tenalP ,sgniteerG"Greetings, Planet!
oszczędza kilka bajtów.JavaScript, 56 bajtów
Może to działać w dowolnej przeglądarce.
źródło
print/tnirp
zalert/trela
, to działa w innych silnikach, too.alert`Greetings, Planet!`//`!tenalP ,sgniteerG`trela
ma 52 bajtyGolfScript, 41 bajtów
Spójrz, nie ma żadnych operacji! Wypróbuj online w Web GolfScript .
Druga połowa kodu źródłowego przechowuje ciąg w drugim ciągu.
wydrukuje
źródło
C ++, 129 bajtów
Próba zrobienia tego bez komentarzy doprowadziła mnie do głębokiego, mrocznego koszmarnego preprocesora, bez wyjścia, którego nie widziałem. Zamiast tego starałem się, aby było to jak najkrócej.
źródło
Python 3, 57 bajtów
Naprawiłem problem z nawiasami.
Python 2, 53 bajty
Wykorzystałem zaletę braku wymaganego nawiasu i spacji w Pythonie 2, ale nie było tak dużej różnicy.
źródło
Galaretka, niekonkurująca
25 bajtów Ta odpowiedź nie konkuruje, ponieważ wyzwanie poprzedza powstanie galaretki.
Spójrz, nie ma komentarzy! Wypróbuj online!
Jak to działa
źródło
Utknął , 41 bajtów
Dość podobny do odpowiedzi CJam, z wyjątkiem tego, że w przypadku zablokowania, jeśli wydano polecenie drukowania, automatyczne drukowanie stosu jest pomijane.
źródło
Mathematica, 52 bajty
Generuje również taki,
Null "!tenalP ,sgniteerG"[tnirP]
który nie jest drukowany.źródło
Echo
inv10.3
.Rozszczepienie ,
4543 bajtówDzięki jimmy23013 za oszczędność 2 bajtów.
Wypróbuj online!
R
inicjuje atom, który porusza się w prawo."
przełącza tryb łańcucha, który po prostu drukuje żądany ciąg do STDOUT przed uderzeniem;
, który niszczy atom i kończy działanie programu. Pierwsza połowa po prostu nigdy nie jest wykonywana.źródło
05AB1E , 16 bajtów
Kod:
Wyjaśnienie:
Wypróbuj online!
źródło
STATA, 52 bajty
di "Greetings, Planet!"//"!tenalP ,sgniteerG" id
Nieco dłuższa (53 bajtowa) wersja, która nie używa komentarzy, to:
#d [something]
zmienia ogranicznik (początkowo znak powrotu karetki) na,;
chyba że [coś] jestcr
, więc pierwsze polecenie zmienia ogranicznik na;
, drugie wypisuje ciąg, a trzeci (który trwa do końca) najwyraźniej nie, chociaż nie mam pomysł dlaczego. Domyślam się, że spowoduje to błąd (nierozpoznane polecenie „! TenalP, sgniteerG” lub coś takiego), ale najwyraźniej nie.źródło
Japt , 29 bajtów
Ten język programowania został utworzony po opublikowaniu pytania, ale nie został stworzony dla tego pytania.
Wypróbuj online!
Każdy z nich
?
jest niedrukowalnym charakterem Unicode: odpowiednio U + 0082, U + 000F, U + 000F i U + 0082.Ciekawostka: gdyby Japt został opublikowany miesiąc wcześniej, legalnie wygrałby to wyzwanie.
źródło
APL, 41 bajtów
W APL drukowana jest ostatnia wartość, a znak lampy (⍝) rozpoczyna komentarz.
źródło
GolfScript , 41 bajtów
Wypróbuj online!
źródło
TCL, 80 bajtów
wyjaśnienie: TCL wykonuje globalny proc,
unknown
gdy napotka wywołanie niezdefiniowanej komendy, pierwsza linia redefiniuje procedurę na prosty program „hello world”.Reguły cytowania TCL są dość subtelne, nawias otwierający rozpoczyna cytowane słowo, które rozciąga się na następny pasujący nawias klamrowy, umożliwiając zagnieżdżanie cytowanych słów. Nawiasy klamrowe są inaczej traktowane jak normalne znaki. pięć słów:
}"!dlroW olleH"
,stup{
,sgra
,nwonknu
icorp
. Żadna z nazwanych komend}"!dlroW olleH"
nie została zdefiniowana, dlategoundefined
zamiast tego wywoływany jest proc z pierwszego wiersza.Podobne pytanie postawiono na StackOverflow starożytności; który został później zamknięty i usunięty. Użyłem mojego rozwiązania jako języka w policzkowej próbce TCL w tej odpowiedzi i teraz otrzymuję komentarze z prośbą o wyjaśnienie, więc odtwarzam tutaj swoją odpowiedź.
źródło
Beczka , 41 bajtów
Wypróbuj online!
źródło
Vitsy , 41 bajtów
Ten język programowania został utworzony po opublikowaniu pytania, ale nie został stworzony dla tego pytania.
Przez
Z
bohatera Wyjścia wszystko w stosie na standardowe wyjście.Wypróbuj online!
źródło
Unefunge 98 - 49 bajtów
Powyższy kod zawiera dwa niedrukowalne znaki z kodem 17 (kontrola urządzenia 1) reprezentowanym przez
<DC1>
.źródło
MSM , 73 bajty
Pierwsza połowa tuż przed środkiem
,
tworzy odwrócony ciąg powitania, w tym dodatkowyG
po prawej stronie. Środek,
upuszcza go, a reszta to kanoniczny program „Hello / Greeting / cokolwiek”. Potrzebne są dodatkowe znaki na obu końcach, ponieważ wiadomość zawiera znak,
. Lewy jest wykonywany i upuszczas
. Zarówno,
is
potrzebne zastępstwo dla lewego kropek konkatenacji, stądG
ów. Prawa,
strona nie jest wykonywana, ale wbudowana w ostatni ciąg.źródło
CoffeeScript, 53 bajty
Podobnie jak Ruby i Lua i prawie wszystkie warianty tutaj.
źródło
Rubinowy, 43 bajty
źródło
Bash,
5248 bajtówDziała również w ksh, zsh, yash, dash. Ale nie tcsh.
źródło
Lua, 52 bajty
W terminalu Lua jest to tylko 44 bajty
źródło
=
w terminalu, więc jest tam 2 bajty. Myślę, że istniał w 2015 roku, nie jestem pewien.Droga Mleczna 1.5.10 ,
434139 bajtówWyjaśnienie
Stosowanie
źródło