Dado um número inteiro positivo, imprima muitos números hamming , em ordem.
Regras:
- A entrada será um número inteiro positivo
- A saída deve ser os primeiros n termos de https://oeis.org/A051037
- O tempo de execução deve ser <1 minuto
- Isso é código-golfe ; o código mais curto vence
code-golf
sequence
number-theory
grokus
fonte
fonte
1
s está em conformidade com suas especificações. Também estará em ordem, ou seja, não será uma sequência não ordenada. :)Respostas:
Haskell,
1019792+ | n | personagensCalcula o milhão completo em 3,7s na máquina em que testei (variavelmente mais se você realmente deseja que a saída seja armazenada)
Ungolfed:
Todo Haskell é notoriamente bom em: definir uma lista como uma função preguiçosa de si mesma, de uma maneira que realmente funcione.
fonte
Python 181 caracteres
fonte
h=[]
, usando uma distância mínima de tabulação e quebras de linha de um único caractere, e o tamanho do arquivo acaba sendo de 187 bytes.h=[1]
. Além disso, forneça um número diretamente no código-fonte, para salvar caracteres para números<1000000
.Ruby -
154231 caracteresE agora é rápido o suficiente, há definitivamente muito golfe que ainda pode acontecer.
fonte
Perl, 94 caracteres (mas muito lento)
Ungolfed:
Demora 11 minutos para calcular os primeiros 100.000 números, e eu nem quero pensar em 1.000.000. Ele obtém os primeiros 10.000 em 3 segundos arrumados; é apenas algo parecido com O (n ^ 2) :(
fonte
APL (Dyalog Classic) ,
3423 bytesExperimente online!
fonte
1↓0 1{⍺↑{⍵[⍋⍵]}∪,⍵∘.×⍳5}⍣≡⍨1+⊢
{⍺⍴∧∪,⍵×⍀⍳5}`⍣≡∘1
em Extended. (Backtick necessário devido a um bug.)Haskell, 71
Resultado
fonte
Ursala, 103
Saída para
main = smooth<2,3,5>* nrange(1,20)
fonte
Mathematica, 54 bytes
Função pura ineficiente, mas curta. Calcula todos os produtos do formulário
2^i * 3^j * 5^k
para0 <= i, j, k <= #
(#
é o primeiro argumento da função) e, em seguida,Sort
s eTake
s apenas o primeiro#
.fonte
Japonês, 15 bytes
Tente
Tente
3 bytes
Se a abordagem de Jo King for considerada válida.
Tente
fonte