La secuencia del malabarista se describe como sigue. Comenzando con una entrada a 1 , el siguiente término se define por la relación de recurrencia
La secuencia termina cuando alcanza 1, ya que todos los términos posteriores serían 1.
Tarea
Dada una entrada n
mayor o igual a 2, escriba un programa / función / generador / etc. que genera / devuelve la secuencia de malabarista respectiva. La salida puede ser de cualquier forma razonable. No puede usar un incorporado que calcule la secuencia del malabarista, o cualquier incorporado que produzca directamente el resultado. Puede suponer que la secuencia termina en 1
.
Casos de prueba
Input: output
2: 2, 1
3: 3, 5, 11, 36, 6, 2, 1
4: 4, 2, 1
5: 5, 11, 36, 6, 2, 1
Este es un código de golf. El código más corto en bytes gana.
~5.6*10^7
valores (todos se han detenido hasta ahora).Respuestas:
Jalea ,
121110 bytes¡Gracias a @ Sp3000 por jugar golf en 1 byte!
Pruébalo en línea!
Cómo funciona
fuente
<code> </code>
lugar de los backticks parece mostrar un carácter SP real. Gracias por señalar eso.Julia,
645048423230 bytesEsta es una función recursiva que acepta un número entero y devuelve una matriz flotante.
Construimos una matriz concatenando la entrada con el siguiente término de la secuencia, calculada como x a la potencia de su paridad más 1/2. Esto nos da x 1/2 o x 1 + 1/2 = x 3/2 . La división entera por 1 toma la palabra. Cuando la condición x <3 es verdadera, el elemento final será un valor booleano en lugar de un valor numérico, pero como la matriz no es de tipo
Any
, se convierte para tener el mismo tipo que el resto de la matriz.¡Guardado 14 bytes gracias a Dennis!
fuente
JavaScript (ES7),
4533 bytesExplicación
Enfoque recursivo. Devuelve una cadena de números separados por comas.
Prueba
**
no se utiliza en la prueba de compatibilidad del navegador.Mostrar fragmento de código
fuente
**
fuera compatible con todos los navegadores.**
fueran compatibles con C #.Mathematica,
4039 bytesGracias a Martin Büttner por guardar 1 byte.
Caso de prueba
fuente
Pyth,
1412 bytesDemostración
Comenzamos con una reducción acumulativa,
.u
, que en este caso comienza en la entrada y aplica una función hasta que se repite el resultado, en cuyo punto genera todos los resultados intermedios.La función toma el valor anterior como
N
. Comienza tomando su raíz cuadrada con@N2
. Luego, bifurca ese valor en la multiplicación porN
con*B ... N
. Esto crea la lista[N ** .5, (N ** .5) * N]
, los resultados sin explorar para los casos pares e impares. A continuación, se selecciona el resultado sin explorar apropiado indexando en la lista con@ ... N
. Dado que Pyth tiene indexación modular, no se arrojan errores fuera de los límites. Finalmente, el resultado es anulados
.fuente
MATL,
1312 bytesPruébalo en línea!
Explicación
¡Gracias Luis por salvar un byte!
fuente
floor
función se ha cambiado ak
, por lo que puede usarla en lugar deZo
guardar 1 byte. (Perdón por estos cambios; puedes ver los resúmenes de lanzamiento aquí )Minkolang 0.15 , 25 bytes
Pruébalo aquí!
Explicación
fuente
TSQL, 89 bytes
La entrada entra
@N
:Código:
fuente
APL,
282416 bytesEste es un programa que acepta un número entero e imprime las salidas sucesivas en líneas separadas.
Explicación:
Pruébalo en línea
¡Guardado 8 bytes gracias a Dennis!
fuente
Java 7,
8371 bytesOriginalmente utilicé un
for
bucle típico , pero tuve que saltar a través de los aros para que funcionara correctamente. Después derobarprestado la idea de user81655 para recurrir en su lugar, obtuve doce bytes.fuente
Haskell, 70 bytes
Haskell no tiene un número entero
sqrt
incorporado, pero creo que puede haber algo más corto quefloor.sqrt.fromInteger
.fuente
Oracle SQL 11.2, 128 bytes
Sin golf
Agregar MOD (i, 2) a .5 es más corto pero hay un error con POWER (2, .5):
da
fuente
R,
5451 bytesGuardado 3 bytes gracias a plannapus.
fuente
floor(n^(.5+n%%2))
an^(.5+n%%2)%/%1
que pienso. +1 No obstante.CJam, 18 bytes
Pruébalo aquí
Similar a la respuesta MATL de David .
fuente
Python 3,
57,45,43, 41 bytesMejor solución con sugerencia de @mathmandan
Este método imprimirá cada número en una nueva línea.
Solución anterior: Reduzca a 43 bytes después de la recomendación de xnor
Puede llamar a lo anterior haciendo
a(10)
qué devuelve[10, 3.0, 5.0, 11.0, 36.0, 6.0, 2.0, 1.0]
Lo anterior generará los valores como flotantes. Si los quiere como enteros, entonces podemos agregar 2 bytes adicionales por 43 bytes:
fuente
[n][:n<2]or
, o como1/n*[n]or
para el caso entero.def j(n):print n;n-1and j(n**(.5+n%2)//1)
. (O en Python 3,def j(n):print(n);n-1and j(n**(.5+n%2)//1)
es de 42 bytes). Imprimirá la secuencia término por término en lugar de recopilar los términos en una lista.n<2or
lugar den-1and
TI-Basic, 30 bytes
fuente
Repeat Ans=1
conWhile log(Ans
y use√(Ans)Ans^remainder(Ans,2
.JavaScript ES6,
109102 bytesYo sé que esto puede ser golfed. Devuelve una cadena de números separados por comas.
fuente
C ++, 122 bytes
fuente
C #, 62 bytes
Inspirado por @ user81655 y @Alex A., utilicé la recursividad.
fuente
Retina, 144 bytes
La entrada y la salida están en unario.
La penúltima línea contiene un espacio, y las dos líneas medias y la última línea están vacías.
Pruébalo en línea
Explicación
Raíz cuadrada entera en retina , por Digital Trauma
fuente
C,
646361 bytesfuente
n%2?1.5:0.5
conn%2+0.5
o.5+n%2
(si C lo permite). Sin%2
es cierto,n%2
es 1, de lo contrario 0.TI BASIC, 43 bytes
Estoy sacando un Thomas Kwa y respondiendo este en mi móvil.
Reemplace
sqrt
con el símbolo real en su calculadora. Muestra una lista de números separada por salto de línea, que es un formato razonable.fuente
JavaScript ES6, 76 bytes
Es un generador llamado
j
. Para usar, establecera = j(<your value>);
. Para ver el siguiente valor en la secuencia, ingresea.next().value
.Sin golf:
fuente
F # 77 bytes
No termina en 1, pero continúa.
Uso:
Versión que realmente termina en 1, 100 bytes
Sin golf
fuente
Perl 5, 34 bytes
33, más 1 para en
-pE
lugar de-e
Explicación
Primero,
-p
establece la variable$_
igual a la entrada de stdin. Luego comenzamos un bloque de código:Finalmente,
-p
impresiones$_
.De igual longitud
También utiliza
-p
.Esto: impresiones
$_
; asigna como arriba; prueba si el valor de retorno desay
(que es 1), menos el nuevo valor de$_
, es 0, y rehace el bloque si es así; luego imprime$_
al final.fuente
corriente continua,
2221 bytesExplicado:
Hay un error: cuando la entrada es
1
, la salida consta de dos1
s.fuente