Натхненно (з поясненням, викраденим у цього )
Фон
Скажімо, у вас є два списки A = [a_1, a_2, ..., a_n]
і B = [b_1, b_2, ..., b_n]
цілих числа. Ми говоримо A
, що потенційно ділиться , B
якщо є перестановка, B
що робить a_i
ділимим b_i
на всіх i
. Проблема полягає в тому: чи можна змінити порядок (тобто перестановку) B
так, що a_i
поділяється b_i
на всіх i
? Наприклад, якщо у вас є
A = [6, 12, 8]
B = [3, 4, 6]
Тоді відповідь буде True
, так як B
може бути замовлена бути , B = [3, 6, 4]
і тоді ми б що a_1 / b_1 = 2
, a_2 / b_2 = 2
і a_3 / b_3 = 2
, всі з яких є цілими числами, тому A
потенційно-кратно B
.
Як приклад, який повинен бути результатом False
, ми можемо навести :
A = [10, 12, 6, 5, 21, 25]
B = [2, 7, 5, 3, 12, 3]
Причиною цього є False
те, що ми не можемо змінити порядок, B
оскільки 25 та 5 знаходяться у A
, але єдиним дільником у B
5 буде 5, тож один буде залишений.
Ваше завдання
Ваше завдання, очевидно, визначити, чи потенційно ділиться два списки (дані як вхідні дані). Ви можете приймати інформацію будь-яким прийнятим способом, як і вихідний.
Дублікати у списках - це можливість, і єдиними обмеженнями розміру на цілі числа є ваша мова. Усі цілі числа в обох списках будуть більшими за 0, і обидва списки будуть однакового розміру.
Як і у всіх проблемах вирішення, вихідні значення повинні бути двома різними значеннями, що представляють собою істинні та помилкові.
Це код-гольф, тому найкоротший виграш коду!
Тестові кейси
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