Polinomial dapat dibagi dengan faktor (x-n)
jika f(n)=0
untuk suatu fungsi f
. Pekerjaan Anda: untuk menentukan apakah fungsi polinom f(x)
dapat dibagi oleh (x-n)
.
Input
Masukan dalam bentuk (x-n), (Polynomial)
. Ingat, jika n negatif, (x-n)
akan dalam bentuk input dari(x+n)
. Untuk polinomial, semua eksponen akan dimasukkan sebagai ^
. Koefisien akan ditulis di sebelah variabel x
. Contoh polinomial bisa jadi 2x^2 + x^1
. Tidak akan ada ruang di antara apa pun. Istilah x
akan dimasukkan sebagai x^1
. Jadi seperti apa yang "normal" (x - 1)
nantinya (x^1-1)
. Koefisien dan kekuatan akan selalu berupa bilangan bulat. Koefisien satu akan tersirat jika itu adil x
. Yaitu, x
bisa diartikan sebagai1x
Hasil
Nilai boolean. Truthy, atau Falsey.
Terima kasih kepada @AlexA. Untuk membantu saya memperjelas ini!
Contohnya
Input:(x^1-1),(x^1-1)
Output: True
Input: (x^1+2),(2x^2+4x^1+2)
Output: False
Input: (x^1+7),(x^2-49)
Output: True
Aturan
- Ini adalah kode-golf , jadi kode terpendek dalam byte menang
Sayangnya, saya tidak tahu bagaimana menerapkan leaderboard snippet. Jika ada yang tahu caranya, silakan mengedit posting.
sumber
Jawaban:
Pyth - 39 byte
Ini adalah kombinasi mengerikan dari regexp dan eval. Saya suka pendekatannya, tetapi akan mencoba meningkatkan implementasinya.
Ia menggunakan Teorema Sisa Polinomial .
Tidak bekerja online karena penggunaan eval.
sumber
Casio Basic, 19 byte
Ternyata, fx-CP400 dapat dilakukan
mod
pada ekspresi aljabar!Polinomial dan faktor harus dimasukkan sebagai ekspresi. 16 byte untuk kode, 3 byte untuk dimasukkan
a,b
ke dalam kotak nilai parameter.sumber
MATLAB,
103 99 97 9593 byteSaya mencoba beberapa hal berbeda, dan membuatnya berfungsi untuk menghemat beberapa byte:
Jika saya dapat mengurangi itu lebih jauh, saya akan memposting penjelasan.
Kode lama penjelasan
Ini juga berfungsi dengan Oktaf . Anda dapat mencobanya secara online . Saya telah menyimpan program sebagai skrip bernama
isFactor.m
, jadi Anda bisa langsung masukisFactor
saat diminta. [Catatan: dalam Oktaf mengeluarkan peringatan saat berjalan - MATLAB tidak menghasilkan ini].Masukan harus dalam format
'(x^1+7),(x^2-49)'
sesuai pertanyaan. Tanda kutip ditambahkan sehingga MATLAB / Oktaf tahu itu adalah string.Outputnya adalah a
0
atau a1
tergantung pada apakah itu benar atau salah.Jadi, kodenya berfungsi sebagai berikut. Pertama kita meminta input, dan kemudian menguraikannya. String parsing mengekstraksi nomor yang ditandatangani setelah yang pertama
(x^1
dalam string - ini adalah nilai kamin
. Kemudian terus mengekstraksi string (%s
) setelah),
di input - ini adalah ekspresi kami.Selanjutnya, kita mengekstrak nilai
n
dan menyetelx
sama dengan itu - kita akan mengevaluasi apakah ekspresi sama dengan nol kapann==x
, jadi ini sebabnya kita menyimpan nilai ke x. Kami juga meniadakan angka yang diekstraksi, karena tanda minus ketika parsing.Kami kemudian akan menampilkan output yang merupakan boolean
Output pada dasarnya adalah negasi logis dari persamaan yang kami evaluasi. Jika
f(x)
nol, ini akan mengembalikan 1, jika tidak maka akan menghasilkan nol.Kami sedang mengevaluasi ekspresi input, tetapi untuk melakukan ini, kita perlu memformat ulangnya sedikit agar MATLAB dapat mengerti. Ketika kita membaca string, sebenarnya itu adalah array
double
tipe, jadi kita perlu mengonversinya menjadi array karakter. Sebelum konversi, kami juga menyingkirkan elemen pertama karena itulah yang kami gunakan untuk itun
. Kita kemudian perlu mengganti kejadianx
yang didahului oleh angka (misalnya4x
) dengan hal yang sama tetapi dengan multiplikasi (*
) masuk di antaranya sehingga MATLAB dapat menghitungnya.sumber
VBScript,
118116 byteKarena kita tahu bahwa bagian pertama dari input adalah polinomial linier, kita hanya perlu memeriksa apakah akarnya cocok dengan polinomial kedua; dan kita perlu menyiapkan istilah
eval
dengan memasukkan*
sesuai kebutuhan.sumber
Aksioma
77180 Bytessolusi sebelumnya
salah karena menganggap derajat (b)> = derajat (a) satu bug yang saya tulis ... tes dan hasil
sumber