Dado un entero positivo N
, genera el entero positivo más pequeño de manera que este número sea un palíndromo (es decir, es su propio reverso) y es divisible por N
.
El palíndromo (es decir, la salida) no debe necesitar un cero inicial para ser un palíndromo, por ejemplo, 080
no es la respuesta válida para 16
.
La entrada nunca será un múltiplo de 10, debido a la razón anterior.
Su programa puede tomar tanto tiempo como sea necesario, incluso si en la práctica sería demasiado tiempo para dar la respuesta.
Entradas y salidas
- Puede tomar la entrada
STDIN
, como un argumento de función, o algo similar. - Puede imprimir el resultado
STDOUT
, devolverlo desde una función o algo similar. - Las entradas y salidas deben estar en la base decimal.
Casos de prueba
N Output
1 1
2 2
16 272
17 272
42 252
111 111
302 87278
1234 28382
Tanteo
Este es el código de golf , por lo que gana la respuesta más corta en bytes.
N
Respuestas:
2sable / 05AB1E , 6/7 bytes
2sable
Explicación
Pruébalo en línea
05AB1E
La diferencia con el código 2sable es que la entrada solo está implícita una vez en 05AB1E, por lo que aquí necesitamos
¹
obtener la primera entrada nuevamente.Pruébalo en línea
Guardado 1 byte con 2sable como lo sugiere Adnan
fuente
[DÂQ#+
.Haskell,
453734 bytesfuente
Pyth, 7 bytes
Pruébelo en línea: demostración
Explicación
fuente
Java,
16415912610894 bytesVersión de golf:
Versión sin golf:
Gracias a Emigna y Kevin Cruijssen por contribuir con las mejoras y reducir los bytes casi a la mitad :)
fuente
x % a == 0
algo redundante cuando inicializa x como a y solo lo aumenta en a? Además, ¿se puede hacer la comparación con la inversión de la cadena en el condicional while?import org.apache.commons.lang.StringUtils;
y usarorg.apache.commons.lang.StringUtils.reverse
directamente.for(;;)
es más corto quewhile(1>0)
. No es necesario un programa completo, soloint c(int a){...}
lo haría como una respuesta válida, ya que la pregunta tiene la siguiente regla: " Puede tomar la entrada como un argumento de función. Puede devolver la salida de una función " . @Emigna tiene razón en que La comprobación del módulo no es necesaria.x += a
). No tengo que verificar la divisibilidad :) y gracias por los consejos de golf.C #,
10380 bytesSin golf
fuente
x.ToString()
con 'x + "" `ahorrará un montón de caracteres.Python 2, 46 bytes
Ideone it!
Solución recursiva con
c
como contador.El caso
0
es interesante, porque aunquec=0
satisface la condición de palíndromo, no se devolvería, porqueccc and 0 or xxx
siempre regresaxxx
.fuente
c*(`c`[::-1]==`c`)or
.PHP, 39 bytes
;
después de un rato para no hacer nadastrrev
devolver la cadena hacia atrásMisma longitud con for-loop
fuente
Brachylog , 8 bytes
Pruébalo en línea! (alrededor de 5 segundos para
1234
)Verifique todos los casos de prueba. (alrededor de 20 segundos)
fuente
Javascript (ES6),
5551 bytes4 bytes gracias a Neil.
fuente
+
parece innecesario.(x,c=x)
Te permitiría evitar el&&c
?c^[...c+""].reverse().join``?f(x,x+c):c
para guardar un byte más.c-
funcionaría para números ligeramente más altos quec^
, si es necesario.Pyke,
119 bytesPruébalo aquí!
fuente
C,
217189 bytesVersión independiente:
Llamar a una versión de función:
Sin golf:
Llamado a una función sin golf:
Incluí la versión independiente para historicidad.
Este es mi primer codegolf, cualquier comentario es bienvenido!
fuente
main()
independientemente de sus preferencias. No jugarías béisbol corriendo doce vueltas antes de etiquetar "porque lo prefiero", nunca llegarás a salvo. Esta es una competencia, y la regla principal es usar cualquier medio necesario y legal para reducir el conteo de bytes.int f(int a)
->f(a)
2) si tiene que declarar algunosint
s, puede usar los parámetros de función:int f(int a){int b;
->f(a,b){
3)sprintf
nunca devolverá 0, por lo que puede usar enwhile
:while(1){sprintf(c,"%d",b);
->while(sprintf(c,"%d",b)){
4 ) use K&R C para definir una Función para que pueda combinar con mi segunda pista:int s(char*a){int b=strlen(a);for(int i=0
->s(a,b,i)char*a;{b=strlen(a);for(i=0;
R,
117113109101 bytesSin golf
all(charToRaw(a)==rev(charToRaw(a)))
comprueba si en cada posicióna
el valor dea
y su reverso son iguales (es decir, sia
es palindrómico).Puede ser posible jugar algunos bytes jugando con el
types
.fuente
En realidad ,
1514 bytesPidió una respuesta de Leaky Nun. Sugerencias de golf bienvenidas. Pruébalo en línea!
Ungolfing
fuente
Haskell,
64 6356 bytesLlamar con
(1!)16
o simplemente1!16
. Pruébalo en Ideone.fuente
VBSCRIPT, 47 bytes
sin golf
fuente
Perl, 25 bytes
Incluye +2 para
-ap
Ejecutar con la entrada en STDIN:
palidiv.pl
:fuente
SILOS , 109 bytes
Pruébalo en línea!
fuente
Japt , 14 bytes
Pruébalo en línea!
¡Gracias ETHproductions por la ayuda! :)
fuente
MATL , 10 bytes
Pruébalo en línea!
fuente
PowerShell v2 +, 72 bytes
Mucho tiempo debido a cómo se maneja la inversión en PowerShell, no muy bien. ;-)
Toma entrada
$args[0]
, almacena en$i
(nuestra variable de bucle) y$n
(nuestra entrada). Bucles infinitamente, incrementando$i
por$n
cada vez (a la divisibilidad de garantía).Cada iteración, verificamos si
$i
es un palíndromo. Aquí hay algunos trucos, así que déjame explicarte. Primero lo tomamos$i
y lo stringificamos con"$i"
. Eso se indexa en orden inverso["$i".length..0]
antes de-join
volver a ser editado en una cadena. Eso se alimenta al lado derecho del-eq
operador de calidad, que implícitamente convierte la cadena de nuevo en un[int]
, ya que ese es el operando de la izquierda. Nota: esta conversión elimina todos los ceros a la izquierda del palíndromo, pero como estamos garantizados que la entrada no es divisible10
, está bien.Entonces,
if
es un palíndromo, simplemente lo colocamos$i
en la tubería yexit
. La salida está implícita al final de la ejecución.Casos de prueba
fuente
MATLAB, 76 bytes
El formato de la llamada es
p(302)
resultado es una cadena.Nada inteligente aquí. Realiza una búsqueda lineal, utilizando el
num2str()
fliplr()
funciones y .Este arreglo feo es un poco más corto que usar un
while(1) ... if ... break end
patrón.Sin golf
fuente
Mathematica, 49 bytes
Inicia la búsqueda en
c = N
e incrementac
si no es un palíndromo y no es divisible porN
. Cuando se cumplen las condiciones, salidasc
.fuente
Jalea, 12 bytes
Pruébalo en línea!
Explicación:
Este enlace lleva 1 argumento. El
µ
s lo dividió en 4 partes. Comenzando desde el último y moviéndose a la izquierda:fuente
Elixir , 75 bytes
fuente
Python 2,
6665 bytesi
es entrada yx
es (eventualmente) salidaDespués de desplazarme por otras respuestas, encontré una respuesta más corta de Python 2, pero puse el esfuerzo en mi solución, así que podría arrojarla aquí. ¯ \ _ (ツ) _ / ¯
fuente
[::-1] else
.return x if x%i==0&&
x==
x[::-1]else f(i,x+1)
, lo que significa que puedes convertirlo en lambda y jugar más bytes?REXX, 46 bytes
fuente
Python 2 , 44 bytes
Pruébalo en línea!
Sé que la pregunta se publicó hace más de seis meses, pero fue más corta que cualquier otra presentación de Python.
fuente
QBIC , 29 bytes
Explicación:
fuente
Perl 6 , 35 bytes
Explicación:
fuente
Perl 6, 39 bytes
(33 sin incluir
my &f=
)fuente