Rebmu : 9 (con penalización) o 13 (sin)
La solución aburrida de Rebmu es 9 y lleva la pena palindrómica. Lo mostraré de todos modos "solo porque":
rnRVaVRnr
Usando el truco inmóvil de notar que las letras mayúsculas de las letras son palabras separadas, y la falta de una letra mayúscula principal significa que no estamos haciendo una palabra establecida, producimos cinco palabras comunes:
rn rv a vr nr
Que es una abreviatura para el código equivalente (también Rebmu legal):
return reverse a vr nr
El hecho de que vr y nr no tengan sentido no importa, porque a pesar de no estar asignados a nada son palabras válidas. Entonces el evaluador solo ejecuta el return reverse a
... funciona en ambos sentidos. Pero esto es análogo en cierto sentido al truco aburrido: el código no está comentado, pero está muerto y no se ejecuta en una ruta.
Para algo más emocionante que no incurre en la penalización, ¿qué tal esta solución de 13 caracteres:
a VR :rv AvrA
Veamos cómo se procesa esto en sus rutas hacia adelante y hacia atrás, cuando se expande. Adelante:
a ; evaluate a, as it is a string it has no side effects
vr: :reverse ; "set" vr to mean what a "get" of reverse means now
a: vr a ; assign a to calling "vr" on a, effectively reversing
; ^-- result of assign is last expression, the answer!
Al revés como ArvA vr: RV a
:
a: reverse a ; assign A to its reversal
vr: rv: a ; make the abbreviation vr equal to assignment of a to rv
; ^-- result of assign is last expression, the answer!
En el lado negativo, la variante hacia atrás está sobrescribiendo la abreviatura de reversa. Pero bueno, no es un palíndromo, y son solo 13 caracteres. :-)
(Nota: Esto supone que está ejecutando Rebmu en el modo / args, donde a es el argumento predeterminado para el programa pasado al intérprete en la línea de comando y usted acepta el resultado. Si leer desde la entrada estándar es realmente un requisito, las cosas crezca, por ejemplo, de 9 a 11 caracteres para la solución simple:. rnRVrArVRnr
Y si tiene que imprimir a la salida estándar desde el programa en lugar de aceptar la salida de expresión del intérprete, eso también agregaría un par de caracteres).
-1%#%1-/1
o-1%#%(0
?