Sekwencja balansista jest opisany w następujący sposób. Począwszy od wejścia 1 , następny okres jest określony przez stosunek nawrotu
Sekwencja kończy się, gdy osiągnie 1, ponieważ wszystkie kolejne warunki byłyby wówczas 1.
Zadanie
Biorąc pod uwagę wejście n
większe lub równe 2, napisz program / funkcję / generator / itp. który wyprowadza / zwraca odpowiednią sekwencję żonglera. Wynik może być w dowolnej rozsądnej formie. Nie możesz używać wbudowanego, który oblicza sekwencję żonglera, ani żadnego wbudowanego, który bezpośrednio daje wynik. Możesz założyć, że sekwencja kończy się w 1
.
Przypadki testowe
Input: output
2: 2, 1
3: 3, 5, 11, 36, 6, 2, 1
4: 4, 2, 1
5: 5, 11, 36, 6, 2, 1
To jest golf golfowy. Najkrótszy kod w bajtach wygrywa.
~5.6*10^7
wartości (wszystkie zatrzymały się do tej pory).Odpowiedzi:
Galaretka ,
121110 bajtówDzięki @ Sp3000 za grę w golfa przy 1 bajcie!
Wypróbuj online!
Jak to działa
źródło
<code> </code>
zamiast backticks wydaje się wyświetlać rzeczywisty znak SP. Dzięki za zwrócenie na to uwagi.Julia,
645048423230 bajtówJest to funkcja rekurencyjna, która przyjmuje liczbę całkowitą i zwraca tablicę zmiennoprzecinkową.
Budujemy tablicę, łącząc dane wejściowe z następnym terminem sekwencji, obliczonym jako x do potęgi jego parzystości powiększonej o 1/2. To daje nam albo x 1/2, albo x 1 + 1/2 = x 3/2 . Podział na liczby całkowite przez 1 otrzymuje podłogę. Gdy warunek x <3 jest prawdziwy, końcowym elementem będzie wartość logiczna, a nie wartość liczbowa, ale ponieważ tablica nie jest typu
Any
, rzutowany jest tak, aby miał ten sam typ co reszta tablicy.Zaoszczędzono 14 bajtów dzięki Dennisowi!
źródło
JavaScript (ES7),
4533 bajtówWyjaśnienie
Podejście rekurencyjne. Zwraca ciąg liczb oddzielony przecinkami.
Test
**
nieużywany w teście zgodności przeglądarki.Pokaż fragment kodu
źródło
**
były obsługiwane we wszystkich przeglądarkach.**
być obsługiwany w C #.Matematyka,
4039 bajtówPodziękowania dla Martina Büttnera za oszczędność 1 bajtu.
Przypadek testowy
źródło
Pyth,
1412 bajtówDemonstracja
Zaczynamy od skumulowanego zmniejszenia,
.u
które w tym przypadku rozpoczyna się na wejściu i stosuje funkcję do momentu powtórzenia wyniku, w którym to momencie wyprowadza wszystkie wyniki pośrednie.Funkcja przyjmuje poprzednią wartość jako
N
. Zaczyna się od pierwiastka kwadratowego z@N2
. Następnie, rozwidla tę wartość na mnożenie przezN
z*B ... N
. Spowoduje to utworzenie listy[N ** .5, (N ** .5) * N]
bez wyników dla nieparzystych i nieparzystych przypadków. Następnie odpowiedni niepochlebny wynik jest wybierany przez indeksowanie do listy za pomocą@ ... N
. Ponieważ Pyth ma modułowe indeksowanie, nie są zgłaszane żadne błędy poza zakresem. Ostatecznie wynik jest zapisany za pomocąs
.źródło
MATL,
1312 bajtówWypróbuj online!
Wyjaśnienie
Dzięki Luis za uratowanie bajtu!
źródło
floor
Funkcja została zmienionak
, dzięki czemu można używać, że zamiastZo
zaoszczędzić 1 bajt. (Przepraszamy za te zmiany; podsumowania wydania można zobaczyć tutaj )Minkolang 0,15 , 25 bajtów
Wypróbuj tutaj!
Wyjaśnienie
źródło
TSQL, 89 bajtów
Wejście wchodzi
@N
:Kod:
źródło
APL,
282416 bajtówJest to program, który przyjmuje liczbę całkowitą i drukuje kolejne wyjścia w osobnych wierszach.
Wyjaśnienie:
Wypróbuj online
Zaoszczędź 8 bajtów dzięki Dennisowi!
źródło
Java 7,
8371 bajtówPierwotnie użyłem typowej
for
pętli, ale musiałem przeskoczyć przez obręcze, aby dobrze działała. Pokradzieżypożyczonego przez użytkownika pomysłu użytkownika 81655 na powtórkę, zmniejszyłem go o dwanaście bajtów.źródło
Haskell, 70 bajtów
Haskell nie ma
sqrt
wbudowanej liczby całkowitej , ale myślę, że może być coś krótszego niżfloor.sqrt.fromInteger
.źródło
Oracle SQL 11.2, 128 bajtów
Nie grał w golfa
Dodanie MOD (i, 2) do .5 jest krótsze, ale występuje błąd w POWER (2, .5):
daje
źródło
R,
5451 bajtówZaoszczędź 3 bajty dzięki plannapusowi.
źródło
floor(n^(.5+n%%2))
don^(.5+n%%2)%/%1
myślę. +1 Niemniej jednak.CJam, 18 bajtów
Sprawdź to tutaj
Podobne do odpowiedzi MATL Dawida .
źródło
Python 3,
57,45,43, 41 bajtówLepsze rozwiązanie dzięki sugestii @mathmandan
Ta metoda wydrukuje każdy numer w nowym wierszu
Poprzednie rozwiązanie: Zmniejsz do 43 bajtów po zaleceniu xnor
Możesz zadzwonić do powyższego, robiąc,
a(10)
który zwraca[10, 3.0, 5.0, 11.0, 36.0, 6.0, 2.0, 1.0]
Powyższe wyświetli wartości jako liczby zmiennoprzecinkowe. Jeśli chcesz je jako liczby całkowite, możemy po prostu dodać dodatkowe 2 bajty dla 43 bajtów:
źródło
[n][:n<2]or
, podobnie jak1/n*[n]or
w przypadku liczby całkowitej.def j(n):print n;n-1and j(n**(.5+n%2)//1)
. (Lub w Pythonie 3,def j(n):print(n);n-1and j(n**(.5+n%2)//1)
ma 42 bajty). Wyświetli sekwencję termin po terminie zamiast zbierać je na liście.n<2or
zamiastn-1and
TI-Basic, 30 bajtów
źródło
Repeat Ans=1
sięWhile log(Ans
i stosowanie√(Ans)Ans^remainder(Ans,2
.JavaScript ES6,
109102 bajtówJa wiem, można to grałem. Zwraca ciąg liczb oddzielonych przecinkami.
źródło
C ++, 122 bajty
źródło
C #, 62 bajty
Zainspirowany przez @ user81655 i @Alex A., użyłem rekurencji.
źródło
Siatkówka, 144 bajty
Wejścia i wyjścia są jednostkowe.
Przedostatni wiersz zawiera spację, a dwie środkowe linie i ostatni wiersz są puste.
Wypróbuj online
Wyjaśnienie
Liczba całkowita pierwiastek kwadratowy w siatkówce , według Digital Trauma
źródło
C,
646361 bajtówźródło
n%2?1.5:0.5
przezn%2+0.5
lub.5+n%2
(jeśli C na to pozwala). Jeślin%2
to prawda,n%2
wynosi 1, w przeciwnym razie 0.TI BASIC, 43 bajty
Wyciągam Thomasa Kwa i odbieram ten na telefonie komórkowym.
Zamień
sqrt
na rzeczywisty symbol na kalkulatorze. Wyświetla listę liczb oddzieloną od linii, co jest rozsądnym formatem.źródło
JavaScript ES6, 76 bajtów
Jest generatorem o nazwie
j
. Aby użyć, ustawa = j(<your value>);
. Aby zobaczyć następną wartość w sekwencji, wprowadźa.next().value
.Nie golfowany:
źródło
F # 77 bajtów
Nie kończy się na 1, ale kontynuuje.
Stosowanie:
Wersja, która faktycznie kończy się na 1, 100 bajtów
Bez golfa
źródło
Perl 5, 34 bajtów
33, plus 1 za
-pE
zamiast-e
Wyjaśnienie
Najpierw
-p
ustawia zmienną$_
równą wartości wejściowej ze standardowego wejścia. Następnie uruchamiamy blok kodu:Wreszcie
-p
druki$_
.Równej długości
Używa również
-p
.To: drukuje
$_
; przypisuje jak wyżej; sprawdza, czy zwracana wartośćsay
(która wynosi 1), minus nowa wartość$_
, wynosi 0, a jeśli tak, to przerywa blok; następnie drukuje$_
na końcu.źródło
dc
2221 bajtówWyjaśniono:
Wystąpił błąd: gdy wejście jest
1
, wyjście składa się z dwóch1
s.źródło