Dado um polinômio diferente de zero, com coeficientes e raízes inteiros que estão no imaginário e na linha real, de modo que, se a
for uma raiz, o mesmo ocorre -a
, retorne outro polinômio com as raízes giradas em 90 graus.
Detalhes
O polinômio pode ser dado em qualquer formato razoável, por exemplo, como uma lista de coeficientes. A condição de simetria que a
é uma raiz se, e somente se, -a
for uma raiz também impõe o polinômio girado para ter coeficientes inteiros reais também.
Exemplos
A seguir, os polinômios são apresentados como uma lista de coeficientes dos monômios em graus descendentes. (ou seja, a constante vem por último) O polinômio x^2-1
tem raízes {1,-1}
. Girando-os por 90°
meio da multiplicação por i
(a unidade imaginária), o polinômio de saída deve ter as raízes {i,-i}
, o que é 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]
fonte
x
, para que meu envio possa ser substituídox
por uma sequência(i*x)
? Meu formato pode ser uma função que avalia o polinômio, para que minha submissão seja composta com a funçãox -> i*x
?Respostas:
Mathematica, 10 bytes
Função pura que assume uma função de x e substitui em ix.
Alternativa com apenas 7 bytes, mas não tenho certeza se conta. Função pura que assume uma função pura e retorna uma função de x.
fonte
#
como variável e tem um&
no final.Gelatina , 5 bytes
Experimente online!
Como funciona
Multiplica o primeiro elemento por
1
, o terceiro elemento por-1
, etc.Prova de algoritmo
Seja o polinômio
f(x)
.Como temos a garantia de que se
x
é uma raiz, então é-x
, portanto,f
deve ser par, o que significa que seu coeficiente para os poderes ímpares deve ser0
.Agora, girar as raízes
90°
é essencialmentef(ix)
.Expandir e comparar coeficientes prova o algoritmo.
fonte
ı*Ċ
é muito bom, você deve explicá-lo :) #JavaScript (ES6), 25 bytes
O polinômio original possui soluções da forma em
x = ±a
que se encontra a linha real ou imaginária. Exceto quandoa = 0
(nesse caso,x
é um fator do polinômio), isso significa quex² - a²
é um fator do polinômio (que significa que os termos alternativos são sempre zero). Agora, quando giramos as raízes, o fator muda parax² + a²
. Como todos os fatores mudam ao mesmo tempo, o terceiro termo do polinômio, que é a soma de todos os-a²
termos, muda de sinal, o quinto termo, que é a soma dos produtos de pares de-a²
termos, mantém o mesmo sinal, etc. alternando todos os outros termos.fonte
Oitava , 27 bytes
Experimente online!
Isso se aplica diretamente à definição: calcular raízes, multiplicar por
j
, converter novamente de raízes em polinômio. Um arredondamento final é necessário devido a erros numéricos de ponto flutuante.fonte
Python 3 , 42 bytes
Experimente online!
fonte
SILOS ,
7166 bytesExperimente online!
Não faço ideia do que a @Leaky Nun de feitiçaria fez aqui para economizar 5 bytes.Levei um segundo para descobrir, mas o segundo bit de C alternará como queremos. Portanto, o @Leaky Nun explorou isso para salvar os bits de que precisamos.
fonte
TI-Basic, 20 bytes
Se armazenado
prgmA
, execute com:seq(
só tinha que ser o único comando * que não suporta números complexos. :)*: Exagero
fonte
Casio-Basic, 8 bytes
Função sem nome, usando a abordagem Mathematica de Ian Miller. O imaginário 𝑖 do teclado Math2 precisa ser usado (conta como 2 bytes, código de caractere 769), e o polinômio deve ser inserido como uma equação de
x
.7 bytes para o código, 1 byte para especificar
n
como parâmetro.Explicação : Pega a equação
n
e simplesmente substitui todas as instâncias dex
por𝑖x
.fonte
Pari / GP , 16 bytes
Experimente online!
fonte
Stax , 5 bytes
Execute e depure online!
Resposta do porto da geléia.
Usa representação ASCII para explicar:
Se houver zeros à esquerda, eles precisam ser aparados primeiro e isso pode ser feito ao custo de outro byte.
fonte