Menerapkan pembagian panjang polinomial, suatu algoritma yang membagi dua polinomial dan mendapatkan hasil bagi dan sisanya:
(12x ^ 3 - 5x ^ 2 + 3x - 1) / (x ^ 2 - 5) = 12x - 5 R 63x - 26
Dalam program Anda, Anda akan merepresentasikan polinomial sebagai array, dengan suku konstanta di ekornya. misalnya, x ^ 5 - 3x ^ 4 + 2x ^ 2 - x + 1 akan menjadi [1, -3, 0, 2, -1, 1].
Fungsi pembagian panjang yang akan Anda tulis akan mengembalikan dua nilai: hasil bagi dan sisanya. Anda tidak perlu menangani ketidaktepatan numerik dan kesalahan aritmatika. Jangan gunakan perpustakaan matematika untuk melakukan pekerjaan Anda, namun, Anda dapat membuat fungsi Anda mampu menangani nilai simbolik. Kode terpendek menang.
CONTOH: div([12, -5, 3, -1], [1, 0, -5]) == ([12, -5], [63, -26])
sumber
Jawaban:
J, 94
misalnya.
Penjelasan beberapa cuplikan, mengingat bahwa: (12 -5 3 -1) dan b: (1 0 -5)
panjang:
buat a dan b urutan yang sama dengan menambahkan nol ke b:
membagi kekuatan yang lebih tinggi (elemen pertama) dari a, b:
kalikan b dengan itu dan kurangi dari:
ulangi n kali b = f (a, b):
sumber
Python 2,
260258257255 byteIni dijalankan:
Gunakan seperti ini:
sumber
Haskell, 126
Sebagai permulaan:
Penggunaan sampel:
sumber
Javascript dengan lambdas, 108
Ini menggantikan argumen pertama dengan pengingat dan yang kedua dengan hasil.
Contoh penggunaan di Firefox:
Maaf untuk bugnya. Sudah diperbaiki.
sumber