Вдохновленный (с объяснением украдено у) это
Фон
Скажем, у вас есть два списка 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