Powinieneś wiedzieć o liczbach Fibonacciego , często nazywanych Sekwencją Fibonacciego. W tej sekwencji pierwsze dwa terminy to 0 i 1, a każda liczba po pierwszych dwóch jest sumą dwóch poprzednich. Innymi słowy F(n) = F(n-1) + F(n-2)
.
Oto pierwsze 20 liczb Fibonacciego:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Zadanie:
Biorąc pod uwagę liczbę całkowitą x
, oblicz średnią arytmetyczną (średnią) pierwszych liczb Fibonacciego do x
liczby sekwencji Fibonacciego.
Zasady:
- sekwencja Fibonacciego rozpoczyna się od 0 i 1 dla tego wyzwania
3 < x < 40
, ponieważ wyższe wartościx
mogą powodować ogromny czas wykonywania lub przepełnienia, a mniejsze wartości nie dają wyniku- 1 NIE jest liczbą pierwszą, ponieważ ma tylko 1 dzielnik
- średnia arytmetyczna powinna obejmować liczby dziesiętne, jeśli tak jest, lub powinna być wyświetlana jako ułamek dokładny
- możesz brać tylko
x
jako dane wejściowe, a kod potrzebny do ich wprowadzenia się nie liczy (np .: jeśli potrzebujesz czegoś takiegox = input()
, nie powinieneś brać tego pod uwagę przy liczeniu bajtów)
Przykłady:
Dawny. 1: Ponieważ x=10
wynikiem jest 5.75
, ponieważ dziesiąta liczba Fibonacciego jest, 55
a pierwsze liczby Fibonacciego do tego 55
są 2, 3, 5, 13
, ich średnia jest5.75
Zgodnie z wyjaśnieniem z przykładu 1 inne przykłady to:
Dawny. 2: Dla x=15
danych wyjściowych jest57.5
Dawny. 3: W przypadku x=20
danych wyjściowych 277.428571428571
lub innych bliskich przybliżeń. Na przykład w tym przypadku 277.4286
jest wartością akceptowaną
Dawny. 4: Dla x=11
danych wyjściowych jest22.4
Dawny. 5: W przypadku x=30
danych wyjściowych 60536.4444444444
lub innych zbliżeń, takich jak60536.444
Tabela liderów:
Aby zmienić lidera, prześlij krótsze prawidłowe rozwiązanie. Twój kod powinien być możliwie jak najkrótszy, ponieważ jest to golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach. Powodzenia!
Odpowiedzi:
Właściwie 10 bajtów
Kod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-437 . Wypróbuj online!
źródło
Python 2 , 71 bajtów
Wypróbuj online!
Python nie ma do tego przydatnych wbudowanych funkcji arytmetycznych, więc robimy to ręcznie. Kod iteruje liczby Fibonacciego,
a,b=b,a+b
zaczynając oda=b=1
.Test pierwszeństwa Fermata z bazą 2 służy do identyfikacji liczb pierwszych jako
a
gdzie2^a == 2 (mod a)
. Chociaż sprawdza to tylko prawdopodobne liczby pierwsze, żaden z fałszywych wyników nie mieści się w pierwszych 40 liczbach Fibonacciego.Bieżąca suma
s
i liczbac
liczb pierwszych są aktualizowane przy każdym napotkaniu liczby pierwszej, a ich stosunek (średnia) jest drukowany na końcu. Ponieważ pierwsza kontrola jest nieudanaa=2
i na pewno znajduje się w zakresie wejściowym, suma zaczyna się od 2, a liczenie zaczyna się od 1, aby to zrekompensować.źródło
Galaretka , 11 bajtów
Wypróbuj online!
Jak to działa
źródło
Mathematica, 38 bajtów
Wyjaśnienie
źródło
#
a nie#-1
: OP mówi, że 55 to 10. liczba Fibonacciego, więc ich lista musi być indeksowana przez zero (zgodnie z najlepszą konwencją). Porównaj swoje wyniki dla danych wejściowych10
i11
z OP. Na szczęście oszczędza to trzy bajty!&
i wymienić#
zx
(pytanie mówi, że kod wejściowy nie podejmowanie padnie)Perl 6 , 51 bajtów
Spróbuj
Rozszerzony:
źródło
MATL , 16 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Oktawa ,
7571 bajtówAnonimowa funkcja korzystająca ze wzoru Bineta . Dane wejściowe i wyjściowe mają postać argumentów funkcji.
Wypróbuj online!
źródło
isprime
który jest idealny do tego wyzwania.Maxima, 49 bajtów
źródło
Prolog (SWI) ,
269264254218 bajtówJestem całkiem pewien, że mógłbym zagrać w golfa więcej bajtów w dół.
Uruchom go jak
a(15, R).
dla x = 15 , R jest zmienną wyjściową.Wypróbuj online!
Bardziej czytelna wersja:
źródło
N*C:-
są dozwolone w deklaracjach głównych w PPCG, co może zaoszczędzić trochę bajtów.p(N,C):-
zN*C:-
?Röda ,
989493 bajtyJest to funkcja, która zwraca wynik jako liczbę zmiennoprzecinkową.
Wersja bez golfa:
źródło
c%p>0
zamiastc%p!=0
?05AB1E , 13 bajtów
Wypróbuj online! lub jako pakiet testowy
Wyjaśnienie
źródło
Pyke , 11 bajtów
Wypróbuj online!
źródło
dc , 129 bajtów
Generator liczb Fibonacciego i sprawdzanie pierwotności wszystko w jednym. Ładny.
Wypróbuj online!
źródło
Japt , 14 bajtów
Sprawdź to
Wyjaśnienie
Domniemane wprowadzenie liczby całkowitej
U
.30
Wygeneruj tablicę liczb całkowitych od 0 do
U
włącznie.[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
Przekaż każdą liczbę całkowitą przez funkcję.
Uzyskaj
X
liczbę th Fibonacciego, gdzieX
jest bieżący element.Filtruj (
f
) tablicę do tych elementów, które zwracają wartość true po sprawdzeniu pierwotności (j
). Niejawnie przypisz wynikową tablicę do zmiennejU
.[2,3,5,13,89,233,1597,28657,514229]
Zmniejsz tablicę sumując.
544828
Podziel wynik przez długość tablicy (
l
) i domyślnie wyślij wynik.60536.444444444445
źródło
perl, 91 bajtów
Cuold był o 8 bajtów krótszy, jeśli test pseudoprime modulo działał równie dobrze w perlu, jak w pythonowej odpowiedzi:
... ale daje to złą odpowiedź na wejście> 16 w perlu.
źródło
Aksjomat, 104 bajty
bez golfa, kod testowy i wyniki
staram się powielić wpis matematyki, oktawy itp. języków, jeśli nie liczyć funkcji mean (), aby ją zaimplementować, byłoby tu 62 bajtów, więc też dobrze
źródło
JavaScript ES6,
137136118113 bajtówHistoria
118 bajtów
136 bajtów
137 bajtów
źródło