Ecrivez un programme pour tester si une chaîne est palindromique, avec la condition supplémentaire que le programme soit lui-même palindromique.
code-challenge
palindrome
marcog
la source
la source
Réponses:
Rubis
Imprime 1 si l'entrée est un palindrome, 0 si ce n'est pas le cas. Entrée sans saut de ligne.
N'utilise aucun commentaire, mais utilise 2 astuces:
0
true-ish en Ruby (seulementnil
etfalse
évalué à false),1&&z==esrever.z* stup
n'est donc pas évalué et ne peut donc pas déclencher d'exception d'exécution*
): Pour éviter une erreur de syntaxez=esrever.z stup
, nous forçons l'analyseur à l'analyserz=esrever.z()*stup
en ajoutant un*
. De l'autre côté, l'*
opérateur est analysé comme un opérateur splat qui, dans un appel de fonction, divise un tableau en une série de paramètres. S'il n'y a qu'un seul élément au lieu d'un tableau, cela ne fait fondamentalement rien, doncputs *foo
équivaut àputs foo
.Solution évidente à l'aide de commentaires (affiche vrai / faux):
la source
Python sans commentaire
Je suis surpris que personne n'ait encore trouvé ce truc, il devrait fonctionner dans la plupart des langues!
la source
print
énoncé et, si vous autorisez l’entrée spécifiée entre guillemets,raw_input()
peut être abrégéinput()
. Il manque un extra '=' au début."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$"
pas de commentaires astucieux, juste abuser intelligemment de l'opérateur de substitution (hé, les variables perl commencent par un $ aussi, alors quoi?)
la source
Python 2.7
la source
C
Exemple en cours d'exécution:
la source
Golfscript
la source
PHP
Les faits:
$z
string, la chaîne d'entrée à vérifier$t
boolean, TRUE si la chaîne d'entrée$z
est palindrome, FALSE sinon$t
La raison pour laquelle il ne sera pas possible d’implémenter le vérificateur de palindrome palindrome en PHP c’est parce que les variables PHP sont nommées en commençant par a
$
. Vous ne pouvez pas terminer un identifiant avec$
PHP.la source
PHP
Utilise quelques astuces étranges pour éviter le
$
problème, techniquement, ce n’est pas un palindrome, car j’ai dû me faufiler;
à la fin.C’est un système qui utilise les
/* */
commentaires de PHP et le fait que vous n’avez pas besoin de la fin.la source
eval
devrait êtrelave
.CoffeeScript
En fait, j'ai eu du mal avec les orthographes inversées de 'split', 'reverse' et 'join': \
la source
Sensationnel
la source
Python 3, 55 octets
Utilise un commentaire, mais est plus court que l’autre Python qui utilise des commentaires.
la source
Fuzzy Octo Guacamole , 17 octets
Je ne sais pas exactement comment la victoire est définie, mais j'ai mis le nombre d'octets en haut.
^
obtient l'entrée et la pousse à la première pile.C
copie la première pile dans la seconde.z
inverser le haut de la pile, de sorte que "comme" devienne "sa"..
décale la pile active, de sorte que la pile active ait l'entrée, et l'inactive, l'entrée inversée.=
vérifie l'égalité, retourne0
pour l'égalité.i
Inverse le ToS, ainsi0
devient1
, et toute autre chose devient pratiquementFalse
._
apparaît et définit la variable temp qui est;
ensuite imprimée.@
termine le programme manuellement pour ne pas toucher la partie inversée. Cela rend le palindrome.la source
Javascript
Difficile de le faire sans commentaires ...
la source