Su tarea es tomar un número positivo como entrada, n , y generar la longitud de la representación más larga de rep-dígitos de n en cualquier base. Por ejemplo, 7 puede representarse como cualquiera de los siguientes
111_2
21_3
13_4
12_5
11_6
10_7
7_8
Los dígitos de rep son 111_2
y 11_6
, 111_2
es más largo, por lo que nuestra respuesta es 3.
Esta es una pregunta de código de golf , por lo que las respuestas se puntuarán en bytes, con menos bytes mejor.
Casos de prueba
1 -> 1
2 -> 1
3 -> 2
4 -> 2
5 -> 2
6 -> 2
7 -> 3
8 -> 2
9 -> 2
10 -> 2
11 -> 2
26 -> 3
63 -> 6
1023-> 10
Implementación de muestra
Aquí hay una implementación en Haskell que puede usarse para generar más casos de prueba.
f 0 y=[]
f x y=f(div x y)y++[mod x y]
s x=all(==x!!0)x
g x=maximum$map(length.f x)$filter(s.f x)[2..x+1]
code-golf
base-conversion
Post Rock Garf Hunter
fuente
fuente
base > 1
?222
en la base 3.Respuestas:
Jalea , 9 bytes
Un enlace monádico que acepta y devuelve números
Pruébalo en línea! o ver un conjunto de pruebas (entradas 1 a 32 inclusive).
¿Cómo?
... o tal vez debería haber hecho:
Por la
Lo1
z.fuente
ZL
es más corto queL€Ṁ
...JavaScript (ES6), 62 bytes
fuente
Haskell ,
868179 bytes2 bytes guardados gracias a Laikoni
Pruébalo en línea!
Como esto se ha calmado un poco, aquí está mi enfoque. Es una versión de golf del código de muestra que hice para la pregunta. Creo que definitivamente puede ser más corto. Solo pensé en ponerlo ahí afuera.
fuente
length.head.filter(all=<<(==).head).(<$>[2..]).(!)
.Casco ,
1311 bytes-2 bytes gracias a zgarb
Pruébalo en línea!
fuente
mm
puede serM
yṠoΛ=←
puede serȯ¬tu
. Todavía no hay una función integrada para verificar que todos los elementos de una lista sean iguales ...ΓoΛ=
también funciona como cuatro bytesM
debería estar en los documentos, ya que lo hemos tenido por un tiempo. Debería arreglar eso. Pero es básicamente el dual deṀ
.Mathematica, 71 bytes
Pruébalo en línea!
fuente
05AB1E , 8 bytes
Pruébalo en línea!
-1 gracias a kalsowerus .
fuente
L>вʒË}нg
para 8 bytesBrachylog , 12 bytes
Pruébalo en línea!
fuente
Python 3 ,
9287 bytes5 bytes gracias a Halvard Hummel.
Pruébalo en línea!
fuente
Mathematica, 58 bytes
Lanza un error (porque base-1 no es una base válida), pero es seguro ignorarlo.
Por supuesto, está bien tomar la longitud del primer repdigit (
FirstCase
), ya que los números en bases más bajas no pueden ser más cortos que en bases más altas.fuente
CJam (17 bytes)
Conjunto de pruebas en línea . Este es un bloque anónimo (función) que toma un número entero en la pila y deja un número entero en la pila.
Funciona con fuerza bruta, utilizando
3
como base de respaldo para manejar los casos especiales (entrada1
o2
).fuente
Perl 6 , 49 bytes
Pruébalo en línea!
Explicación
El método polymod es una generalización de Python
divmod
: realiza una división entera repetida utilizando una lista dada de divisores y devuelve los restos intermedios.Se puede usar para descomponer una cantidad en varias unidades:
Al pasar una secuencia perezosa como la lista de divisores, se
polymod
detiene cuando el cociente llega a cero. Por lo tanto, al darle una repetición infinita del mismo número, descompone la entrada en dígitos de esa base:Lo uso aquí porque permite bases arbitrariamente altas, en contraste con el
.base
método basado en cadenas que solo admite hasta la base 36.fuente
[]
entornopolymod
cambiando$_
a@_
TI-BASIC, 37 bytes
Solicita N, devuelve la salida en Ans.
Explicación
Como resumen, para cada posible base B en secuencia, primero calcula el número de dígitos de N cuando se representa en la base B, luego verifica si N es divisible por el valor representado por ese mismo número de 1 dígitos en la base B.
fuente
Pyth , 13 bytes
Pruébalo en línea!
fuente
Java 8, 111 bytes
El número de bytes de 111 también es un dígito de repetición. ;)
Explicación:
Pruébalo aquí
fuente
Java 8, 79 bytes
Una lambda de
Integer
aInteger
.Lambda sin golf
Comprueba las radios en orden creciente desde 2 hasta que se encuentra una raíz de dígitos rep. Se basa en el hecho de que la raíz más pequeña corresponderá a una representación con la mayor cantidad de dígitos.
m
es una copia de la entrada,b
es la raíz yl
es el número de dígitos marcados (y, en última instancia, la longitud de lab
representación de la raíz ).fuente
Burlesque, 24 bytes
(ver la solución correcta a continuación)
Ver en acción .
Al menos si mi intuición es correcta, ¿una representación de dígitos de repetición siempre será más larga? De lo contrario, uhm ...
fuente