Dado un número entero positivo, imprima esa cantidad de números de Hamming , en orden.
Reglas:
- La entrada será un entero positivo
- La salida debe ser los primeros n términos de https://oeis.org/A051037
- El tiempo de ejecución debe ser <1 minuto
- Este es el código de golf ; el código más corto gana
code-golf
sequence
number-theory
grokus
fuente
fuente
1
s cumple con sus especificaciones. También estará en orden, es decir, no una secuencia desordenada. :)Respuestas:
Haskell,
1019792+ | n | caracteresCalcula el millón completo en 3.7s en la máquina que probé (de forma variable más si realmente desea que se almacene la salida)
Sin golf:
Todo Haskell es notablemente bueno para: definir una lista como una función perezosa de sí misma, de una manera que realmente funcione.
fuente
Personajes de Python 181
fuente
h=[]
, usando una distancia mínima de tabulación y saltos de línea de un solo carácter, y el tamaño del archivo termina siendo 187 bytes.h=[1]
. Además, proporcione un número directamente en el código fuente, para guardar caracteres para los números<1000000
.Ruby -
154231 caracteresY ahora es lo suficientemente rápido, sin duda, todavía puede jugar mucho golf.
fuente
Perl, 94 caracteres (pero demasiado lento)
Sin golf:
Toma 11 minutos calcular los primeros 100,000 números, y ni siquiera quiero pensar en 1,000,000. Obtiene los primeros 10,000 en un orden de 3 segundos; es solo algo parecido a O (n ^ 2) :(
fuente
APL (Dyalog Classic) ,
3423 bytesPruébalo en línea!
fuente
1↓0 1{⍺↑{⍵[⍋⍵]}∪,⍵∘.×⍳5}⍣≡⍨1+⊢
{⍺⍴∧∪,⍵×⍀⍳5}`⍣≡∘1
en extendido. (Retroceso necesario debido a error).Haskell, 71
Salida
fuente
Ursala, 103
Salida para
main = smooth<2,3,5>* nrange(1,20)
fuente
Mathematica, 54 bytes
Ineficiente pero corta función pura. Calcula todos los productos de la forma
2^i * 3^j * 5^k
para0 <= i, j, k <= #
(#
es el primer argumento de la función), luegoSort
s ellos yTake
s solo el primero#
.fuente
Japt, 15 bytes
Intentalo
Intentalo
3 bytes
Si el enfoque de Jo King se considera válido.
Intentalo
fuente