Twoim zadaniem jest pobranie tablicy liczb rzeczywistych i zwrócenie wartości w tym punkcie tablicy. Tablice zaczynają się od i są zaliczane interwały. Chodzi o to, że faktycznie interpolujemy między elementami, biorąc pod uwagę „indeks”. Jako przykład:
Index: 1π 2π 3π 4π 5π 6π
Array: [ 1.1, 1.3, 6.9, 4.2, 1.3, 3.7 ]
Ponieważ jest to , musimy wykonać obowiązkową trygonometrię, więc użyjemy interpolacji cosinus przy użyciu następującego wzoru:
gdzie:
- to „indeks” wejściowy
- to wartość elementu bezpośrednio przed „indeksem”
- to wartość elementu bezpośrednio po „indeksie”
- bierze swój kąt w radianach
Przykład
Biorąc pod uwagę [1.3, 3.7, 6.9], 5.3:
Indeks 5.3 zawiera się w przedziale od do , więc 1.3 będzie użyte dla, a 3.7 będzie użyte dla . Umieszczając to w formule, otrzymujemy:before
after
Który wychodzi do 3.165
Notatki
- Dane wejściowe i wyjściowe mogą być w dowolnym dogodnym formacie
- Możesz założyć, że liczba wejściowa jest większa niż i mniejsza niż *
array length
- Możesz założyć, że tablica wejściowa będzie miała co najmniej 2 elementy.
- Twój wynik musi mieć co najmniej dwa miejsca po przecinku, być dokładny z dokładnością do 0,05 i obsługiwać liczby do 100 dla tej precyzji / dokładności. (liczby zmiennoprzecinkowe o pojedynczej precyzji są więcej niż wystarczające do spełnienia tego wymagania)
Wesołego golfa!
Odpowiedzi:
R ,
5953 bajtówWypróbuj online!
Nie ma tu nic sprytnego - tylko wersja R wzoru w pytaniu. Dzięki @MickyT za zapisanie bajtu oraz @Giueseppe i pośrednio @xnor za kolejne dwa, a także @RobinRyder za zapisanie kolejnych 3.
źródło
...*(cos(i%%pi)+1)/2
Python 3.8 (wersja wstępna) ,
8574 bajtów-8 bajtów dzięki @xnor
-2 bajtów dzięki @Quintec
Wykorzystuje to nowy
:=
operator przypisania wersji przedpremierowej Python 3.8 . Poza tym jest to tak naprawdę równanie zapisane w Pythonie.Stosowanie:
Wypróbuj online!
źródło
j
pierwsze miejsce, o którym mowa - częścią siły wyrażeń przypisania jest to, że oceniają one wartość, a także przypisują ją.(cos(i%pi)+1)/2
nacos(i%pi/2)**2
p=
ponieważ anonimowe funkcje są w porządkuGalaretka , 17 bajtów
Pełny program akceptującyja oraz tablica, która wypisuje interpolowaną wartość.
Wypróbuj online!
W jaki sposób?
Interpoluje między wszystkimi sąsiadami za pomocąsałata( imodπ) + 12) następnie wybiera odpowiednią wartość.
źródło
C # (interaktywny kompilator Visual C #) , 69 bajtów
Pokonałem Pythona!Cholera, Python mnie pokonał.Znowu pokonałem Pythona!Wypróbuj online!
źródło
Röda , 51 bajtów
Wypróbuj online!
źródło
Stax , 17 bajtów
Uruchom i debuguj
Rozpakowane, niepolowane i skomentowane to wygląda tak.
Uruchom ten
źródło
Japt ,
474638 bajtówCiąg dalszy nastąpi ... (gra w golfa)
Wypróbuj online!
źródło
APL + WIN,
3937 bajtów2 bajty zapisane dzięki Adámowi
Wypróbuj online! Dyalog Classic
Wyjaśnienie:
źródło
×.5×
→÷2÷
im[2]
→2⊃m
Haskell , 65 bajtów
Wypróbuj online!
Uwaga: tablica jest reprezentowana jako lista.
Dzięki @xnor za końcówkę o połówkowym kącie.
źródło
Galaretka ,
232018 bajtówWypróbuj online!
źródło
Attache , 54 bajty
Wypróbuj online!
Wyjaśnienie
źródło
C (GCC)
9979 bajtów-20 bajtów pułapu cat
Wypróbuj online!
Kod telefoniczny
zauważ, że potrzebował flagi kompilatora
-lm
do połączenia z bibliotekami matematycznymi, więc +3 bajty, jeśli to policzysz.źródło
05AB1E ,
22212019 bajtówWypróbuj online lub sprawdź więcej przypadków testowych .
Wyjaśnienie:
źródło
Rubin , 67 bajtów
Wypróbuj online!
źródło