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 i
th w sekwencji określa, ile 3
s jest przed i
th 2
i po poprzednich 2
. Ponieważ sekwencja zaczyna się 3
od sekwencji, sekwencja musi się rozpocząć, 3 3 3 2
a ponieważ 3
na początku sekwencji znajdują się trzy s, podsekwencja 3 3 3 2
musi się powtórzyć trzy razy. Po tym osiągasz, 3 3 2
ponieważ 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=4
się znajduje 3/1 = 3
i co i=15
to jest 11/4 = 2.75
.
Przejdźmy do generała
Podane numery n
i k
możemy zrobić podobną sekwencję, która zaczyna się n
i tak jak oryginalna sekwencja opisana numer w indeksie i
określa ile n
s pokazać się przed i
TH k
i po wszelkie wcześniejsze k
s.
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 n
i k
określenia sekwencji, jak opisano powyżej, a i
jest 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 i
jest włączone i ≥ n
.
Z trzema liczbami wyprowadza się stosunek n
s do k
s 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/837
lub 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/2
i 11:2
jest akceptowalny, ale 22/4
nie 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.Odpowiedzi:
Łuska , 16 bajtów
Wypróbuj online!
Pobiera dane wejściowe w tej samej kolejności co przypadki testowe. Zwraca liczbę wymierną. Wydaje mi się, że ma za dużo indeksów górnych, ale nie wiem, jak się ich pozbyć ...
Wyjaśnienie
źródło
Python 3 ,
94928987 bajtówWypróbuj online!
Kredyty
źródło
.count(n)
?Galaretka , 22 bajty
Wypróbuj online!
Pełny program Bierze argumenty
n
,k
,i
.Istnieje błąd, który powoduje, że ta potrzeba niepotrzebnie musi być dłuższa o 1 bajt.
źródło
`
sprawia, że działa. Aha, a twoja odpowiedź różni się tym, że zapomniałem zaimplementować golfa, który znalazłem w innym języku> _>Galaretka ,
2516 bajtów-9 bajtów ~ 50% przypisywanych odpowiedzi Erik the Outgolfer's Jelly (1. szybkie użycie nowego klucza,
ƙ
nawet z błędem w tłumaczu kosztującym obecnie bajt; 2. użycie odwzorowanego powtórzenia, aby uniknąć liczenia i indeksowania do bieżącej sekwencji .) Idź, daj mu trochę uznania!Pełen program, biorąc trzy argumenty:
n
,k
,i
który drukuje wynik.Wypróbuj online!
W jaki sposób?
Przykładem prowadzony z wejściami
n=2
,k=3
,i=30
:źródło
Mathematica, 85 bajtów
Wypróbuj online!
źródło
APL (Dyalog Unicode) ,
12670 bajtówWypróbuj online!
Dzięki @ Adám za usunięcie 56 bajtów z tej odpowiedzi.
To niladic Tradfn ( upr itional F unctio n ) przy 1 wejście, które jest lista 3 elementem.
⎕PP←5
nie dodaje się do liczby bajtów, ponieważ jest on używany tylko do ograniczenia P rukuj P recision do 5 cyfr.∇f
i∇
nie są dodawane do liczby bajtów, ponieważ nie są częścią kodu, a jedynie ogranicznikami dla tradfn.Jak to działa:
źródło
R , 88 bajtów
Wypróbuj online!
źródło
for
korpusu pętli, ponieważ istnieje tylko jedna instrukcja.Szybki , 152 bajty
Czy będzie krótszy niż Java?
Wyjaśnienie
źródło
Rubinowy ,
777170 bajtówWypróbuj online!
Zwraca wartość wymierną, która działa zarówno jako liczba, jak i uściśla do dokładnie zredukowanej części.
źródło
Pyth , 24 bajty
Zestaw testowy.
Stały punkt
[n]
pod pewną funkcją tablicy.źródło
Zephyr , 284 bajty
Pobiera trzy liczby ze standardowego wejścia na trzy osobne linie. Wysyła dokładny stosunek, taki jak
104/11
lub63
.Bez golfa
źródło