Dado un número n
, escriba una función que encuentre la base más pequeña, b ≥ 2
como n
un palíndromo en la base b
. Por ejemplo, una entrada de 28
debería devolver la base 3
ya que la representación ternaria de 28 es 1001. Aunque 93
es un palíndromo tanto en la base 2 como en la base 5, la salida debe ser 2
desde 2 <5.
Entrada
Un entero positivo n < 2^31
.
Salida
Devuelve la base más pequeña de b ≥ 2
modo que la b
representación de la base n
sea 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
n
puede ser 1 y 2 no es un palíndromo base 1. Sin embargo, cada positivon
es unn + 1
palíndromo base .Respuestas:
CJam , 19 bytes / GolfScript, 23 bytes
o
Pruébalo en línea:
Ejemplos
Cómo funciona
Para GolfScript,
q~
es~
,_
es.
,b
esbase
,W
es-1
yg
esdo
.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 = 1
ox = 2
. Ambos sonx + 1
palí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
PalindromeQ
para 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 .
11601
310,515
2
36
Intentalo
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,X
siendo el número actualConvierte
U
en una matriz deX
dí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
b
para rastrear la base actual que está probando. Loswhile
bucles convierten el número en una lista de dígitos en la baseb
.La última línea vuelve
b
sil
es un palíndromo, y de forma recursiva intenta la siguiente de lob
contrario. 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
dc
para formatear base. Lo complicado es quedc
el 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