Inspirado (com a explicação roubada) desta
fundo
Digamos que você tenha duas listas A = [a_1, a_2, ..., a_n]
e B = [b_1, b_2, ..., b_n]
números inteiros. Dizemos que A
é potencialmente divisível por B
se existe uma permutação B
que torna a_i
divisível por b_i
todos i
. O problema é então: é possível reordenar (isto é, permutar) B
para que a_i
seja divisível por b_i
todos i
? Por exemplo, se você tiver
A = [6, 12, 8]
B = [3, 4, 6]
Então a resposta seria True
, como B
podem ser reordenados para ser B = [3, 6, 4]
e então teríamos que a_1 / b_1 = 2
, a_2 / b_2 = 2
e a_3 / b_3 = 2
, todos os quais são inteiros, então A
é potencialmente divisível por B
.
Como um exemplo que deve False
gerar, poderíamos ter:
A = [10, 12, 6, 5, 21, 25]
B = [2, 7, 5, 3, 12, 3]
A razão False
é que não podemos reordenar, B
pois 25 e 5 estão dentro A
, mas o único divisor em B
seria 5, então um seria deixado de fora.
Sua tarefa
Sua tarefa é, obviamente, determinar se duas listas (fornecidas como entrada) são potencialmente divisíveis. Você pode receber informações de qualquer maneira aceita, como na saída.
As duplicatas nas listas são uma possibilidade e as únicas restrições de tamanho nos números inteiros são o seu idioma. Todos os números inteiros nas duas listas serão maiores que 0 e as duas listas terão o mesmo tamanho.
Como em todos os problemas de decisão, os valores de saída devem ser 2 valores distintos que representam verdadeiro e falso.
Este é um código de golfe, então o código mais curto vence!
Casos de teste
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