Dado un número n, escriba una función que encuentre la base más pequeña, b ≥ 2como nun palíndromo en la base b. Por ejemplo, una entrada de 28debería devolver la base 3ya que la representación ternaria de 28 es 1001. Aunque 93es un palíndromo tanto en la base 2 como en la base 5, la salida debe ser 2desde 2 <5.
Entrada
Un entero positivo n < 2^31.
Salida
Devuelve la base más pequeña de b ≥ 2modo que la brepresentación de la base nsea un palíndromo No asuma ceros a la izquierda.
Muestras (entrada => salida):
11 => 10
32 => 7
59 => 4
111 => 6
Reglas
El código más corto gana.
                    
                        code-golf
                                palindrome
                                base-conversion
                                
                    
                    
                        ntomlin1996
fuente
                
                fuente

npuede ser 1 y 2 no es un palíndromo base 1. Sin embargo, cada positivones unn + 1palíndromo base .Respuestas:
CJam , 19 bytes / GolfScript, 23 bytes
o
Pruébalo en línea:
Ejemplos
Cómo funciona
Para GolfScript,
q~es~,_es.,besbase,Wes-1ygesdo.fuente
GolfScript, 20 caracteres
Un enfoque diferente con GolfScript que no sea Dennis '. Evita el costoso bucle explícito a favor de un operador de búsqueda . Pruebe en línea .
fuente
x = 1ox = 2. Ambos sonx + 1palíndromos básicos de un solo dígito , por lo quex))deberían solucionarlo.Mathematica,
6766 bytesRealmente no puedo competir con GolfScript aquí en términos de tamaño de código, pero el resultado para 2 32 básicamente se devuelve instantáneamente.
fuente
PalindromeQpara la verificación inversa?)Japt ,
129 bytesA menos que me haya perdido un truco (¡es tarde!), Esto debería funcionar para todos los números hasta e incluyendo al menos
2**53-1.En mis pruebas (ciertamente limitadas y completamente aleatorias), he obtenido resultados hasta la base (!) Hasta ahora. No está mal si tenemos en cuenta JavaScript solamente soporta de forma nativa bases a .
11601310,515236Intentalo
Explicación
Entrada implícita de entero
U.Comenzando con
2, devuelve el primer número que devuelve verdadero cuando se pasa por la siguiente función,Xsiendo el número actualConvierte
Uen una matriz deXdígitos base .Prueba si esa matriz es un palíndromo.
fuente
N.ì(n)podría manejar bases mayores que36. Gracias por eso.N.ì(n)ya que estamos usando enteros sin procesar ;-)Pitón 2 (83)
No estoy seguro de qué formato de entrada / salida quería la pregunta. Escribí una función. El código usa una entrada opcional
bpara rastrear la base actual que está probando. Loswhilebucles convierten el número en una lista de dígitos en la baseb.La última línea vuelve
bsiles un palíndromo, y de forma recursiva intenta la siguiente de lobcontrario. El truco de índice por booleano no funciona aquí porque causaría que ambas opciones se evaluaran independientemente del booleano, y la recursión nunca tocaría fondo.fuente
JavaScript, 88 bytes
Sin golf:
fuente
Javascript, 105 bytes
JSFiddle: http://jsfiddle.net/wR4Wf/1/
Tenga en cuenta que esta implementación también funciona correctamente para bases grandes. Por ejemplo,
f(10014)devuelve 1668 (10014 es 66 en la base 1668).fuente
s/var b=2,c,d/b=d=2/ganar 6 bytes más;)Bash + coreutils, 100 bytes
Usos
dcpara formatear base. Lo complicado es quedcel formato es diferente para n> 16.Casos de prueba:
fuente
J - 28 char
Explicado:
#.inv~- Expande el argumento izquierdo a la base en el argumento derecho.(-.@-:|.@)- Devuelve 0 si la expansión es palindrómica y 1 en caso contrario.(1+]^:)- Incremente el argumento correcto en uno si devolvimos 1, de lo contrario, no realice ninguna acción.^:_- Repita el incremento anterior hasta que no realice ninguna acción.&2- Prepare el argumento correcto como 2, haciendo de esto una función de un argumento.Ejemplos:
fuente
2+1 i.~[#.inv"*(-:|.@)~2+i.por 27 bytes. (No quiero publicarlo por separado. Lo dejaré aquí.)R,
12295 bytesSolución de tres años en 122 bytes:
Con algunas explicaciones:
fuente
Cáscara ,
119 bytesGracias @ Zgarb por -2!
Pruébalo en línea!
Explicación
fuente
Nota: Pyth es más reciente que esta pregunta, por lo que esta respuesta no es elegible para ganar.
Pyth, 10 bytes
Pruébalo aquí
fuente
Scala, 83 bytes
fuente
05AB1E , 8 bytes
Pruébalo en línea!
fuente
Perl 5 , 84 + 1 (-p) = 85 bytes
Pruébalo en línea!
fuente
JavaScript 72 bytes
fuente
Mathematica 42 bytes
Una variación de la entrada de Martin Ender. Hace uso de
IntegerReverse(disponible en la versión 10.3) que prescindeIntegerDigits.fuente
Java 8, 103 bytes
Explicación:
Pruébalo aquí
fuente