Implementieren Sie die Polynom-Long-Division, einen Algorithmus, der zwei Polynome teilt und den Quotienten und den Rest erhält:
(12x ^ 3 - 5x ^ 2 + 3x - 1) / (x ^ 2 - 5) = 12x - 5 R 63x - 26
In Ihren Programmen stellen Sie Polynome als Array dar, wobei der konstante Term am Ende steht. Zum Beispiel wird x ^ 5 - 3x ^ 4 + 2x ^ 2 - x + 1 zu [1, -3, 0, 2, -1, 1].
Die lange Teilungsfunktion, die Sie schreiben möchten, gibt zwei Werte zurück: den Quotienten und den Rest. Sie müssen nicht mit numerischen Ungenauigkeiten und Rechenfehlern umgehen. Verwenden Sie keine mathematische Bibliothek, um Ihre Arbeit zu erledigen. Möglicherweise können Sie Ihre Funktion jedoch in die Lage versetzen, mit symbolischen Werten umzugehen. Der kürzeste Code gewinnt.
BEISPIEL: div([12, -5, 3, -1], [1, 0, -5]) == ([12, -5], [63, -26])
quelle
Antworten:
J, 94
z.B.
Erklärung einiger Schnipsel unter der Voraussetzung, dass a: (12 -5 3 -1) und b: (1 0 -5)
Länge von a:
Machen Sie a und b gleich, indem Sie Nullen an b anhängen:
Teilen Sie höhere Kräfte (erste Elemente) von a, b:
multipliziere b damit und subtrahiere es von a:
n-mal wiederholen b = f (a, b):
quelle
Python 2,
260258257255 BytesDies führt aus:
Verwenden Sie wie folgt:
quelle
Haskell, 126
Für den Anfang:
Beispielverwendung:
quelle
Javascript mit Lambdas, 108
Es ersetzt das erste Argument durch Erinnerung und das zweite durch Ergebnis.
Anwendungsbeispiel in Firefox:
Entschuldigung für den Fehler. Bereits behoben.
quelle