Escriba un programa corto para el algoritmo 196 . El algoritmo comienza desde un número entero, luego le agrega su reverso hasta que se alcanza un palíndromo.
p.ej
input = 5280
5280 + 0825 = 6105
6105 + 5016 = 11121
11121 + 12111 = 23232
output = 23232
Entrada
un número entero, que no es un número de lyrchrel (es decir, eventualmente produce un palíndromo bajo este algoritmo, en lugar de continuar infinitamente)
Salida
el palíndromo alcanzó.
code-golf
palindrome
Eelvex
fuente
fuente
Respuestas:
APL (22 caracteres)
Esto funciona en Dyalog APL. Aquí hay una explicación, de derecha a izquierda:
{ ... }⍞
: Obtenga la entrada del usuario como caracteres (⍞
) y aliméntelo a nuestra función ({ ... }
).⋄
separa las declaraciones, por lo que las miramos de izquierda a derecha):a≡⌽a←⍕(⍎⍵)+⍎⌽⍵ : a
: Evalúe (⍎
) el argumento correcto (⍵
) reverse (⌽
), y agregue eso a la versión evaluada del argumento correcto en sí. Luego, formatee el resultado (⍕
; es decir, dé su representación de caracteres), asígnele (←
) eso a la variablea
, y finalmente pruebe sia
el reverso es equivalente aa
(es decir, ¿esa
un palíndromo?). Si es cierto, regresea
; de otra manera...∇a
: Retroalimentea
nuestra función (∇
es una referencia propia implícita).Ejemplo:
fuente
{⍵=A←⍎⌽⍕⍵:⍵⋄∇A+⍵}⎕
. Guarda las llaves, un reverso y una evaluación.GolfScript, 29 caracteres
Comentario seleccionado
La carne del programa es el
do
ciclo, por supuesto. Así que solo cubriré eso..`
copia el número y lo stringifica..-1%
copia esa versión de cadena y la invierte..@
copia la versión invertida y trae la versión original no invertida al frente.Así, por ejemplo, el número es 5280. En esta etapa, la pila es:
5280 "0825" "0825" "5280"
. El escenario está preparado para la comparación. (Después de la comparación, la pila se dejará en5280 "0825"
cualquier lugar --- los elementos para comparar se han eliminado).;
) y devuelva 0 (para finalizar eldo
ciclo).~
) la cadena invertida (para convertirla en un número), agregue (+
) eso al número original y devuelva 1 (para continuar eldo
ciclo).fuente
Python 2, 55 bytes
Siguiendo la sugerencia de JPvdMerwe:
Python 2, 62:
fuente
n
como int puede acortar 6 caracteres, verifique el código: meta.codegolf.stackexchange.com/q/75/62Ruby - 56 caracteres
fuente
Solo ejercito mis habilidades de Pyth, no un contendiente serio
Pyth, 16 bytes
Equivalente a Python 3:
fuente
J 25
2731fuente
CJam,
2221 bytesCJam se creó después de esta pregunta, por lo que técnicamente es un envío no válido. Pero la pregunta me pareció interesante, así que aquí va:
Explicación:
La lógica central es que en cada iteración while-do, primero verifica si se alcanza el palíndromo o no. Si no, agregue el reverso al número. ¡Más o menos lo que es el algoritmo!
Pruébalo en línea aquí
fuente
Este es un contendiente real, ya que J ha existido durante décadas.
J (16 bytes)
Este es un verbo, por lo que puede asignarse a una variable en una sesión J y usarse así:
Cómo funciona:
fuente
Python: 66
fuente
Perl, 40 caracteres
fuente
Scala 82
fuente
JAGL Alpha 1.2 - 19, 21 con stdin
No contendiendo , solo obteniendo algo de experiencia con mi idioma
Espera un número de stdin
Explicación
fuente
05AB1E , 7 bytes (no competitivos)
No competitiva , ya que el lenguaje es posterior al desafío.
Código:
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea! .
fuente
hello
. La bifurcación mantendrá la cadena original y empujará la cadena hacia atrás. Es la abreviatura de duplicar y revertir .Brachylog , 8 bytes
Pruébalo en línea!
Algo similar a uno de los primeros programas de Brachylog que vi y que me intrigó, del video introductorio de Brachylog .
fuente
PHP -
5448 caracteresPrueba:
fuente
$str =
gato para el futuro golf. Mucho mejor que usarSTDIN
y aún mejor que$argv[0]
.Golpe (64)
Llamar con: bash <nombre de archivo> <número>
fuente
C # -
10399 caracteresC # nunca funciona muy bien en el golf. Elegante, pero detallado.
fuente
En Q (39 caracteres)
Uso de muestra:
Editar:
Hasta 34 ahora, mismo uso:
fuente
fuente
Gelatina , 9 bytes (no competitiva)
Una respuesta muy simple, solo para el desafío de la codificación y el lenguaje esotérico.
ṚḌ+µŒḂ¬$¿
Pruébalo en línea!
Si esta respuesta no es clara o incorrecta en algún nivel, no dude en señalarla.
Gracias a Dennis por ayudarme con este primer pequeño código.
fuente
Pitón. 85 caracteres:
Si no desea resultados en cada iteración:
(un personaje menos)
fuente
Windows PowerShell (63)
Todavía odio que no haya una manera fácil de invertir una cadena.
fuente
long
cuál es el tipo integral más grande que PowerShell admite de todos modos, pero aún así, desperdicio dos caracteres.Haskell
8987 caracteresVersión algo legible:
La versión de golf fue creada mediante la incorporación manual y el cambio de nombre de las funciones restantes a nombres de caracteres individuales.
fuente
until
del Preludio, así como extrayendo el patrón de aplicar un operador binario ax
yr x
. Además, use enreadLn
lugar degetLine
yread
. El resultado ahorra 20 caracteres:f%x=f x$read.reverse.show$x;main=readLn>>=print.until((==)%)((+)%)
r=(=<<read.reverse.show)
y simplemente usarr(==)`until`r(+)
. Además de ese ahorro, no es necesario que sea un programa completo, un envío válido podría ser la función sin nombre de antes. Esto lo reduce a 41 bytes: ¡ Pruébelo en línea!befunge, 57 bytes
aunque el código se coloca en una cuadrícula de 4x19, podría llamarse 76.
fuente
C ++ TMP (256 caracteres)
Esta versión podría acortarse un poco, pero es difícil dejar pasar una respuesta de 256 caracteres. Aquí hay una versión sin golf:
fuente
Pyke, 13 bytes (sin competencia)
Pruébalo aquí!
fuente
Agregar ++ , 57 bytes
Pruébalo en línea!
Cómo funciona
fuente
Powershell,
6362 bytes-1 byte gracias a @AdmBorkBork
Script de prueba:
fuente
;
entreparam($m)
yfor
.GNU dc, 46 bytes
Requiere GNU dc, min versión 1.4 (para
R
comando).La entrada y la salida son las mejores, como de costumbre. Se necesita una cantidad sorprendente de código para invertir los dígitos en CC (a menos que me falte algo, lo que está lejos de ser imposible). Tiene el rango numérico para comportarse bien con entradas como estas (que desbordarán la aritmética sin signo de 32 bits, por ejemplo):
Explicación
fuente
R
comando. Buena solución, sin embargo!R
era nuevo. ¡Espero ver tu método!R ,
193109105 bytes-84 bytes gracias a Giuseppe! -4 adios gracias a JayCe!
Pruébalo en línea!
fuente
strsplit(x,"")
es más cortostrsplit(x,NULL)
yel(L)
más corto queL[[1]]
.as.double
es más corto queas.numeric
ystrtoi
es más corto que ambos; en lugar de configurarlo,t
úsalo directamente en tuif
estado de cuenta. Además, esta es una función recursiva si no me equivoco, por lo que debe incluirlaf=
como parte de su envío.utf8ToInt
convertir a dígitos yintToUtf8
volver a convertir. ¡Eso será un gran ahorro de bytes!while
bucle-
en lugar deU
. También he sustituidorev
con!
pero no guarda los bytes ...