Zainspirowany (z wyjaśnieniem skradzione) to
tło
Załóżmy, że masz dwie listy A = [a_1, a_2, ..., a_n]
i B = [b_1, b_2, ..., b_n]
liczby całkowite. Mówimy, że A
jest potencjalnie podzielna przez, B
jeśli istnieje permutacja, B
która czyni a_i
podzielną przez b_i
wszystkich i
. Problem polega zatem na tym: czy można zmienić kolejność (tj. Permutację), B
aby wszyscy mogli ją a_i
podzielić ? Na przykład jeśli maszb_i
i
A = [6, 12, 8]
B = [3, 4, 6]
Wtedy będzie odpowiedź True
, jak B
można być zreorganizowane B = [3, 6, 4]
i wtedy mamy, że a_1 / b_1 = 2
, a_2 / b_2 = 2
i a_3 / b_3 = 2
, z których wszystkie są liczbami całkowitymi, więc A
jest potencjalnie podzielna przez B
.
Jako przykład, który powinien wypisać False
, możemy mieć:
A = [10, 12, 6, 5, 21, 25]
B = [2, 7, 5, 3, 12, 3]
Powodem jest False
to, że nie możemy zmienić kolejności, B
ponieważ 25 i 5 są w A
środku, ale jedynym dzielnikiem B
będzie 5, więc jeden zostanie pominięty.
Twoje zadanie
Twoim zadaniem jest oczywiście ustalenie, czy dwie listy (podane jako dane wejściowe) są potencjalnie podzielne. Możesz przyjmować dane wejściowe w dowolny zaakceptowany sposób, tak jak w przypadku danych wyjściowych.
Możliwe są duplikaty na listach, a jedynym ograniczeniem wielkości liczb całkowitych jest Twój język. Wszystkie liczby całkowite na obu listach będą większe niż 0, a obie listy będą jednakowego rozmiaru.
Podobnie jak w przypadku wszystkich problemów decyzyjnych, wartości wyjściowe muszą być 2 odrębnymi wartościami, które reprezentują prawda i fałsz.
To jest golf golfowy, więc wygrywa najkrótszy kod!
Przypadki testowe
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