Dado un número entero n> 2 , imprime o devuelve el número entero no negativo más pequeño k tal que a (n, k) = 9 , donde a (n, k) se define por:
- a (n, 0) = n
- a (n, k + 1) =
- a (n, k) / 2 + 1 si a (n, k) es par
- la suma de los dígitos de a (n, k) ² (en base 10) si a (n, k) es impar
Ejemplos
Para n = 5 , la salida esperada es k = 4 :
a(5, 0) = 5
a(5, 1) = 7 (5² = 25 and 2 + 5 = 7)
a(5, 2) = 13 (7² = 49 and 4 + 9 = 13)
a(5, 3) = 16 (13² = 169 and 1 + 6 + 9 = 16)
a(5, 4) = 9 (16 / 2 + 1)
Para n = 40 , la salida esperada es k = 2 :
a(40, 0) = 40
a(40, 1) = 21 (40 / 2 + 1)
a(40, 2) = 9 (21² = 441 and 4 + 4 + 1 = 9)
Aclaraciones y reglas.
- Se garantiza que la entrada sea mayor que 2.
- Su programa teóricamente debería funcionar para cualquier valor de n . (En la práctica, puede estar limitado por el tamaño entero máximo admitido por su idioma).
- k puede estar indexado a 0 o indexado a 1. Por favor, indíquelo en su respuesta.
- Este es el código de golf , por lo que gana la respuesta más corta en bytes
Primeros valores
A continuación se muestran los primeros valores de n = 3 a n = 422 , con k 0 indexado. (Para la indexación 1, solo agregue 1
a estos valores).
1 2 4 3 3 5 0 4 3 4 2 6 1 1 6 5 5 4 1 5 2 3 3 7 6 2 3 2 2 7
6 6 5 6 6 5 1 2 2 6 6 3 1 4 3 4 4 8 1 7 6 3 5 4 6 3 2 3 3 8
7 7 3 7 4 6 6 7 5 7 6 6 6 2 4 3 3 3 6 7 3 7 2 4 7 2 6 5 6 4
7 5 2 5 6 9 6 2 3 8 2 7 1 4 6 6 6 5 1 7 4 4 3 3 7 4 3 4 2 9
6 8 6 8 6 4 6 8 2 5 3 7 6 7 3 8 2 6 7 8 6 7 5 7 6 7 4 3 3 5
6 4 3 4 4 4 6 7 6 8 3 4 6 8 7 3 6 5 6 8 3 3 2 7 6 6 5 7 6 5
7 8 2 6 3 3 6 6 6 7 4 10 6 7 3 3 6 4 1 9 2 3 3 8 7 2 6 5 2 7
7 7 6 7 3 6 7 2 4 8 3 5 6 5 6 4 2 4 6 8 3 5 6 4 7 5 2 3 6 10
7 7 3 9 2 7 1 9 5 7 6 5 6 7 4 9 6 3 6 6 3 4 2 8 7 7 6 8 6 4
7 9 4 3 3 7 7 8 3 9 4 7 6 8 3 6 6 8 7 7 7 8 6 5 7 4 6 4 2 6
7 7 6 5 3 4 7 5 4 5 3 5 7 7 6 8 2 7 1 9 6 4 6 5 7 7 2 9 6 8
7 4 3 7 4 6 6 7 6 9 3 4 6 4 2 3 3 8 1 7 6 7 2 6 7 8 3 7 5 6
7 8 2 9 3 3 6 7 6 4 4 4 6 7 6 7 6 7 6 8 7 5 6 11 7 7 3 8 4 4
7 4 6 7 3 5 6 2 2 10 6 3 6 4 3 4 4 9 7 8 3 3 6 7 7 6 4 3 6 8
9! ≠ 9
an opinion or conclusion formed on the basis of incomplete information.
Respuestas:
Casco , 13 bytes
Esto es 1 indexado. Pruébalo en línea!
Explicación
Nada muy lujoso aquí.
fuente
Lω
resolver esto.Perl 6 , 41 bytes (40 caracteres)
Pruébalo en línea!
Esto utiliza 1 indexación de k, por lo que da 1 respuestas más altas que los ejemplos en OP. Si esto no es lo que significa la indexación 1, tendré que agregar 1 byte más.
Explicación : es una función anónima. Simplemente utilizamos las instalaciones de Perl 6 para generar listas usando recursividad :—). Se ve así:
(first element),(block that takes the previous element and gives the next)...(end condition)
. En este caso, el primer elemento es$_
(argumento de la función principal) y la condición final es9
(cumplida cuando generamos un 9). En el bloque del medio, usamos$_
para referirnos a su argumento (= el elemento anterior de la secuencia). El?? !!
es el antiguo operador ternario (mejor conocido como? :
). Finalmente, tomamos la longitud de esta lista forzando el contexto numérico por+(...)
.La última cosa extraña aquí es la suma de dígitos. Los números son
Cool
(se comportan como cadenas y números), por lo que usamos un método de cadena.comb
en$_²
(dar una lista de caracteres = dígitos), luego agregamos los caracteres (que los convierte de nuevo en números).fuente
Jalea , 17 bytes
Pruébalo en línea!
Enfoque directo. Utiliza indexación basada en 0.
Explicación
fuente
do-while n != 9
lugar de awhile n!= 9
Python 2 ,
129126766867645453 bytes-3 bytes gracias a Jonathan Frech. -8 bytes gracias a Maltysen. -7 bytes gracias a Jonathan Allan. -1 byte gracias al Sr. Xcoder.
Pruébalo en línea!
De alguien que probablemente no sabe suficientes matemáticas, esto parece completamente arbitrario. :PAGS
fuente
)%2and sum
con)%2*sum
, ahorrando tres bytes.k
completo y guardar otros siete bytesMathematica, 58 bytes
1 indexado
Pruébalo en línea! (para trabajar en matemáticas,
Tr
se reemplaza conTotal
)aquí hay una versión de -1 byte de @JungHwanMin (pero no funciona en matemáticas, así que guardé ambas)
Mathematica, 57 bytes
fuente
2∣#
lugar deOddQ@#
e intercambie las dos expresiones deIf
.JavaScript (ES6),
5950 bytes0 indexado.
Intentalo
Explicación
Lo primero que hacemos es calcular
n-9
. Sin==9
entonces eso, obviamente, da0
y las cosas se detienen allí. Sin!=9
entoncesn-9
dará un valor distinto de cero que, siendo sincero, significa que podemos continuar a través del AND lógico. Llamamos a la función nuevamente, pasándole una nuevan
, calculada de la siguiente manera:Si el
n
módulo2
es verdadero,n
es decir, es extraño.Multiplique
n
por sí mismo, conviértalo en una cadena y desestructura esa cadena en una matriz de caracteres individuales (dígitos).Vuelva a unir los caracteres a una cadena usando
+
, dándonos una expresión matemática.Evalúa esa expresión, dándonos la suma de los dígitos de
n*n
.Si
n%2
es falsey (es decir,n
es par), simplemente dividimosn
por2
y sumamos1
.Al resultado de llamar nuevamente a la función, agregamos
1
. Entonces, usando una entrada inicial de5
, el proceso es el siguiente:fuente
Jalea ,
1615 bytes-1 byte gracias a millas (uso de ternario si)
Un enlace monádico que toma y devuelve números.
1 indexado
Pruébalo en línea! o vea un conjunto de pruebas (obliga a que los resultados estén indexados a 0 y los formatos como el bloque de código OP)
¿Cómo?
fuente
²DSµH‘$Ḃ?n9$пL
Haskell,
6259 bytesPruébalo en línea!
Editar: -3 bytes gracias a @ Ørjan Johansen.
fuente
last$x:[y|odd a]
se puede acortar acycle[x,y]!!a
.Perl 5 , 56 + 1 (-n) = 57 bytes
Pruébalo en línea!
fuente
9
.05AB1E , 16 bytes
Pruébalo en línea!
Explicación
fuente
VB.NET (.NET 4.5.2), 107 + 20 (importaciones) = 117 bytes
Requiere
Imports System.Linq
Función que toma
n
como entrada entera y devuelve un 0k
.Sin golf:
fuente
Golfscript, 34 bytes
Pruébalo en línea!
Realmente necesito una mejor manera de sumar los dígitos de un número.
fuente
Pyth ,
2322 bytesPor ahora, esta es una función recursiva,
pero intentaré cambiar a..W
(funcional mientras) para guardar bytesPruébalo aquí! (con código adicional para llamar a la función - uso- sin espacios)
y
<your_number>
fuente
Java 8,
11098 bytes0 indexado
Explicación:
Pruébalo aquí
fuente
Clojure v1.8,
124113112 bytes0 indexado
Pruébalo en línea!
Explicación
fuente
Pyth, 18 bytes
Pruébalo en línea: demostración
Explicación:
fuente
Japt
2221 bytes0 indexado.
Intentalo
Explicación
Entrada implícita de entero
U
.Generar una matriz de enteros de
0
aU-1
y pasar cada uno a través de una función.Establece el valor de
U
.Si
U
es divisible por 2.U
dividido por 2, más 1 (Ä
).De lo contrario:
U
a la potencia de 2 (²
), dividido en una matriz de dígitos (ì
) y reducido por la suma (x
).Agregue la matriz resultante a la matriz de entradas.
Encuentre el índice de la primera aparición de
9
en la matriz. Salida implícita del resultado.fuente
@¥9}a@=u ?U²ìx :U/2Ä;°T
si solo hubiera un método que devolviera el número de iteraciones hasta que un valor dejara de cambiar ...