Terinspirasi (dengan penjelasan dicuri dari) ini
Latar Belakang
Katakanlah Anda memiliki dua daftar A = [a_1, a_2, ..., a_n]
dan B = [b_1, b_2, ..., b_n]
bilangan bulat. Kita mengatakan A
adalah berpotensi-habis dibagi oleh B
jika ada permutasi dari B
yang membuat a_i
dibagi oleh b_i
semua i
. Masalahnya kemudian: apakah mungkin untuk memesan ulang (yaitu permutasi) B
sehingga a_i
dapat habis b_i
bagi semua orang i
? Misalnya, jika sudah
A = [6, 12, 8]
B = [3, 4, 6]
Maka jawabannya akan True
, karena B
dapat mengatur kembali menjadi B = [3, 6, 4]
dan kemudian kita akan memiliki yang a_1 / b_1 = 2
, a_2 / b_2 = 2
dan a_3 / b_3 = 2
, yang semuanya bilangan bulat, sehingga A
berpotensi-habis dibagi B
.
Sebagai contoh yang seharusnya ditampilkan False
, kita dapat memiliki:
A = [10, 12, 6, 5, 21, 25]
B = [2, 7, 5, 3, 12, 3]
Alasannya False
adalah karena kami tidak dapat memesan ulang B
karena 25 dan 5 ada A
, tetapi satu-satunya pembagi B
adalah 5, jadi orang akan ditinggalkan.
Tugas Anda
Tugas Anda, tentu saja, untuk menentukan apakah dua daftar (diberikan sebagai input) berpotensi dibagi. Anda dapat mengambil input dengan cara apa pun yang diterima, seperti halnya dengan output.
Duplikat dalam daftar adalah suatu kemungkinan, dan satu-satunya batasan ukuran pada bilangan bulat adalah bahasa Anda. Semua bilangan bulat di kedua daftar akan lebih besar dari 0, dan kedua daftar akan berukuran sama.
Seperti halnya semua masalah keputusan , nilai output harus 2 nilai berbeda yang mewakili benar dan salah.
Ini adalah kode-golf sehingga kode terpendek menang!
Uji kasus
Input, input => output
[6, 12, 8], [3, 4, 6] => True
[10, 5, 7], [1, 5, 100] => False
[14, 10053, 6, 9] [1,1,1,1] => True
[12] [7] => False
[0, 6, 19, 1, 3] [2, 3, 4, 5, 6] => undefined