Tulis program yang melakukan Interpolasi Polinomial menggunakan bilangan rasional presisi arbitrer sejati. Inputnya terlihat seperti ini:
f (1) = 2/3 f (2) = 4/5 f (3) = 6/7 ...
Anda dapat berasumsi bahwa hanya ada satu spasi putih sebelum dan setelah =
tanda, semua angka adalah pecahan atau bilangan bulat. Anda juga dapat mengasumsikan, bahwa semua fraksi dalam input sudah dapat direduksi.
Tidak diperlukan pengecekan kesalahan, Anda dapat mengasumsikan, bahwa input tersebut valid dan tidak ada x yang digandakan dalam f (x).
Outputnya harus dalam bentuk yang kompatibel dengan LaTeX, kode LaTeX yang dipancarkan harus menghasilkan representasi grafis yang sama dengan output yang diberikan di sini.
f (x) = 123x ^ 2 + \ frac {45} {2} x + \ frac {7} {4}
Fraksi harus dikurangi sebanyak mungkin, misalnya. sesuatu seperti \frac{2}{4}
tidak diizinkan. Jika angka tersebut bilangan bulat, jangan gunakan pecahan.
Aturan khusus:
Program Anda harus ...
- bekerja untuk polinomial hingga tingkat 12
- lengkap dalam waktu kurang dari 1 menit untuk input yang masuk akal
- tidak menggunakan fungsi apa pun yang melakukan seluruh perhitungan untuk Anda
- output polinomial dari tingkat sekecil mungkin
Testcases:
Testcases yang diberikan hanya untuk klarifikasi. Program Anda harus menghasilkan hasil yang benar untuk semua input yang benar.
Memasukkan
f (1) = 2/3 f (2) = 4/5 f (3) = 6/7
Keluaran
f (x) = - \ frac {4} {105} x ^ 2 + \ frac {26} {105} x + \ frac {16} {35}
Memasukkan
f (-12) = 13/2 f (5/3) = 3/5 f (13) = -6 f (1/5) = -3/4
Keluaran
f (x) = - \ frac {2186133} {239455744} x ^ 3 + \ frac {2741731} {149659840} x ^ 2 + \ frac {26720517} {29201920} x - \ frac {279464297} {299319680}
Memasukkan
f (4/3) = 617/81 f (2) = 20/3 f (-8/3) = 6749/81 f (-5) = 7367/12 f (0) = 23/3
Keluaran
f (x) = \ frac {1} {2} x ^ 4 - 2x ^ 3 + \ frac {7} {4} x ^ 2 + \ frac {23} {3}
Memasukkan
f (0) = 5 f (1) = 7 f (2) = 9 f (3) = 11 f (4) = 13
Keluaran
f (x) = 2x + 5
Memasukkan
f (1/2) = -1/2 f (-25) = -1/2 f (-54/12) = -1/2
Keluaran
f (x) = - \ frac {1} {2}
...
) benar-benar bagian dari input?-\frac{37745}{14592}x^4 - \frac{853249}{43776}x^3 + \frac{57809}{7296}x^2 + \frac{225205}{2736}x + \frac{23}{3}
. Saya menduga masukan itu dimaksudkan untuk menjadi sesuatu yang berbeda :)Jawaban:
J + sh
Skrip J:
skrip sh:
Jalankan skrip sh:
.
sumber
Perl (569 karakter)
Penjelasan detail:
Komentar
Suntingan
(630 → 585) Sadar saya bisa melakukan bentuk eselon dalam satu lingkaran, bukan dua. Tambahkan penjelasan sebagai komentar dalam kode.
(585 → 583) Hanya ditemukan sintaks paket yang memungkinkan saya menggunakan
'
bukan::
.(583 → 573) Sebagian lagi microgolfing
(573 → 569) Ekspresi reguler yang lebih pendek untuk mem-parsing input
sumber
TI-Basic (83/84): 109 karakter
Secara teknis 109 karakter, TI-Basic menghitung redup (, Untuk (, ->, rref (, [A], dan daftar sebagai "satu karakter").
Input diformat menjadi L1 dan L2, dalam pasangan (x, y) [ex L1 = (1,2,3,4), L2 = (2,3,5,7)].
sumber
Metode Lagrange, Python, 199 byte
Sedikit terlambat, tapi ...
sumber
Hanya versi singkat dari kode Fred Freys. Perhatikan bahwa seseorang mungkin dapat melewati passing D ke l, karena ia hanya dapat menariknya dari lingkup luar. Karena Anda mungkin dapat melakukan hal yang sama dengan saya di sini, kami bahkan dapat mencukur satu lambda. Saya akan mengujinya suatu hari nanti.
sumber