¡Haga que su programa sea secuencial! [cerrado]

8

Su tarea, si elige aceptarla, es simple.

Objetivo

Debe crear un programa que, cuando se ejecute, imprima algunos términos (tantos como desee) en la secuencia que elija. La secuencia debe ser una secuencia OEIS válida . El giro es que cuando tomas los caracteres de tu código que componen tu secuencia, los unes y los ejecutas en el mismo idioma , debes obtener la fórmula para el enésimo de tu secuencia para tu secuencia.

Ejemplo

Digamos que hice este programa:

abcdefghij

y elegí la secuencia de cuadrados: http://oeis.org/A000290

y lo elegí para imprimir los primeros 5 términos de la secuencia, la salida debería ser:

1, 4, 9, 16, 25

Nota: la salida es flexible, puede elegir qué delimitador desea separar los términos, pero el delimitador debe ser notable para que cada uno de los términos de la secuencia pueda diferenciarse.

Ahora, el personaje en el índice 1 es a. El carácter en el índice 4 es d. El carácter en el índice 9 es i. Entonces mi nuevo programa sería:

adi

y tendría que imprimir la fórmula del enésimo término para mi secuencia, que es:

n^2

¡Simple!

Otras cosas

  • Debe imprimir un mínimo de 5 términos.
  • Puede elegir 0 o 1 índice.
  • Números repetidos significa caracteres repetidos.
  • Si su secuencia no está en orden (por ejemplo, va hacia atrás), entonces su código aún la sigue (por ejemplo, su código está escrito hacia atrás).
  • Debe usar y solo usar los números dentro de los límites de su respuesta, incluso si ya ha salido de los límites. No puede usar números de la misma secuencia que no imprimió.
  • Si su secuencia no tiene oficialmente una fórmula, puede usar las primeras 3 letras del nombre indicado en el sitio web de OEIS (por ejemplo, la secuencia de Fibonacci se imprimiría fiby la secuencia de lucas-lehmer se imprimiría luc).

Recuerde, este es el , por lo que la respuesta más corta, en bytes, gana.

FinW
fuente
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Martin Ender el
¿Debe ser el nombre de la variable n?
ETHproductions
Pongo esto en espera hasta que se resuelvan algunos detalles más sobre el desafío (ver la sala de chat vinculada anteriormente).
Martin Ender el
55
A las personas que ya emiten votos de reapertura. Si una respuesta asume que debe tomar tantos valores de la secuencia como sea posible, y otra respuesta asume que solo toma tantos como haya impreso en el programa completo, entonces el desafío no está claro y debe mejorarse antes de agregar incluso Más respuestas . Además, este no es el único caso límite que aún no se aborda (¿cómo se deben manejar las secuencias que no aumentan o las secuencias con valores repetidos?).
Martin Ender
Me encanta este desafío, pero debería ser un concurso para ver quién puede usar la fórmula más compleja.
Urna de pulpo mágico

Respuestas:

3

05AB1E , 10 bytes, A008585

Este código genera los primeros 11 elementos de la secuencia 3n .

3TÝ' §n*»J

Pruébalo en línea!

Explicación

3            # push 3
             # STACK: 3
 TÝ          # push range [0 ... 10]
             # STACK: 3, [0,1,2,3,4,5,6,7,8,9,10]
   ' §       # push a space char converted to string
             # STACK: 3, [0,1,2,3,4,5,6,7,8,9,10], " "
      n      # square the string
             # STACK: 3, [0,1,2,3,4,5,6,7,8,9,10]
       *     # multiply the top 2 elements of the stack
             # STACK: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
        »    # join by newlines
         J   # join to string

Tomar cada enésimo elemento (indexado a 0) da:

3'nJ

que produce 3n

Emigna
fuente
5

Python 2, 35 Bytes

Decidí usar la secuencia obvia A000027 , que esencialmente tiene la fórmula n;) Si ejecuta el siguiente código:

#print'n'
n=1
exec'print n;n+=1;'*8

Obtienes la salida:

1
2
3
4
5
6
7
8

Y si toma los 8 caracteres de mi código fuente (indexado en 0), obtendrá esto:

print'n'

Que simplemente imprime n.


Si esperaba una respuesta más emocionante, aquí hay una solución de Python 2 para n^2, es decir, A000290 :

#p  r    i      n        t          '            n              ^                2                  '
n=1
exec'print n*n;n+=1;'*10
Kade
fuente
4

05AB1E, 7 6 bytes, A000027

5L'n s

Pruébalo en línea!

Explicación:

5L      # Push [1, 2, 3, 4, 5]
  'n    # Push "n"
        # Do nothing
     s  # Swap (only in original program)
        # Implicit print
Oliver Ni
fuente
4L"n"stambién es una opción, ¿o estoy fuera de lugar aquí?
Urna mágica de pulpo
Sí lo es. Pero tiene que ser 5no4
Oliver Ni
"y lo elegí para imprimir los primeros 5 términos de la secuencia" - OP
Magic Octopus Urn
1
@carusocomputing Mira en la parte inferior
Oliver Ni
3

Octava, 64 bytes A000290

Fui por el n^2uno:

@()(1:5 ).^2 % '        n          ^            2              '

Tome los términos 1, 4, 9, 16, 25, 36, 49 y 64 para obtener:

@()'n^2'

que imprime:

n^2
Stewie Griffin
fuente
2

05AB1E , 30 28 bytes, A000290

Esta es la secuencia de cuadrados

"  n    ^      2        "5Ln

Emite los primeros 5 términos de la secuencia con la fórmula n^2:

[1, 4, 9, 16, 25]

Pruébalo en línea!

Esto es 1 indexado. Entonces, tomando los caracteres del código que componen la secuencia, obtengo

"n^2"

Que salidas

n^2

Pruébalo en línea!

Explicación

"  n    ^      2        "              # push this string
                         5             # push 5
                          L            # push range [1, ..., 5]
                            n          # square it
                                       # implicit output
usuario41805
fuente
1

Maravilla , 16 bytes A005843

 0";2"tk 5gen *2

Esto una vez fue DASH, pero ahora ha cambiado su nombre a Wonder.

Emite los primeros 6 números pares. Tenga en cuenta el espacio inicial. Mantener los índices 0, 2, 4, 6 y 8 rinde:

 "2t 

Que impresiones 2t.

Explicación

0";2"

Esto es solo una cadena y un número.

tk 5gen *2

Esto genera una lista infinita de números pares a partir de 0, luego toma los primeros 5 elementos de esa lista.

Mama Fun Roll
fuente
1

MATL , 8 bytes, A000027

Gracias a Oliver por una corrección que interpreta el desafío.

'n'  5:&

El código se imprime 1 2 3 4 5. Manteniendo solo los primeros caracteres que imprime n.

Pruébalo en línea!

Luis Mendo
fuente
1

Octava, 49 bytes, A109234

@()  1      :      5     %'floor (n*sin h(1)) ';]

La secuencia floor(n*sinh(1))son todos los números desde 1y hacia arriba, excepto 6, 13, 20, 26, 33, 40, 46, _3, _0, _6 ...que los caracteres utilizados para formar 1 2 3 4 5deben colocarse en esas posiciones. Las posiciones restantes se utilizan para la cadena que explica la función.

Stewie Griffin
fuente
0

Pajar , 21 10 9 Bytes

Haystack ha agregado muchas funciones nuevas en los últimos días :) Por supuesto, voy a usar A000027 . Aquí está el programa inicial:

<"n"o|OR4

Esto imprimirá:

[1, 2, 3, 4, 5]

Y si toma los caracteres 1-5, 0 indexados, obtendrá:

"n"o|

Que impresiones n.


Si quieres divertirte un poco más, aquí hay una solución para A000290 :

^"_(n\D2l^
3keU02/:[W
D5m"5s\ih_
Cr:OF]uAIe
hWd>g|AkuH
/6R>ud*O,\
)G:q$n|4y{
:|v\X:?dP/

Si desea ver solo los caracteres necesarios, haga clic aquí .

Esto imprimirá los primeros 7 cuadrados, y sus caracteres correspondientes en el programa anterior, indexados en 0, son:

"n^2"O|

Que impresiones n^2.

Kade
fuente