Schreiben Sie ein Programm, um zu testen, ob eine Zeichenfolge palindrom ist, mit der zusätzlichen Bedingung, dass das Programm selbst palindrom ist.
code-challenge
palindrome
marcog
quelle
quelle
Antworten:
Rubin
Gibt 1 aus, wenn die Eingabe ein Palindrom ist, und 0, wenn dies nicht der Fall ist. Eingabe ohne Zeilenumbruch.
Verwendet keine Kommentare, sondern zwei Tricks:
0
Ist in Ruby wahr (nurnil
und wirdfalse
als falsch ausgewertet), wird also1&&z==esrever.z* stup
nicht ausgewertet und kann daher keine Laufzeitausnahme auslösen*
): Um einen Syntaxfehler in zu vermeidenz=esrever.z stup
, erzwingen wir, dass der Parser dies analysiert,z=esrever.z()*stup
indem wir a hinzufügen*
. Auf der anderen Seite wird das*
als Splat-Operator analysiert, der in einem Funktionsaufruf ein Array in eine Reihe von Parametern aufteilt. Wenn es nur ein Element anstelle eines Arrays gibt, tut es im Grunde nichts undputs *foo
ist äquivalent zuputs foo
.Offensichtliche Lösung mit Kommentaren (druckt wahr / falsch):
quelle
Python ohne Kommentar
Ich bin überrascht, dass noch niemand diesen Trick gefunden hat, er sollte in den meisten Sprachen funktionieren!
quelle
print
Anweisung fallen lassen und wenn man die in Anführungszeichen gesetzten Eingaben zulässt,raw_input()
kann auf gekürzt werdeninput()
. Am Anfang fehlt ein zusätzliches '='."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$"
Keine Kommentar-Tricks, nur geschickter Missbrauch des Substitutionsoperators (hey, Perl-Variablen beginnen auch mit einem $, na und?)
quelle
Python 2.7
quelle
C
Laufendes Beispiel:
quelle
Golfscript
quelle
PHP
Fakten:
$z
string, die zu überprüfende Eingabezeichenfolge$t
Boolescher Wert, TRUE, wenn die Eingabezeichenfolge$z
palindrom ist, andernfalls FALSE$t
Der Grund, warum es nicht möglich sein wird, palindromic palindrome checker in PHP zu implementieren, liegt darin, dass PHP-Variablen mit einem beginnend benannt werden
$
. Sie können einen Bezeichnernamen nicht mit$
in PHP beenden .quelle
PHP
Benutzt einige seltsame Tricks, um das
$
Problem zu umgehen , technisch gesehen ist es kein Palindrom, da ich mich;
am Ende einschleichen musste .Dies ist eine funktionierende, die PHP-
/* */
Kommentare und die Tatsache verwendet, dass Sie das Ende für sie nicht brauchen.quelle
eval
seinlave
.CoffeeScript
Ich kämpfte tatsächlich mit der umgekehrten Schreibweise von 'split', 'reverse' und 'join': \
quelle
Groovy
quelle
Python 3, 55 Bytes
Verwendet einen Kommentar, ist aber kürzer als der andere Python, der Kommentare verwendet.
quelle
Fuzzy Octo Guacamole , 17 Bytes
Ich bin mir nicht ganz sicher, wie der Gewinn definiert ist, aber ich habe die Byteanzahl nach oben gesetzt.
^
Ruft die Eingabe ab und schiebt sie zum ersten Stapel.C
kopiert den ersten Stapel in den zweiten.z
kehren Sie die Oberseite des Stapels um, so dass "as" zu "sa" wird..
verschiebt den aktiven Stapel, so dass der aktive Stapel den Eingang und der inaktive den umgekehrten Eingang hat.=
prüft auf Gleichheit, kehrt0
auf Gleichheit zurück.i
invertiert den ToS,0
wird also1
, und alles andere wird so ziemlichFalse
._
Pops und legt die Temp-Variable fest, die;
dann gedruckt wird.@
Beendet das Programm manuell, damit es den umgekehrten Teil nicht berührt. Dies macht das Palindrom.quelle
Javascript
Schwer zu machen ohne Kommentare ...
quelle