Вдохновленный (с объяснением украдено у) это
Фон
Скажем, у вас есть два списка 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, так что один будет опущен.
Твое задание
Ваша задача, очевидно, определить, являются ли два списка (заданных в качестве входных данных) потенциально делимыми. Вы можете принимать входные данные любым приемлемым способом, как при выводе.
Дубликаты в списках возможны, и единственное ограничение размера на целые числа - это ваш язык. Все целые числа в обоих списках будут больше 0, и оба списка будут одинакового размера.
Как и во всех проблемах с решением, выходные значения должны быть 2 различными значениями, которые представляют истину и ложь.
Это код-гольф, поэтому выигрывает самый короткий код!
Контрольные примеры
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