Napisz program, aby sprawdzić, czy ciąg jest palindromiczny, z dodatkowym warunkiem, że sam program będzie palindromiczny.
code-challenge
palindrome
marcog
źródło
źródło
Odpowiedzi:
Rubin
Drukuje 1, jeśli wejście jest palindromem, 0, jeśli nie jest. Wejście bez podziału linii.
Nie używa żadnych komentarzy, zamiast tego używa 2 lew:
0
w Rubim jest prawdziwy (tylkonil
ifalse
oceniany jako fałszywy), więc1&&z==esrever.z* stup
nie jest analizowany, a zatem nie może zgłosić wyjątku czasu wykonywania*
): Aby uniknąć błędu składniowegoz=esrever.z stup
, zmuszamy parser do przeanalizowania tegoz=esrever.z()*stup
przez dodanie*
. Z drugiej strony*
parsowany jest jako operator splat, który w wywołaniu funkcji dzieli tablicę na szereg parametrów. Jeśli zamiast tablicy jest tylko jeden element, w zasadzie nic nie robi, więcputs *foo
jest równoważnyputs foo
.Oczywiste rozwiązanie z wykorzystaniem komentarzy (drukuje prawda / fałsz):
źródło
Python bez komentarza
Dziwi mnie, że nikt jeszcze nie znalazł tej sztuczki, powinna działać w większości języków!
źródło
print
instrukcję, a jeśli pozwolisz, aby dane wejściowe określone w cudzysłowachraw_input()
można było skrócićinput()
. Brakuje dodatkowego „=” na początku."a\"#;w==]1-::[w;)(tupni_war=w;";w=raw_input();w[::-1]==w;#"\a"
Perl
perl -nle "$s=$_ eq+reverse;print$s;s$tnirp;esrever+qe _$=s$"
bez sztuczek w komentarzach, po prostu sprytne nadużywanie operatora podstawienia (hej, zmienne perla też zaczynają się od $, więc co?)
źródło
Python 2.7
źródło
do
Przykład działania:
źródło
Golfscript
źródło
PHP
Fakty:
$z
ciąg wejściowy ciąg do sprawdzenia$t
wartość logiczna, PRAWDA, jeśli ciąg wejściowy$z
jest palindromem, w przeciwnym razie FAŁSZ$t
Powodem, dla którego nie będzie możliwe zaimplementowanie palindromowego kontrolera palindromów w PHP, jest to, że zmienne PHP są nazwane od
$
. Nie można zakończyć nazwy identyfikatora$
w PHP.źródło
PHP
Używa kilku dziwnych sztuczek, aby uniknąć tego
$
problemu, technicznie nie jest to palindrom, ponieważ musiałem podkraść się;
na końcu.Jest to działający, który wykorzystuje
/* */
komentarze PHP i fakt, że nie potrzebujesz dla nich końca.źródło
eval
powinien być pierwszy kodlave
.CoffeeScript
Właściwie walczyłem z odwrotną pisownią „split”, „reverse” i „join”: \
źródło
Groovy
źródło
Python 3, 55 bajtów
Używa komentarza, ale jest krótszy niż drugi Python, który używa komentarzy.
źródło
Fuzzy Octo Guacamole , 17 bajtów
Nie jestem do końca pewien, jak zdefiniowano wygraną, ale umieszczam bajt na górze.
^
pobiera dane wejściowe i wypycha je do pierwszego stosu.C
kopiuje pierwszy stos na drugi.z
odwróć górę stosu, aby „as” zmienia się w „sa”..
przesuwa aktywny stos, więc aktywny stos ma dane wejściowe, a nieaktywny ma dane odwrócone.=
sprawdza równość, wraca0
do równości.i
odwraca ToS, a więc0
staje się1
i wszystko inne staje się właściwieFalse
._
wyskakuje i ustawia zmienną temp, którą;
następnie drukuje.@
kończy program ręcznie, aby nie uderzył w odwróconą część. To sprawia, że palindrom.źródło
JavaScript
Trudno to zrobić bez komentarzy ...
źródło