Biorąc pod uwagę niezerowy wielomian ze współczynnikami całkowitymi i pierwiastkami, które znajdują się na wyimaginowanej i rzeczywistej linii, tak że jeśli a
jest to pierwiastek, to tak też jest -a
, zwróć inny wielomian z pierwiastkami obróconymi o 90 stopni.
Detale
Wielomian można podać w dowolnym rozsądnym formacie, np. Jako listę współczynników. Warunek symetrii, który a
jest pierwiastkiem wtedy i tylko wtedy, -a
gdy pierwiastek zbyt wymusza obrócony wielomian, aby miał również rzeczywiste współczynniki liczb całkowitych.
Przykłady
Poniżej wielomianów podano jako listę współczynników monomialów w malejącym stopniu. (tzn. stała jest ostatnia) Wielomian x^2-1
ma pierwiastki {1,-1}
. Obracanie ich poprzez 90°
pomnożenie przez i
(jednostkę urojoną), więc wielomian wyjściowy powinien mieć pierwiastki {i,-i}
, czyli x^2 + 1
.
Input / Output
[1 0 10 0 -127 0 -460 0 576] [1 0 -10 0 -127 0 460 0 576]
[1 0 -4 0] [1 0 4 0]
[1] [1]
źródło
x
, tak, że moja uległość puszki string-wymienićx
z(i*x)
? Czy mój format może sformułować funkcję oceniającą wielomian, aby moje przesłanie skomponowało go z funkcjąx -> i*x
?Odpowiedzi:
Mathematica, 10 bajtów
Czysta funkcja, która przyjmuje funkcję x i zastępuje w ix.
Alternatywnie z tylko 7 bajtami, ale nie do końca pewny, czy się liczy. Funkcja czysta, która przyjmuje funkcję czystą i zwraca funkcję x.
źródło
#
jako zmiennej i ma&
na końcu.Galaretka , 5 bajtów
Wypróbuj online!
Jak to działa
Mnoży pierwszy element przez
1
, trzeci element przez-1
itd.Dowód algorytmu
Niech wielomian będzie
f(x)
.Ponieważ mamy gwarancję, że jeśli
x
jest pierwiastkiem-x
, tof
musi być , więc musi być parzyste, co oznacza, że jego współczynnik dla mocy nieparzystych musi być0
.Teraz obracanie korzeni
90°
jest zasadniczof(ix)
.Rozwinięcie, a następnie porównanie współczynników potwierdza algorytm.
źródło
ı*Ċ
jest bardzo fajna, powinieneś to wyjaśnić :)JavaScript (ES6), 25 bajtów
Oryginalny wielomian ma rozwiązania w postaci, w
x = ±a
której leży na linii rzeczywistej lub urojonej. Z wyjątkiem kiedya = 0
(w takim przypadkux
to czynnik wielomianu) oznacza to, żex² - a²
jest on czynnikiem wielomianu (co oznacza, że alternatywne warunki są zawsze równe zero). Teraz, gdy obracamy korzenie, współczynnik zmienia się nax² + a²
. Ponieważ wszystkie czynniki zmieniają się w tym samym czasie, trzeci element wielomianu, który jest sumą wszystkich-a²
terminów, znak zmian, piąty, który jest sumą iloczynów par-a²
terminów, zachowuje ten sam znak itp. , naprzemiennie co drugi termin.źródło
Oktawa , 27 bajtów
Wypróbuj online!
Odnosi się to bezpośrednio do definicji: oblicz pierwiastki, pomnóż przez
j
, przekonwertuj z korzeni na wielomian. Ostateczne zaokrąglenie jest konieczne z powodu błędów liczb zmiennoprzecinkowych.źródło
Python 3 , 42 bajty
Wypróbuj online!
źródło
SILOS ,
7166 bajtówWypróbuj online!
Nie mam pojęcia, co magia @Leaky Nun zrobiła tutaj, aby zaoszczędzić 5 bajtów.Zajęło mi sekundę, żeby się domyślić, ale drugi kawałek C będzie się zmieniał tak, jak chcemy. Dlatego @Leaky Nun wykorzystała to, aby zaoszczędzić potrzebne nam bity.
źródło
TI-Basic, 20 bajtów
Jeśli jest przechowywany
prgmA
, uruchom z:seq(
musiałem być jedynym * poleceniem, które nie obsługuje liczb zespolonych. :)*: Przesada
źródło
Casio-Basic, 8 bajtów
Funkcja nienazwana, wykorzystująca podejście Matematyki Iana Millera. Należy użyć fikcyjnego 𝑖 z klawiatury Math2 (liczy się jako 2 bajty, kod char 769), a wielomian należy wprowadzić jako równanie
x
.7 bajtów dla kodu, 1 bajt do określenia
n
jako parametr.Objaśnienie : wyraża równanie
n
, a następnie po prostu zastępuje wszystkie wystąpieniax
z𝑖x
.źródło
Pari / GP , 16 bajtów
Wypróbuj online!
źródło
Stax , 5 bajtów
Uruchom i debuguj online!
Port galaretki odpowiedź.
Używa reprezentacji ASCII do wyjaśnienia:
Jeśli mogą istnieć zera wiodące, należy je najpierw przyciąć i można to zrobić kosztem innego bajtu.
źródło