Escriba un programa para probar si una cadena es palindrómica, con la condición adicional de que el programa sea palindrómico.
code-challenge
palindrome
marcog
fuente
fuente
Respuestas:
Rubí
Imprime 1 si la entrada es un palíndromo, 0 si no lo es. Entrada sin salto de línea.
No usa ningún comentario, en su lugar usa 2 trucos:
0
es verdadero-ish en Ruby (solonil
yfalse
evaluar como falso), por1&&z==esrever.z* stup
lo que no se evalúa y, por lo tanto, no puede generar una excepción de tiempo de ejecución*
): para evitar un error de sintaxisz=esrever.z stup
, forzamos al analizador a analizar estoz=esrever.z()*stup
al agregar a*
. Por otro lado,*
se analiza como un operador splat, que en una llamada a la función divide una matriz en una serie de parámetros. Si solo hay un elemento en lugar de una matriz, básicamente no hace nada, por lo queputs *foo
es equivalente aputs foo
.Solución obvia usando comentarios (imprime verdadero / falso):
fuente
Python sin comentarios
Me sorprende que nadie haya encontrado ese truco todavía, ¡debería funcionar en la mayoría de los idiomas!
fuente
print
declaración y si permite que la entrada especificada entre comillasraw_input()
se acorteinput()
. Falta un '=' extra al comienzo."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$"
sin trucos de comentarios, solo abusando hábilmente del operador de sustitución (bueno, las variables perl también comienzan con $, ¿y qué?)
fuente
Python 2.7
fuente
do
Ejecutando ejemplo:
fuente
Golfscript
fuente
PHP
Hechos:
$z
string, la cadena de entrada para verificar$t
boolean, TRUE si la cadena de entrada$z
es palíndromo, FALSO de lo contrario$t
La razón por la cual no será posible implementar el verificador de palíndromo palindrómico en PHP es porque las variables de PHP se nombran comenzando con a
$
. No puede finalizar un nombre de identificador con$
en PHP.fuente
PHP
Utiliza algunos trucos extraños para evitar el
$
problema, técnicamente no es un palíndromo ya que tuve que introducirlo;
al final.Este es un trabajo que utiliza los
/* */
comentarios de PHP y el hecho de que no necesita el final para ellos.fuente
eval
debería serlave
.CoffeeScript
En realidad luché con la ortografía inversa de 'split', 'reverse' y 'join': \
fuente
Maravilloso
fuente
Python 3, 55 bytes
Utiliza un comentario, pero es más corto que el otro Python que utiliza comentarios.
fuente
Fuzzy Octo Guacamole , 17 bytes
No estoy seguro de cómo se define la victoria, pero puse el conteo de bytes en la parte superior.
^
obtiene la entrada y la empuja a la primera pila.C
copia la primera pila a la segunda.z
invierta la parte superior de la pila, de modo que "as" se convierta en "sa"..
desplaza la pila activa, de modo que la pila activa tiene la entrada y la inactiva tiene la entrada invertida.=
comprueba la igualdad, volviendo0
por la igualdad.i
invierte el ToS, entonces se0
convierte1
, y cualquier otra cosa se convierte prácticamenteFalse
._
aparece y establece la variable temporal que;
luego imprime.@
finaliza el programa manualmente, por lo que no golpea la parte invertida. Esto hace que el palíndromo.fuente
Javascript
Difícil hacerlo sin comentarios ...
fuente