Los primeros dos números MU son 2 y 3. Todos los demás números MU son el número más pequeño que aún no aparece y que se puede expresar como el producto de dos números MU distintos anteriores de una sola manera.
Aquí están los primeros 10
2, 3, 6, 12, 18, 24, 48, 54, 96, 162
Tarea
Dado un número positivo, calcule y genere el enésimo número MU.
Esta es una competencia de código de golf , por lo que debe intentar hacer que su código fuente sea lo más pequeño posible.
Respuestas:
Pyth,
2221 bytesPruébalo en línea. Banco de pruebas.
0 indexado.
Explicación
fuente
@
letrero en la última línea está desalineado. No puedo hacer una edición sugerida, ya que es un cambio de 2 caracteres.Haskell,
8077 bytesPruébalo en línea!
Cómo funciona
fuente
Jalea , 22 bytes
Un enlace monádico, 1 indexado.
Pruébalo en línea!
¿Cómo?
fuente
R ,
1271181111081051009890 bytes8 bytes gracias a Giuseppe.
Pruébalo en línea!
fuente
<
tiene una precedencia menor que+
por lo que no pude entender qué demonios+g%in%r<3
estaba haciendo, y mientras lo hacía, diste cuenta de las dos partes que iba a sugerir ... +1n=scan()
lugar de una definición de función para leer desde stdin; eso te llevará por debajo de 1000
CJam (32 bytes)
Demostración en línea con indexación 0.
No estoy seguro de que haya mucho por hacer más allá de una traducción trivial de la especificación con una excepción: al comenzar con una lista de
[0 1 2 3]
(en lugar de[2, 3]
) guardo un byte inmediatamente en la inicialización y otros dos al poder hacerlo0=|
(agregando solo el nuevo elemento porque su frecuencia está1
y ya está en la lista), pero no introduzca ningún elemento falso porque para todosx
en la lista0*x
y1*x
ya están en la lista.fuente
Python 2 ,
127118 bytesPruébalo en línea!
fuente
Mathematica, 154 bytes
modificación simple del código encontrado en el enlace oeis
fuente
PHP , 130 bytes
0 indexado
Pruébalo en línea!
Expandido
PHP , 159 bytes
0 indexado
Pruébalo en línea!
PHP , 161 bytes
0 indexado
Pruébalo en línea!
fuente
Mathematica, 140 bytes
fuente
MATL , 25 bytes
Pruébalo en línea!
Explicación
fuente
Perl 6 , 96 bytes
Pruébalo en línea!
2, 3, { ... } ... *
es una secuencia infinita donde cada elemento que comienza con el tercero se calcula mediante el bloque de código delimitado por llaves. Dado que el bloque de código toma sus argumentos a través de la@_
matriz slurpy , recibe toda la secuencia actual en esa matriz.@_.combinations(2)
es una secuencia de todas las combinaciones de 2 elementos de@_
..classify({ [*] $_ })
clasifica cada 2 tuplas por su producto, produciendo un hash donde los productos son las claves y los valores son la lista de 2 tuplas que tienen ese producto..grep(*.value == 1)
selecciona esos pares clave-valor del hash donde el valor (es decir, la lista de pares que tiene esa clave como producto) tiene un tamaño de 1.».key
selecciona solo las claves de cada par. Esta es la lista de productos que surgen de una sola combinación de factores de la secuencia actual..sort
ordena los productos numéricamente.first * ∉ @_, ...
encuentra el primero de esos productos que aún no ha aparecido en la secuencia.fuente
JavaScript (ES6),
119118117 bytesUna función recursiva que toma un índice basado en 0.
¿Cómo?
En cada iteración de f () , utilizamos el último término m de la secuencia y una matriz inicialmente vacía b para identificar el siguiente término. Para cada producto d> m de dos números MU distintos anteriores, hacemos:
y luego mantener el valor mínimo de b .
La expresión anterior se evalúa de la siguiente manera:
Esto garantiza que los productos que pueden expresarse en más de una forma nunca serán seleccionados.
Formateado y comentado
Manifestación
Mostrar fragmento de código
fuente
Haskell ,
117115113 bytesPruébalo en línea!
fuente
n x=(*)<$>x<*>1:x
Python
32 ,167139136133123121120118 bytesPruébalo en línea!
¡Gracias a @ Mr.Xcoder y @LeakyNun por las mejoras!
fuente
p.count(q)==1
ap.count(q)>0
sea válido, porque ese es el código que garantiza la condición "exactamente de una forma" del desafío.p.count(q)-~(q in a)<=3
es equivalente ap.count(q)+(q in a)<3