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 Ajest potencjalnie podzielna przez, Bjeśli istnieje permutacja, Bktóra czyni a_ipodzielną przez b_iwszystkich i. Problem polega zatem na tym: czy można zmienić kolejność (tj. Permutację), Baby wszyscy mogli ją a_ipodzielić ? Na przykład jeśli maszb_ii
A = [6, 12, 8]
B = [3, 4, 6]
Wtedy będzie odpowiedź True, jak Bmożna być zreorganizowane B = [3, 6, 4]i wtedy mamy, że a_1 / b_1 = 2, a_2 / b_2 = 2i a_3 / b_3 = 2, z których wszystkie są liczbami całkowitymi, więc Ajest 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 Falseto, że nie możemy zmienić kolejności, Bponieważ 25 i 5 są w Aśrodku, ale jedynym dzielnikiem Bbę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