Zadanie
Istnieje zestaw liczb x
, które x^2
dzielą 7^x-1
.
Twoim zadaniem jest znalezienie tych liczb. Biorąc pod uwagę wartość n, kod wypisze n-tą liczbę, która jest zgodna z tą regułą.
Przykłady 1-indeks
In Out
3 3
9 24
31 1140
Odpowiednią sekwencję można znaleźć tutaj .
Zasady
Najkrótsza odpowiedź będzie zwycięzcą *
Obowiązują standardowe zasady gry w golfa
Luki są niedozwolone
Twoja odpowiedź może być zindeksowana 0 lub 1, proszę podać w swojej odpowiedzi
n
? Mogę podać prawidłowy wynikn=9
, alen=10
już powoduje mi problemy.n=10
daje mi 32; to dlatego, że zaczyna używać podwójnego zamiast liczb całkowitych, a potem mod jest zły. :(Odpowiedzi:
Haskell, 34 bajty
Korzysta z indeksowania opartego na 0. Przykład użycia:
([x|x<-[1..],mod(7^x-1)(x^2)<1]!!) 30
->1140
.Jest to bezpośrednie wdrożenie definicji. Tworzy listę wszystkich liczb
x
i wybieran
th.źródło
Pyth , 10 bajtów
Program, który pobiera liczbę całkowitą i wypisuje wartość z jednym indeksem.
Wypróbuj online!
Jak to działa
źródło
JavaScript (ES7), 40 bajtów
To traci precyzję dość szybko ze względu na fakt, że JS traci precyzję
7**19
. Oto wersja ES6 o niemal dowolnej precyzji:To kończy się w ciągu około sekundy dla przypadku testowego 31.
Kilka dłuższych podejść:
źródło
05AB1E , 11 bajtów
Wypróbuj online!
Z jakiegoś powodu nie mogę dostać się
½
do pracyµ7Nm<NnÖ½N
lub byłbym związany z Pyth..
źródło
Ö
na mojej liście poprawek od miesięcy, ale nigdy nie udało mi się sobie z tym poradzić. W każdym razie nie potrzebujesz,N
ponieważµ
automatycznie wypisuje ostatnie,N
jeśli stos jest pusty.Python 2 ,
4846 bajtówDzięki @Dennis za -2 bajty!
Funkcja rekursywna o jednym indeksie, która pobiera dane wejściowe za pomocą argumentu i zwraca wynik.
Wypróbuj online! (Zwiększono limit rekurencji, aby umożliwić uruchomienie ostatniego przypadku testowego)
Jak to działa
n
jest pożądanym indeksem ii
jest zmienną zliczającą.Wyrażenie
~-7**i%i**2<1
zwracaTrue
(równoważne1
), jeślii^2
dzieli7^i - 1
, iFalse
(równoważne0
) w przeciwnym razie. Za każdym razem, gdy wywoływana jest funkcja, wynik wyrażenia jest odejmowanyn
, zmniejszając się przyn
każdym znalezieniu trafienia;i
jest również zwiększany.Zachowanie zwarciowe
and
oznacza, że gdyn
jest0
,0
jest zwracane; to jest przypadek podstawowy. Po osiągnięciu tego rekurencja zostaje zatrzymana, a bieżąca wartośći
jest zwracana przez oryginalne wywołanie funkcji. Zamiast jawnie używaći
, odbywa się to na podstawie faktu, że dla każdego wywołania funkcji wykonano inkrement przy użyciu-~
przed wywołaniem;0
i
czasy inkrementacji dająi
, zgodnie z wymaganiami.źródło
(~-7**i%i**2<1)
oszczędza kilka bajtów.Python 2 ,
575351 bajtów-4 bajty dzięki ETHproductions
-2 bajty dzięki TuukkaX
Wypróbuj online!
sekwencja jest indeksowana 1
źródło
(7**i)
? Usunąłem je i zadziałało w przypadku tych, których próbowałem.**
ma wyższy priorytet niż~
i-
Python 2, 57 bajtów
W przypadku dużych wartości zajmuje to naprawdę bardzo dużo czasu. Zużywa również dużo pamięci, ponieważ buduje całą listę dalej niż to konieczne. Wynik jest indeksowany zerem.
Wypróbuj online
źródło
2**n+1
górną granicę?2**50
. Mógłbym użyć9**n+9
, ale zajmuje to znacznie więcej czasu. Zacząłem biegaćf(20)
jakiś czas temu (z2**n+1
); wciąż nie zostało ukończone.Mathematica, 43 bajty
W tej liczbie bajtów mam obecnie trzy różne rozwiązania:
źródło
Divisible
.Cases[Range[#^3],x_/;x^2∣(7^x-1)][[#]]&
oparty na heurystycznym argumencie, że n ^ 3 jest górną granicą. Odkryłem naprawdę cudowny dowód na to, że ten margines jest zbyt wąski, aby go pomieścić :)PARI / GP , 42 bajty
Całkiem proste. Indeksowane 1, choć można to łatwo zmienić.
lub
źródło
Python 3 , 45 bajtów
Zwraca wartość True dla danych wejściowych 1 , co jest domyślnie dozwolone .
Wypróbuj online!
źródło
R, 35 bajtów
To działa tylko dla
n<=8
.Oto jednak dłuższa wersja, która działa
n<=25
dla 50 bajtów :źródło
8
dlatego, że stało się długim int?gmp
, który pozwala na dowolnie duże liczby całkowite. Jednak szybko brakuje mi pamięci RAM do obliczania czegokolwiek powyżejn=25
.PHP,
4749 bajtówDziała tylko dla n <9 (
7**9
jest większy niżPHP_INT_MAX
64-bitowy)62 bajty przy użyciu liczb całkowitych o dowolnej długości: (nie testowano; PHP na moim komputerze nie ma bcmath)
Uruchom z
php -nr '<code>' <n>
.pseudo kod
źródło
Pyke, 10 bajtów
Wypróbuj tutaj!
źródło
Clojure , 83 bajty
Wypróbuj online!
To buduje nieskończoną listę Java BigIntegers od 1 i filtruje je według definicji. Wykorzystuje indeksowanie od zera do wybrania n- tej wartości z filtrowanej listy.
źródło
Perl 5, 35 bajtów
Cóż, tego brakowało, więc oto:
map{$_ if!((7**$_-1)%($_**2))}1..<>
źródło
PowerShell, za dużo bajtów
Żeby zobaczyć, czy to możliwe i tak jest.
źródło
Perl 6 ,
3534 bajtów0-indeksowane.
Ogolił się jeden bajt dzięki Bradowi Gilbertowi.
źródło
{grep(…)}
QBIC , 39 bajtów
Nie mogłem go uruchomić w QBasic 4.5, ale wydaje się, że działa dobrze w QB64. Z jakiegoś niewytłumaczalnego powodu QBasic odmawia czystego podzielenia 13 841 287 200 przez 144, ale zamiast tego daje resztę -128. Następnie zwraca 16 jako siódmy element tej sekwencji zamiast 12 ...
źródło
Cud , 28 bajtów
Zero indeksowane. Stosowanie:
Filtruje z listy liczb naturalnych z predykatem, który określa, czy
x^2
można ją podzielić7^x-1
, a następnie otrzymuje n-ty element na tej liście.źródło
Tcl , 73 bajty
Wypróbuj online!
źródło