Na podstawie tej zagadki FiveThirtyEight .
tło
Sprawdź następującą nieskończoną sekwencję:
3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ...
Powiedzmy, że sekwencja ma indeks 1. Liczba ith w sekwencji określa, ile 3s jest przed ith 2i po poprzednich 2. Ponieważ sekwencja zaczyna się 3od sekwencji, sekwencja musi się rozpocząć, 3 3 3 2a ponieważ 3na początku sekwencji znajdują się trzy s, podsekwencja 3 3 3 2musi się powtórzyć trzy razy. Po tym osiągasz, 3 3 2ponieważ czwarta liczba w sekwencji to 2.
Zagadka FiveThirtyEight pyta o limit stosunków trzy do dwójki (których tutaj nie zepsuję), ale możesz też zapytać, jaki jest łączny stosunek po indeksie i. Na przykład stosunek co i=4się znajduje 3/1 = 3i co i=15to jest 11/4 = 2.75.
Przejdźmy do generała
Podane numery ni kmożemy zrobić podobną sekwencję, która zaczyna się ni tak jak oryginalna sekwencja opisana numer w indeksie iokreśla ile ns pokazać się przed iTH ki po wszelkie wcześniejsze ks.
Przykłady:
n=2, k=5 podaje sekwencję 2 2 5 2 2 5 2 2 2 2 2 5 2 2 5 ...
n=3, k=0 daje 3 3 3 0 3 3 3 0 3 3 3 0 0 3 3 3 0 ...
n=1, k=3 daje 1 3 1 1 1 3 1 3 1 3 1 3 1 1 1 3 1 ...
Wyzwanie
Napisz funkcję / program i wykonaj następujące czynności. Weź jako dane wejściowe:
- dodatnia liczba całkowita
n - nieujemna liczba całkowita
k ≠ n - dodatnia liczba całkowita
i > n
Pierwsze dwa wejścia ni kokreślenia sekwencji, jak opisano powyżej, a ijest wskaźnikiem. Korzystam z indeksowania 1 w przykładach, ale masz swobodę korzystania z indeksowania 0 lub 1. Jeśli indeksowane jest 0, to ograniczenie ijest włączone i ≥ n.
Z trzema liczbami wyprowadza się stosunek ns do ks w sekwencji do liczby włącznie z indeksem i. Format wyniku może być albo wartością dziesiętną z co najmniej 5 cyframi dokładności, albo dokładną wartością w stosunku 3524/837lub 3524:837.
W postaci dziesiętnej ostatnią cyfrę można zaokrąglić w dowolny sposób. Końcowe zera i białe znaki są dozwolone.
W każdej z form ciągu dwie liczby muszą zostać znormalizowane, aby były chronione prawem autorskim. Na przykład, jeśli stosunek wynosił 22/4 11/2i 11:2jest akceptowalny, ale 22/4nie jest.
Przykłady
n k i output
2 4 15 2.75 or 11/4
6 0 666 5.1101 or 557:109
50 89 64 63 or 63:1
3 2 1000 2.7453 or 733/267
9 12 345 9.4545 or 104/11
Jest to kod golfowy w każdym języku, więc zwycięzcą jest najkrótszy kod w każdym języku.
/lub :po prostu dodaje niepotrzebnej komplikacji do wyzwania.