Najpierw porozmawiajmy o sekwencjach Beatty . Biorąc pod uwagę dodatnią liczbę niewymierną r , możemy skonstruować nieskończoną sekwencję poprzez pomnożenie dodatnich liczb całkowitych do r w kolejności i zabranie głosu za każde wynikowe obliczenie. Na przykład,
Jeśli r > 1, mamy specjalny warunek. Możemy utworzyć inną liczbę niewymierną s jako s = r / ( r - 1). To może następnie wygenerować jego własnej sekwencji Beatty, B y . Schludny Sztuką jest to, że B R i B s są komplementarne , co oznacza, że każda dodatnia jest dokładnie w jednym z dwóch sekwencji.
Jeśli ustawimy r = ϕ, złoty stosunek, otrzymamy s = r + 1 i dwie specjalne sekwencje. Mniejsza sekwencja Wythoff do R :
1, 3, 4, 6, 8, 9, 11, 12, 14, 16, 17, 19, 21, 22, 24, 25, 27, 29, ...
i górna sekwencja Wythoffa dla s :
2, 5, 7, 10, 13, 15, 18, 20, 23, 26, 28, 31, 34, 36, 39, 41, 44, 47, ...
Są to odpowiednio sekwencje A000201 i A001950 w OEIS.
Wyzwanie
Biorąc pod uwagę dodatnią liczbę całkowitą wejściową 1 <= n <= 1000
, wyślij jedną z dwóch różnych wartości wskazujących, czy dane wejściowe są w dolnej sekwencji Wythoffa czy w górnej sekwencji. Wartościami wyjściowymi mogą być -1
i 1
, true
i false
, upper
i lower
itd.
Chociaż przesłany algorytm musi teoretycznie działać dla wszystkich danych wejściowych, w praktyce musi on działać tylko z pierwszymi 1000 liczbami wejściowymi.
I / O i reguły
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Można założyć, że dane wejściowe i wyjściowe pasują do rodzimego typu liczb w twoim języku.
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
źródło
Odpowiedzi:
JavaScript (ES6),
5035 bajtówWyjścia
1
dla dolnej i0
górnej. Objaśnienie: Częściowa wykazy wartości logicznych może być wykonana przy użyciu Fibonacciego jak tożsamość: podany dwa wykazy, począwszy1
i10
każda następna lista jest połączeniem dwóch poprzednich, w wyniku czego101
,10110
,10110101
itd. W tym przypadku jest to nieco golfier mieć fałszywy 0 wpis0
i użyj go do skonstruowania drugiego elementu listy.źródło
Haskell , 26 bajtów
Wypróbuj online!
Bez pływaków, nieograniczona precyzja. Dzięki za H.PWiz za dwa bajty.
źródło
~(x:t)
. Dziękiundefined
. Fakt, że istnieją również dwa różne zdefiniowane, jest po prostu przypadkowy.Python , 25 bajtów
Wypróbuj online!
Wykorzystuje bardzo prosty warunek:
Zauważ, że wynik modulo jest dodatni, chociaż
-n
ujemny, co odpowiada modulo w Pythonie.Odpowiada to kodowi:
Wypróbuj online!
Oszczędzamy bajt, podwajając do
-(n*2)%(phi*2)<2
.źródło
05AB1E , 9 bajtów
Wypróbuj online!
0 oznacza górny, 1 oznacza dolny. Wypróbuj pierwsze 100: Wypróbuj online!
Surowy zrzut poleceń:
źródło
ï
:)5t>;
do 2 bajtów może nie być tego warte ...ï
i¢
lol :) Wszystkie nasze rozwiązania są tak ściśle powiązaneGalaretka , 5 bajtów
Wypróbuj online!
Zaoszczędzono 1 bajt dzięki xnor's Python golf .
Galaretka , 6 bajtów
Wypróbuj online!
Zwraca 1 dla dolnej i 0 dla górnej.
źródło
Øp
5t>;
Brain-Flak , 78 bajtów
Wypróbuj online!
Nie wyprowadza nic dla dolnego i
0
górnego. Przejście na bardziej rozsądny schemat wyjściowy kosztuje 6 bajtów.źródło
Python 2 ,
393332 bajty-6 bajtów dzięki Mr. Xcoder
-1 bajtów dzięki Zacharýmu
Wypróbuj online!
Zwraca
False
dolną iTrue
górnąźródło
lambda n,r=(1+5**.5)/2:-~n//r<n/r
oszczędza 6 bajtów.lambda n,r=.5+5**.5/2:-~n//r<n/r
powinny działać jak dobrze golić jeden bajtJulia 0.6 , 16 bajtów
Wypróbuj online!
Podczas zabawy z liczbami natknąłem się na tę właściwość: floor (n / φ) == floor ((n + 1) / φ), jeśli n jest w górnej sekwencji Wythoffa, a floor (n / φ) <floor ( (n + 1) / φ), jeśli n jest w dolnej sekwencji Wythoffa. Nie zorientowałem się, jak ta właściwość się pojawia, ale daje prawidłowe wyniki co najmniej do n = 100000 (i prawdopodobnie więcej).
Stara odpowiedź:
Julia 0.6 , 31 bajtów
Wypróbuj online!
Zwraca
true
dla dolnej ifalse
górnej sekwencji Wythoffa.źródło
Pyth , 8 bajtów
Wypróbuj tutaj!
Zwraca 1 dla dolnej i 0 dla górnej.
źródło
Wolfram Language (Mathematica) , 26 bajtów
Wypróbuj online!
Liczba całkowita
n
znajduje się w dolnej sekwencji Wythoffa iffceil(n/phi) - 1/phi < n/phi
.Dowód, że
ceil(n/phi) - 1/phi < n/phi
...Wystarczający:
Let
ceil(n/phi) - 1/phi < n/phi
.Potem
ceil(n/phi) * phi < n + 1
.Uwaga
n == n/phi * phi <= ceil(n/phi) * phi
.Dlatego też
n <= ceil(n/phi) * phi < n + 1
.Ponieważ
n
iceil(n/phi)
są liczbami całkowitymi, odwołujemy się do definicji floor i statefloor(ceil(n/phi) * phi) == n
, in
znajduje się w dolnej sekwencji Wythoffa.Niezbędny; dowód antykoncepcyjny:
Let
ceil(n/phi) - 1/phi >= n/phi
.Potem
ceil(n/phi) * phi >= n + 1
.Uwaga
n + phi > (n/phi + 1) * phi > ceil(n/phi) * phi
Stąd
n > (ceil(n/phi) - 1) * phi
.Ponieważ
(ceil(n/phi) - 1) * phi < n < n + 1 <= ceil(n/phi) * phi
,n
nie jest w dolnej sekwencji Wythoff.źródło
Japt , 10 bajtów
Zwraca true dla dolnej i false dla górnej.
Wypróbuj online!
Wyjaśnienie:
źródło
Java 10,
775352 bajtyOdpowiedź na Python 2 dla portu @ Rod .
-1 bajt dzięki @ Zacharý .
Wypróbuj online.
Stara
7776 bajtów odpowiedź:-1 bajt dzięki @ovs za coś co poleciłem sobie w zeszłym tygodniu .. xD
Zwroty
1
za niższe;0
do cholewki.Wypróbuj online.
Wyjaśnienie:
i*Phi
jest obliczany na podstawie wzięcia(sqrt(5)+1)/2 * i
, a następnie wprowadzamy wartość podłogową, rzucając ją na liczbę całkowitą w celu obcięcia dziesiętnego.źródło
++i<=n
na twojej starej odpowiedzi może byći++<n
.n->{var r=Math.sqrt(5)/2+.5;return(int)(-~n/r)<n/r;}
Haskell ,
15313912679 bajtówNieograniczona precyzja!
Wypróbuj online!
Wyjaśnienie
Zamiast używać przybliżenia złotego współczynnika do obliczania wyniku, co oznacza, że są podatne na błędy wraz ze wzrostem wielkości wejściowej. Ta odpowiedź nie. Zamiast tego wykorzystuje wzór podany w OEIS, który
a
jest unikalną sekwencją taką, żegdzie
b
jest zamówiony komplement.źródło
Brachylog , 8 bajtów
Wypróbuj online!
Predykat się powiedzie, jeśli dane wejściowe znajdują się w dolnej sekwencji Wythoffa, a porażki, jeśli będą w górnej sekwencji Wythoffa.
Jeśli niepowodzeniem zakończenia jest poprawna metoda wyjściowa, pierwszy bajt można pominąć.
źródło
φ
w programie Brachylog. Nareszcie!MATL , 8 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
K (oK) , 20 bajtów
Rozwiązanie:
Wypróbuj online!
Wyjaśnienie:
źródło
TI-BASIC (TI-84), 18 bajtów
Wejście jest w
Ans
.Wyjście jest włączone
Ans
i jest drukowane automatycznie.Wydruki
1
jeśli dane wejściowe są w dolnej sekwencji lub0
jeśli jest w górnej sekwencji.Przypadkowo ten program będzie działał tylko dla0 <N< 1000 .
Przykład:
Wyjaśnienie:
Uwaga: TI-BASIC jest językiem tokenizowanym. Liczba znaków nie jest równa liczbie bajtów.
źródło
cQuents , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło