Zdefiniuj 1-indeksowaną sekwencję w następujący sposób:
A083569(1) = 1
A083569(n)
gdzien
jest liczbą całkowitą większą niż1
, jest najmniejszą liczbą całkowitą m, która nie występuje wcześniej,m+n
a więc liczbą pierwszą.
Twoim zadaniem jest przyjęcie n
i powrót A083569(n)
.
n A083569(n)
1 1
2 3
3 2
4 7
5 6
6 5
7 4
8 9
9 8
10 13
11 12
12 11
13 10
14 15
15 14
16 21
17 20
18 19
19 18
20 17
Więcej przypadków testowych można znaleźć tutaj . Oryginalną sekwencję OEIS można znaleźć tutaj .
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa. Obowiązują standardowe luki .
Odpowiedzi:
Haskell ,
878683807469 bajtówDzięki xnor za zasugerowanie zmian, które pozwoliły zaoszczędzić 3 bajty!
Wypróbuj online!
Jestem nowy w Haskell i Haskell w golfa, opinie są mile widziane!
Wyjaśnienie
Definiujemy funkcję
f n
. Definiujemyf n
jako pierwszy element!!0
listy:Podział, który jest:
źródło
[2,3..]
Może być po prostu[2..]
, licząc do dnia 1 jest domyślnym. Jest wbudowanynotElem
.notElem
ale pierwsza wskazówka była pomocna i upewnię się, że trzymam drugą w tylnej kieszeni.f 1
błędna, powinna wynosić 1.Galaretka ,
1615 bajtówZakłada się, że A083569 (n) ≤ n² (sekwencja wydaje się rosnąć liniowo).
Wypróbuj online!
Jak to działa
źródło
A083569(n)
jest co najwyżejn
th pierwsza większa niżn
z definicji, co najwyżej2n
th pierwsza, która (bon≥3
) jest mniejsza niż4n*log(n)
według wyników Rossera-Schoenfelda.Pyth -
181715 bajtówDzięki @isaacg za uratowanie mi dwóch bajtów!
Wracając na tę stronę, po pewnym czasie zajętości, mam nadzieję, że jeszcze bardziej zagrasz w golfa.
Wypróbuj online tutaj .
źródło
-TY
jest o jeden bajt krótszy niż!/YT
i jest prawdziwy w tych samych przypadkach.+hdT
na+Th
.C # (.NET Core) , 169 bajtów
Wypróbuj online!
Zdecydowanie najbardziej nieefektywny sposób, aby obliczyć wyniki, więc proszę powstrzymać się od obliczenia
f(n)
dlan>=30
z tym kodem. Pierwszym krokiem jest rekurencyjne obliczenie wartości odf(1)
do,f(n-1)
a następnie przejście do obliczeniaf(n)
przez wyszukanie pierwszegoi
takiego, któryn+i
jest liczbą pierwszą ii
nie znajduje się na poprzedniej liście wartości.źródło
Zestaw x86-64,
5755 bajtówJestem nowym golfistą, więc komentarze / opinie są mile widziane.
Uwaga: jest to zoptymalizowane pod kątem długości kodu maszynowego, a nie długości źródłowej.
Definiuje funkcję, wykorzystując standardową konwencję (tj. Zwraca wartość w eax, pierwszy argument w edi, wszystkie rejestry są zapisywane jako dzwoniące oprócz ebx), który pobiera 32-bitową liczbę całkowitą bez znaku i zwraca najmniejszą wartość m itd.
Źródło:
Wypróbuj online!
źródło
Clojure,
158155 bajtówTo może nadal mieć trochę tłuszczu, z czego nie jestem całkiem zadowolony,
(+ 1 i j)
ale był to najłatwiejszy sposób obsługi bazyn = 1
i reszty.((set r)j)
zwraca,nil
jeślij
nie ma go w zestawie, a(seq ())
na pustej liście zwraca również zero. Oblicza sięn = 1000
w ciągu 48 sekund.Aktualizacja: usunięto
nil
z=
kontroli, ponieważ kod działa poprawnie również bez niego.źródło
Rubin , 62 + 8 = 70 bajtów
Używa
-rprime
flagi.Wypróbuj online!
źródło
Python,
194170110 bajtów84 bajty zapisane przez Dziurawą Zakonnicę
2 bajty zapisane przez Mathmandan
Definiuje funkcję s (n), która przyjmuje liczbę jako dane wejściowe i zwraca A083569 (n).
Wypróbuj online
źródło
p=lambda n:any(n%i<1for i in range(2,n))
do sprawdzenia pierwotności.while(i in a)|any(...