Definicje
Kwadratowe pozostałości
Liczbą całkowitą nazywany jest reszta kwadratowa modulo , jeśli istnieje całkowita takie, że:
Zbiór kwadratowych reszt modulo można łatwo obliczyć, patrząc na wyniki dla 0 \ le x \ le \ lfloor n / 2 \ rfloor .
Sekwencja wyzwań
Definiujemy jako minimalną liczbę wystąpień o tej samej wartości dla wszystkich par reszt kwadratowych modulo .
Pierwsze 30 warunków to:
To jest A316975 (przesłane przeze mnie).
Przykład:
Kwadratowe reszty modulo wynoszą , , , , i .
Dla każdej pary tych kwadratowych reszt obliczamy , co prowadzi do następującej tabeli (gdzie jest po lewej stronie, a jest na górze):
Minimalna liczba wystąpień tej samej wartości w powyższej tabeli wynosi (dla , , i ). Dlatego .
Twoje zadanie
Możesz:
- weź liczbę całkowitą i wydrukuj lub zwróć (indeksowane 0 lub indeksowane 1)
- weź liczbę całkowitą i wydrukuj lub zwróć pierwsze warunki sekwencji
- nie przyjmuj żadnych danych i drukuj sekwencję na zawsze
- Twój kod musi być w stanie przetworzyć dowolną z 50 pierwszych wartości sekwencji w mniej niż 1 minutę.
- Biorąc pod uwagę wystarczającą ilość czasu i pamięci, Twój kod musi teoretycznie działać dla każdej dodatniej liczby całkowitej obsługiwanej przez Twój język.
- To jest golf golfowy .
code-golf
sequence
number-theory
Arnauld
źródło
źródło
+n
wnętrze(...)mod n
nie ma żadnego efektu? Jeśli tak, to bardzo dziwne, że jest to część definicji.(some_potentially_negative_value + n) mod n
.) Myślę, że lepiej jest mieć to w wyzwaniu programistycznym, ponieważ znak wyniku zależy od języka .a_p = round(p/4)
liczbach pierwszych jest równa , co daje nam wartości dla wszystkich liczb bez kwadratów. Ale sytuacja wydaje się skomplikowana w przypadku liczb pierwszych, a przypadki 3 mod 4 i 1 mod 4 należy rozpatrywać osobno.Odpowiedzi:
MATL , 14 bajtów
Wypróbuj online! Lub sprawdź pierwsze 30 wartości .
Wyjaśnienie
źródło
Japt
-g
,2220 bajtówZbyt długo zastanawiałem się, na czym właściwie polega wyzwanie, zabrakło czasu na dalszą grę w golfa: \
Wysyła
n
th termin w sekwencji. Zaczyna walczyć, gdy dane wejściowe>900
.Wypróbuj lub sprawdź wyniki dla 0-50
Wyjaśnienie
źródło
Galaretka ,
1310 bajtów-1 dzięki Dennis (zmuszając interpretacji dwójkowym z wiodącym
ð
)-2 więcej także dzięki Dennis (od pary może być deduplikowane możemy uniknąć
R
a2
)Łącze monadyczne przyjmujące dodatnią liczbę całkowitą, która daje nieujemną liczbę całkowitą.
Wypróbuj online! Lub zobacz pierwsze 50 warunków .
W jaki sposób?
źródło
05AB1E ,
22201513 bajtów-2 bajty dzięki @Mr. Xcoder .
Wypróbuj online lub sprawdź pierwsze 99 przypadków testowych (w około 3 sekundy) . (UWAGA: Starsza wersja Pythona jest używana w TIO zamiast nowego przepisywania Elixir. Jest około 10 razy szybsza, ale wymaga trailing
¬
(head), ponieważ.m
zwraca listę zamiast pojedynczego elementu, który dodałem do stopki.)Wyjaśnienie:
źródło
Ýns%ÙãÆI%D.m¢
. (nie w starszej wersji, w nowej wersji)Dâ
zamiastã
..>.> I nie wiedziałem, że.m
działał inaczej w przepisywaniu Elixiru. Pierwotnie miałem nową wersję, ale przełączyłem się na starszą wersję po tym, jak zauważyłem, że¥
nie działa (co naprawiłeś za pomocąÆ
). Nadal jednak korzystam ze spuścizny TIO, ponieważ jest o wiele szybsza w przypadku tego wyzwania.C (gcc) ,
202200190188187186 bajtówdwadwanaścieczternaściepiętnaście bajtów dzięki pułapce cat .Wypróbuj online!
źródło
Python 2 , 97 bajtów
Wypróbuj online!
źródło
K (ngn / k) , 29 bajtów
Wypróbuj online!
{
}
funkcja z argumentemx
!x
liczby całkowite od0
dox-1
i:
Przypisać doi
x!
modx
?
wyjątkowyr:
Przypisać dor
-\:
odejmij od każdego lewegor-\:r
macierz wszystkich różnicx!
modx
,/
połącz wiersze macierzy=
grupa zwraca słownik z unikatowych wartości na listy indeksów występowania#:'
długość każdej wartości w słowniku&/
minimumźródło
Wolfram Language (Mathematica) , 64 bajty
Wypróbuj online!
źródło
Rubinowy , 88 bajtów
Wypróbuj online!
źródło
APL (Dyalog Unicode) ,
2824 bajtówWypróbuj online!
Funkcja bezpośredniego prefiksu. Zastosowania
⎕IO←0
.Dzięki krakowi krakowi za 4 bajty!
W jaki sposób:
źródło
2*⍨
→×⍨
,r←¨⊂r
→∘.-⍨
,{≢⍵}
→⊢∘≢