W przypadku tego wyzwania musisz przedstawić wynik sumy niektórych liczb. Co to za liczby? Cóż, masz dane wejściowe, ( a
, b
), które są liczbami całkowitymi (dodatnimi, ujemnymi lub zerowymi) a != b
, i a < b
, i każda liczba całkowita w a
i b
(łącznie z nimi) będzie miała wykładniki zgodnie z liczbami Fibonacciego. To mylące, oto przykład:
Input: (-2, 2)
Output: -2**1 + (-1**1) + 0**2 + 1**3 + 2**5 =
-2 + -1 + 0 + 1 + 32 = 30
Biorąc pod uwagę, że pierwsza liczba Fibonacciego jest reprezentowana przez f(0)
, wzór jest następujący:
a**f(0) + ... + b**f(b-a+1)
Wejście, przetwarzanie, wyjście
Aby wyjaśnić powyższe, oto kilka przypadków testowych, przetwarzanie danych wejściowych i oczekiwane wyniki:
Input: (1, 2)
Processing: 1**1 + 2**1
Output: 3
Input: (4, 8)
Processing: 4**1 + 5**1 + 6**2 + 7**3 + 8**5
Output: 33156
Input: (-1, 2)
Processing: -1**1 + 0**1 + 1**2 + 2**3
Output: 8
Input: (-4, -1)
Processing: -4**1 + -3**1 + -2**2 + -1**3
Output: -4
Zasady
Niedozwolone są standardowe luki
Wykładniki muszą być uporządkowane zgodnie z serią Fibonacciego
Kod musi działać dla powyższych przypadków testowych
Tylko dane wyjściowe muszą zostać zwrócone
Zwycięskie kryteria
Najkrótszy kod wygrywa!
0
nie jest tu zawarte w liczbach Fibonacciego?Odpowiedzi:
05AB1E , 9 bajtów
Wypróbuj online!
Nie działa w TIO w przypadku dużych rozbieżności między
a
ib
(EG[a..b].length() > 25
).Ale wydaje się, że działa na większą liczbę niż średnia odpowiedź tutaj.
Nieefektywne, ponieważ oblicza sekwencję Fibonacciego do
n!
, co jest więcej niż potrzebne do obliczenia odpowiedzi, gdzien
jest długość sekwencjia..b
.źródło
Mathematica,
38 bajtów37 bajtów31 bajtówTo tylko odpowiedź rahnema1 przeniesiona do Mathematica. Poniżej znajduje się moje oryginalne rozwiązanie:
Wyjaśnienie:
##
reprezentuje sekwencję wszystkich argumentów,#
reprezentuje pierwszy argument,#2
reprezentuje drugi argument. Gdy zostanie wywołany z dwoma argumentamia
ib
,Range[##]
da listę{a, a+1, ..., b}
iRange[#2-#+1]
da listę o tej samej długości{1, 2, ..., b-a+1}
. PonieważFibonacci
jestListable
,Fibonacci@Range[#2-#+1]
poda listę pierwszychb-a+1
liczb Fibonacciego. PonieważPower
jestListable
to wywołanie go na dwóch listach o tej samej długości, przeciągnie go na listy. PotemTr
bierze sumę.Edycja: Zapisano 1 bajt dzięki Martinowi Enderowi.
źródło
Range@##
.Tr[(r=Range@##)^Fibonacci[r-#+1]]&
.Range
Dwukrotne użycie powinno być czerwoną flagą. Dzięki!Python , 49 bajtów
Rekurencyjna lambda, która przyjmuje
a
ib
jako osobne argumenty (możesz również ustawić dwie pierwsze liczby Fibonacciegox
iy
, co chcesz - nie celowe, ale fajna funkcja):Wypróbuj online! (obejmuje pakiet testowy)
Sugestie dotyczące gry w golfa mile widziane.
źródło
-~a
nie po prostua+1
? Myślę, że-~a
jest zależny od maszyny.Perl 6 ,
3230 bajtów$^a
i$^b
są dwoma argumentami funkcji;$^a..$^b
Jest to zakres liczb od$^a
celu$^b
, który jest suwak z potęgowania przezZ**
z sekwencją Fibonacciego1, &[+] ... *
.Podziękowania dla Brada Gilberta za zgolenie dwóch bajtów.
źródło
(1,&[+]...*)
jest o jeden bajt krótszy, a miejsce po nimZ**
nie jest potrzebne.&infix:<+>
może przyjąć 0,1 lub 2 argumenty. (&[+]
to krótki sposób pisania&infix:<+>
). WhthingCode* + *
akceptuje dokładnie 2 argumenty. (&[0]() == 0
więc musisz mieć1
tam, aby rozpocząć sekwencję)Maxima, 32 bajty
źródło
Pyke, 11 bajtów
Wypróbuj tutaj!
źródło
JavaScript (ES7), 42 bajty
Prosty port doskonałej odpowiedzi Python @ FlipTack.
źródło
Haskell, 35 bajtów
Stosowanie:
źródło
o
w operatora infix, npa#b=sum...
.(a,b)
jaka?b
to dlaczego nie wolno nam przygotować go jako natychmiastowe[a..b]?f
wychodzą(?)=sum.zipWith(^)
?MATL , 23 bajty
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
źródło
R, 51 bajtów
Anonimowa funkcja.
źródło
Galaretka , 13 bajtów
Wypróbuj online!
źródło
f(1,25)
pracy;). +1Rubinowy, 46 bajtów
Nie ma tu nic szczególnie sprytnego lub oryginalnego. Przepraszam.
źródło
ℤ.upto(ℤ)
metoda ta jest miłym przypomnieniem piękna zachowania Ruby wobec wszystkich obiektów. Dalsza gra w golfa jest pozostawiana jako ćwiczenie dla rodzimych użytkowników języka Ruby. Czy zeskanowałeś już codegolf.stackexchange.com/questions/363/... ?Java 7, 96 bajtów
Gra w golfa:
Nie golfowany:
źródło
R, 57 bajtów
Całkiem proste.
gmp::fibnum
jest krótszy wbudowany, ale nie obsługuje zwracania całej sekwencji don
, conumbers::fibonacci
robi się przez dodanie argumentuT
.Najpierw miałem trudniejsze rozwiązanie, z
gmp::fibnum
którym skończyło się 2 bajty dłużej niż to rozwiązanie.źródło
scan()
oszczędzania 6 bajtów; zobacz moje opublikowane rozwiązanie.dc , 56 bajtów
Kończy wprowadzanie za
[1,30]
51 sekund. Wykonuje dwa wejścia w dwóch oddzielnych wierszach po wykonaniu i liczby ujemne z wiodącym podkreśleniem (_
) zamiast myślnika (tzn.-4
Będzie wprowadzony jako_4
).źródło
PHP,
7775 bajtówbierze granice z argumentów wiersza poleceń. Uruchom z
-nr
.pokazując ponownie zmienne PHP (i to, co się o nich dowiedziałem) .
awaria
Odpowiedź FlipTacka przeniesiona do PHP ma 70 bajtów:
źródło
Aksjomat, 65 bajtów
kod testowy i wyniki
źródło
PowerShell , 67 bajtów
Wypróbuj online!
Znalazłem nieco lepszy sposób wykonania sekwencji, ale PowerShell nie porównuje się z innymi językami dla tego :)
źródło