Zaimplementuj wielomianowy długi podział, algorytm, który dzieli dwa wielomiany i pobiera iloraz oraz resztę:
(12x ^ 3 - 5x ^ 2 + 3x - 1) / (x ^ 2 - 5) = 12x - 5 R 63x - 26
W swoich programach będziesz reprezentować wielomiany jako tablicę, ze stałym wyrazem na ogonie. na przykład x ^ 5 - 3x ^ 4 + 2x ^ 2 - x + 1 zmieni się na [1, -3, 0, 2, -1, 1].
Funkcja dzielenia długiego, którą napiszesz, zwróci dwie wartości: iloraz i resztę. Nie musisz zajmować się nieprecyzyjnymi liczbami i błędami arytmetycznymi. Nie używaj biblioteki matematycznej do wykonywania swojej pracy, jednak możesz sprawić, że twoja funkcja będzie w stanie radzić sobie z wartościami symbolicznymi. Najkrótszy kod wygrywa.
PRZYKŁAD: div([12, -5, 3, -1], [1, 0, -5]) == ([12, -5], [63, -26])
źródło
Odpowiedzi:
J, 94
na przykład.
Wyjaśnienie niektórych fragmentów, biorąc pod uwagę, że a: (12 -5 3 -1) i b: (1 0 -5)
długość:
zrób to samo b, dodając zera do b:
podzielić wyższe moce (pierwsze elementy) a, b:
pomnóż b przez to i odejmij to od:
powtórz n razy b = f (a, b):
źródło
Python 2,
260258257255 bajtówWykonuje to:
Użyj tak:
źródło
Haskell, 126
Na początek:
Przykładowe użycie:
źródło
JavaScript z lambdami, 108
Zastępuje pierwszy argument przypomnieniem, a drugi wynikiem.
Przykład użycia w przeglądarce Firefox:
Przepraszamy za błąd. Juz naprawione.
źródło