Implemente la división larga polinómica, un algoritmo que divide dos polinomios y obtiene el cociente y el resto:
(12x ^ 3 - 5x ^ 2 + 3x - 1) / (x ^ 2 - 5) = 12x - 5 R 63x - 26
En sus programas, representará polinomios como una matriz, con el término constante en la cola. por ejemplo, x ^ 5 - 3x ^ 4 + 2x ^ 2 - x + 1 se convertirá en [1, -3, 0, 2, -1, 1].
La función de división larga que va a escribir devolverá dos valores: el cociente y el resto. No necesita manejar imprecisiones numéricas y errores aritméticos. No use la biblioteca matemática para hacer su trabajo, sin embargo, puede hacer que su función sea capaz de manejar valores simbólicos. El código más corto gana.
EJEMPLO: div([12, -5, 3, -1], [1, 0, -5]) == ([12, -5], [63, -26])
code-golf
math
abstract-algebra
polynomials
Ming-Tang
fuente
fuente
Respuestas:
J 94
p.ej.
Explicación de algunos fragmentos, dado que a: (12 -5 3 -1) yb: (1 0 -5)
longitud de a:
haga ayb el mismo orden agregando ceros a b:
dividir potencias superiores (primeros elementos) de a, b:
multiplique b por eso y reste de a:
repetir n veces b = f (a, b):
fuente
Python 2,
260258257255 bytesEsto ejecuta:
Use así:
fuente
Haskell, 126
Para comenzar:
Uso de la muestra:
fuente
Javascript con lambdas, 108
Reemplaza el primer argumento por recordatorio y el segundo por resultado.
Ejemplo de uso en Firefox:
Perdón por el error. Ya está arreglado.
fuente