Biorąc pod uwagę równanie wielomianu i współrzędnej x, znajdź szybkość zmiany punktu na tej współrzędnej x na krzywej.
Wielomian ma postać: ax n + ax n-1 + ... + ax 1 + a, gdzie a ϵ Q i n ϵ W. Dla tego wyzwania n może również wynosić 0, jeśli nie chcesz mieć radzić sobie ze specjalnymi przypadkami (stałymi), w których nie ma x.
Aby znaleźć szybkość zmian dla tej współrzędnej x, możemy uzyskać pochodną wielomianu i podłączyć współrzędną x.
Wejście
Wielomian można przyjąć w dowolnej rozsądnej formie, ale należy wyraźnie określić, jaki jest ten format. Na przykład [..[coefficient, exponent]..]
dopuszczalna jest tablica formularza .
Wynik
Szybkość zmiany punktu na podanej współrzędnej x.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
Przykłady
[[4, 3], [-2, 4], [5, 10]] 19 -> 16134384838410
[[0, 4]] 400 -> 0
[[4, 0], [5,1]] -13 -> 5
[[4.14, 4], [48, 2]] -3 -> -735.12
[[1, 3], [-5, 0]] 5.4 -> 87.48
Odpowiedzi:
Mathematica, 6 bajtów
(Pokonaj THAT ,
MATLi 05AB1E)Pierwszy argument musi być wielomianem, z
#
jego zmienną i&
na końcu (tj. Czystą funkcją wielomianową; np3 #^2 + # - 7 &
.). Drugi argument to współrzędna x punktu zainteresowania.Wyjaśnienie
Weź pochodną pierwszego argumentu (
1
jest to dorozumiane).Podłącz drugi argument.
Stosowanie
źródło
MATL ,
86 bajtówDane wejściowe to: tablica wykładników, liczba, tablica współczynników.
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe: 1 , 2 3 , 4 , 5 .
Wyjaśnienie
Rozważmy przykładowe wejść
[3 4 10]
,19
,[4 -2 5]
.źródło
Julia,
45424037 bajtówJest to funkcja, która pobiera wektor krotek i liczbę i zwraca liczbę. Absolutną wartością jest upewnienie się, że wykładnik nie jest ujemny, co jest konieczne, ponieważ denerwująca Julia rzuca a
DomainError
, podnosząc liczbę całkowitą do wykładnika ujemnego.Wypróbuj online! (obejmuje wszystkie przypadki testowe)
Dzięki Glen O za kilka poprawek i bajtów.
źródło
i[2]>0&&
do radzenia sobie ze stałą wielkością, używaszabs(i[2]-1)
wykładnika wykładnikax
.p%x
Zamiast tego należy użyć nieco mniej czystej sztuczki, aby zaoszczędzić kolejne trzy bajtyf(p,x)
- pamiętaj, że możesz ją wywołać tak%(p,x)
, jakbyś chciał użyć jej w formie funkcji ... niestety wygląda na to, że nie działa na TIO (co najwyraźniej działa Julia 0.4.6), chociaż działa na mojej Julii 0.5.0.abs
częścią, ale redefiniowanie operatorów infixów boli mnie fizycznie ...05AB1E ,
1211 bajtówOszczędność jednego bajtu dzięki Adnanowi.
Wypróbuj online!
Dokładność zmiennoprzecinkowa należy do Pythona. Obecnie zamieniam wartości stosu dwa razy, być może istnieje sposób, aby tego uniknąć i zaoszczędzić trochę bajtów.
źródło
}
:).DIs<m**O
ma 8 bajtów, zgodnie z odpowiedzią MATL podaną przez @Luis Mendo.s¹<m**O
ma 7 bajtów. ( 05ab1e.tryitonline.net/… )Python 3, 41 bajtów
Usunięto 6 bajtów dzięki @AndrasDeak ! W rzeczywistości ta odpowiedź jest teraz bardziej jego niż moja ...
Dziękujemy również @ 1Darco1 za dwie poprawki!
Anonimowa funkcja, która akceptuje listę list ze współczynnikami i wykładnikami (taki sam format, jak opisano w wyzwaniu) i liczbą.
Wypróbuj tutaj .
źródło
a*x**(b-1)
zamiasta*b*x**(b-1)
? I co dalej, jeśli $ x = 0 $?R, 31 bajtów
Anonimowa funkcja, która pobiera wektor współczynników
a
, wektor wykładnikówn
ix
wartość.źródło
Matlab, 27 bajtów
Jest to anonimowa funkcja, która przyjmuje wartość
x
i wielomianp
w postaci listy współczynników, np.x^2 + 2
Może być reprezentowana jako[1,0,2]
.źródło
JavaScript (ES7), 40 bajtów
a
jest tablicą współczynników w rosnącym porządku wykładniczym z zawartymi zerami, np. x ³-5 byłoby reprezentowane przez[-5, 0, 0, 1]
.źródło
MATLAB z Symbolic Math Toolbox, 26 bajtów
Definiuje to anonimową funkcję. Dane wejściowe to:
p
definiujący wielomian w formacie'4*x^3-2*x^4+5*x^10'
x
Przykładowe zastosowanie:
źródło
@(x,p)polyval(polyder(p),x)
, aby uzyskać bajt.R,
3127 bajtówNienazwana funkcja pobierająca dwa wejścia
p
ix
.p
zakłada się, że jest wyrażeniem R wielomianu (patrz przykład poniżej) ix
jest po prostu punktem oceny.Działa poprzez wywołanie metody,
D
która oblicza symboliczną pochodną wrtx
i ocenia wyrażenie nax
.Przykładowe dane wyjściowe
Zakładając, że funkcja ma teraz nazwę
f
, można ją wywołać w następujący sposób:który odpowiednio wytwarza:
źródło
PARI / GP , 20 bajtów
Na przykład
a(4*x^3-2*x^4+5*x^10,19)
daje16134384838410
.źródło
f'
of
, a następnie zastępujen
nax
.C ++ 14,
165138133112110 bajtówGeneryczna Variadic Lambda wiele oszczędza. -2 bajty dla
#import
i usuwanie poprzedniej spacji<
Nie golfowany:
Stosowanie:
źródło
Haskell, 33 bajty
Stosowanie:
źródło
dc, 31 bajtów
Stosowanie:
źródło
DASH , 33 bajty
Stosowanie:
Wyjaśnienie
źródło
Scala, 46 bajtów
Stosowanie:
Wyjaśnienie:
źródło
Axiom 31 bajtów
wyniki
źródło
Python 2, 39 bajtów
lambda
funkcja przyjmuje dwa wejścia,p
ax
.p
jest wielomianem podanym w przykładowym formacie podanym w pytaniu.x
to wartość x, przy której można znaleźć szybkość zmian.źródło
Pari / GP , 14 bajtów
Stosowanie:
Wypróbuj online!
źródło
C, 78 bajtów
źródło
Clojure, 53 bajty
Wielomian jest wyrażony jako mapa mieszania, klucze są współczynnikami, a wartości są wykładnikami.
źródło
Casio Basic, 16 bajtów
Dane wejściowe powinny być wielomianem pod względem
x
. 13 bajtów dla kodu, +3 bajty do wprowadzeniaa,b
jako parametry.Po prostu czerpie wyrażenie
a
w odniesieniu dox
, a następnie subx=b
.źródło
Dyalog APL,
262523 bajtówTraktuje wielomian jako argument prawy, a wartość jako argument lewy.
źródło