Implemente a divisão longa polinomial, um algoritmo que divide dois polinômios e obtém o quociente e o restante:
(12x ^ 3 - 5x ^ 2 + 3x - 1) / (x ^ 2 - 5) = 12x - 5 R 63x - 26
Nos seus programas, você representará polinômios como uma matriz, com o termo constante na cauda. por exemplo, x ^ 5 - 3x ^ 4 + 2x ^ 2 - x + 1 se tornará [1, -3, 0, 2, -1, 1].
A função de divisão longa que você escreverá retornará dois valores: o quociente e o restante. Você não precisa lidar com imprecisões numéricas e erros aritméticos. Não use a biblioteca de matemática para fazer seu trabalho; no entanto, você poderá tornar sua função capaz de lidar com valores simbólicos. O menor código vence.
EXEMPLO: div([12, -5, 3, -1], [1, 0, -5]) == ([12, -5], [63, -26])
code-golf
math
abstract-algebra
polynomials
Ming-Tang
fonte
fonte
Respostas:
J, 94
por exemplo.
Explicação de alguns trechos, considerando que a: (12 -5 3 -1) eb: (1 0 -5)
comprimento de um:
faça aeb na mesma ordem anexando zeros a b:
divida potências mais altas (primeiros elementos) de a, b:
multiplique b por isso e subtraia-o de a:
repita n vezes b = f (a, b):
fonte
Python 2,
260258257255 bytesIsso executa:
Use assim:
fonte
Haskell, 126
Para começar:
Uso da amostra:
fonte
Javascript com lambdas, 108
Ele substitui o primeiro argumento pelo lembrete e o segundo pelo resultado.
Exemplo de uso no Firefox:
Desculpe pelo erro. Já fixa.
fonte