Hacer un n-malabarista

8

Me han interesado mucho las secuencias que siguen a la propiedad

a(n+1)=a(na(n))

recientemente, así que aquí hay otra pregunta sobre estas secuencias. En particular, nos interesan las secuencias desde los enteros hasta los números naturales.

Una secuencia periódica con la propiedad anterior es un n -Juggler si y solo si contiene exactamente n valores distintos. Por ejemplo, la siguiente secuencia es un malabarista 2

... 2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1 ...

porque solo contiene los números 1y 2.

Un ejemplo de un malabarista tres sería

... 3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5 ...

ya que hace malabares 1, 3y 5.

Tarea

Dado n> 1 como entrada, genera cualquier n -Juggler.

Puede generar una secuencia de varias maneras, puede

  • genera una función que lo indexa.

  • tomar una entrada adicional del índice y generar el valor en ese índice.

  • genera una subsección continua de la secuencia que, con la propiedad dada, determina de forma exclusiva la secuencia.

Este es el por lo que las respuestas se puntúan en bytes, con menos bytes mejor.

Ad Hoc Garf Hunter
fuente
1
¿Se nos permite imprimir la secuencia indefinidamente?
Sr. Xcoder
3
@ Mr.Xcoder Normalmente diría que sí, pero como estas secuencias son infinitas en ambas direcciones, tengo que decir que no con vacilación. (Si ofrece un argumento convincente, podría cambiar fácilmente de opinión al respecto) Si puede encontrar una manera de imprimir en ambas direcciones, estaría bien.
Ad Hoc Garf Hunter
3
Parece que las secuencias siguen a(n+1) = a(n-a(n)), y no +
TFeld
44
Sí, lo hace: repetir 2,2una vez → 2,2,2,2, repetir de nuevo → 2,2,2,2,2,2, etc. No hay absolutamente ninguna manera de obtener una 1repetición 2,2. La secuencia que obtienes siempre es única.
Aditsu renunció porque SE es MALO
2
Parece que la propiedad ya no existe.
Erik the Outgolfer

Respuestas:

4

Pyth , 5 bytes

t+*%E

Prueba los 2 , 3 , 4 malabaristas.

Recibe dos números, N e I , separados por una nueva línea y en este orden. I es el índice en la secuencia.

Utiliza una fórmula bastante simple: N - 1 + N * (I% N) . Su validez fue confirmada por el OP .

Sr. Xcoder
fuente
3

CJam, 9

¿Qué tal esto?

q~1$,=)*(

Pruébalo en línea

La entrada es n idonde nestá la entrada principal y ies el índice para el que desea obtener el valor.

Explicación:

q~    read and evaluate the input (n and i)
1$    copy n
,=    basically this is a modulo (i%n) that avoids a negative result for negative i
)*    increment, then multiply by n
(     decrement
aditsu renunció porque SE es MALO
fuente
1

Haskell , 17 bytes

n!i=i`mod`n*n+n-1

Pruébalo en línea!

Otra respuesta usando la idea del Sr. Xcoder. De lo contrario, no podría responder la pregunta para ser honesto. :PAGS

totalmente humano
fuente
0

Jalea , 5 bytes

Ɠ%×+’

Pruébalo en línea!

Enfoque del puerto del Sr. Xcoder. El índice I está en STDIN, N es un argumento.

Erik el Outgolfer
fuente