Biorąc pod uwagę dodatnią liczbę całkowitą, wypisz w kolejności tyle liczb hamujących .
Zasady:
- Wejściowy jest dodatnia
- Dane wyjściowe powinny być pierwszymi n terminami https://oeis.org/A051037
- Czas realizacji musi wynosić <1 minutę
- To jest golf golfowy ; najkrótszy kod wygrywa
code-golf
sequence
number-theory
grokus
źródło
źródło
1
s jest zgodne z twoimi specyfikacjami. Będzie również w porządku, tzn. Nie będzie nieuporządkowaną sekwencją. :)Odpowiedzi:
Haskell,
1019792+ | n | postacieOblicza pełny milion w 3,7 s na maszynie, na której testowałem (zmiennie więcej, jeśli naprawdę chcesz przechowywać dane wyjściowe)
Nie golfowany:
Wszyscy Haskell są notorycznie dobrzy w definiowaniu listy jako leniwej funkcji samej siebie, w sposób, który faktycznie działa.
źródło
Znaki Python 181
źródło
h=[]
, używając minimalnej odległości tabulacji i podziałów pojedynczych znaków, a rozmiar pliku kończy się na 187 bajtach.h=[1]
. Podaj także liczbę bezpośrednio w kodzie źródłowym, aby zapisać znaki dla liczb<1000000
.Rubin -
154231 znakówA teraz jest wystarczająco szybki, ale z pewnością wiele golfa może się jeszcze zdarzyć.
źródło
Perl, 94 znaki (ale zbyt wolno)
Nie golfowany:
Obliczenie pierwszych 100 000 liczb zajmuje 11 minut, a ja nawet nie chcę myśleć o 1 000 000. Pierwsze 10 000 robi się w uporządkowanych 3 sekundach; to tylko coś przypominającego O (n ^ 2) :(
źródło
APL (Dyalog Classic) ,
3423 bajtówWypróbuj online!
źródło
1↓0 1{⍺↑{⍵[⍋⍵]}∪,⍵∘.×⍳5}⍣≡⍨1+⊢
{⍺⍴∧∪,⍵×⍀⍳5}`⍣≡∘1
w języku Extended. (Potrzebny jest backtick z powodu błędu.)Haskell, 71
Wynik
źródło
Ursala, 103
Wynik dla
main = smooth<2,3,5>* nrange(1,20)
źródło
Mathematica, 54 bajty
Nieefektywna, ale krótka czysta funkcja. Oblicza wszystkie produkty formularza
2^i * 3^j * 5^k
dla0 <= i, j, k <= #
(#
jest pierwszym argumentem funkcji), a następnieSort
s je iTake
s tylko pierwszy#
.źródło
Japt, 15 bajtów
Spróbuj
Spróbuj
3 bajty
Jeśli podejście Jo Kinga zostanie uznane za prawidłowe.
Spróbuj
źródło