Dado es cualquier número entero x> 0 y cualquier base y> 3.
- Suma todos los dígitos de x (si está escrito en la base establecida).
- Multiplique esto por el dígito más alto posible (siempre es
base -1
). - Repita hasta que este valor sea
(y - 1) ^ 2
Se busca el recuento de iteraciones y los pasos.
Ejemplo 1:
x= 739
y= 7
searched: (7 - 1) ^ 2 = 36
based: (b7)2104
sum: (dec)7
mul: (dec)42
based: (b7)60
sum: (dec)6
mul: (dec)36
2 steps needed -> answer is [2, 739, 42, 36] or [739, 42, 36, 2]
Ejemplo 2
x = 1712
y = 19
s: 324
step1: 1712 -> 360
step2: 360 -> 648
step3: 648 -> 324
3 steps needed -> answer is [3, 1712, 360, 648, 324] or [1712, 360, 648, 324, 3]
Especial:
en algunos casos (algunas combinaciones con una base de 3) no podrá obtener me (y - 1) ^ 2
gusta para x = 53
y y = 3
. Por esta razón, y
debe ser mayor que 3 y puede ignorar esto.
El recuento de iteraciones debe ser el primer o el último valor
Este es el código de golf más bajo de conteo de bytes gana.
code-golf
combinatorics
base-conversion
Dirk Reichel
fuente
fuente
Respuestas:
Jalea ,
1413 bytes-1 byte imprimiendo a medida que se repite (
Ṅ
reemplazando una separación de cadenaµ
y concatenación;
)TryItOnline!
¿Cómo?
El 13 byter alternativo imprime cada entrada al bucle más un avance de línea (
Ṅ
), y finalmente imprime implícitamente el recuento disminuido de los resultados recopilados, eliminando la necesidad de una separación de cadena monádica (µ
) y concatenación (;
).fuente
Perl 6 , 60 bytes
Expandido:
Uso:
fuente
C,
116113 bytes-3 bytes para recalcular el cuadrado cada vez
Sin golf y uso:
fuente
JavaScript (ES6),
97918482 bytesCasos de prueba
Mostrar fragmento de código
fuente
Jalea , 16 bytes
Supongo que publicaré esto de todos modos, a pesar de que fue golpeado mientras lo escribía, porque es un algoritmo notablemente diferente y fue interesante escribirlo. (No pude entender cómo se
ÐĿ
analizó a partir de los documentos y tuve que renunciar a él, a pesar de saber que probablemente conduciría a una solución más corta que esta).Pruébalo en línea!
Explicación:
El uso de
<’¥
es básicamente una forma corta de escribir una diada (enlace con dos argumentos) que siempre devuelve -1 (porque sabemos que la respuesta nunca será más pequeña que la base). Elegir entre ejecutar recursivamente y todo el programa recursivamente, nos permite determinar cuándo detener el bucle. Luego, cuando la pila se desenrolla al final de la recursión, seguimos incrementando el -1 para determinar cuántos pasos hubo.fuente
MATL,
2521 bytes4 bytes guardados gracias a @Luis
Pruébalo en línea!
Explicación
fuente
Mathematica, 80 bytes
es el carácter de uso privado que seU+F4A1
usa para representar\[Function]
. Si el número de pasos no fuera requerido en la respuesta, esto podría hacerse en 60 bytes:fuente