Inspirado (con la explicación robada) esto
Antecedentes
Digamos que tiene dos listas A = [a_1, a_2, ..., a_n]
y B = [b_1, b_2, ..., b_n]
de enteros. Decimos que A
es potencialmente divisible por B
si hay una permutación de B
eso que hace a_i
divisible por b_i
para todos i
. El problema es entonces: ¿es posible reordenar (es decir, permutar) de B
modo que a_i
sea divisible por b_i
para todos i
? Por ejemplo, si tienes
A = [6, 12, 8]
B = [3, 4, 6]
A continuación, la respuesta sería True
, como B
pueden ser reordenados B = [3, 6, 4]
y entonces tendríamos que a_1 / b_1 = 2
, a_2 / b_2 = 2
y a_3 / b_3 = 2
, todos los cuales son números enteros, por lo que A
es potencialmente divisible por B
.
Como un ejemplo que debería generar False
, podríamos tener:
A = [10, 12, 6, 5, 21, 25]
B = [2, 7, 5, 3, 12, 3]
La razón False
es que no podemos reordenar B
ya que 25 y 5 están dentro A
, pero el único divisor en B
sería 5, por lo que uno quedaría fuera.
Tu tarea
Obviamente, su tarea es determinar si dos listas (dadas como entrada) son potencialmente divisibles. Puede tomar la entrada de cualquier manera aceptada, como con la salida.
Los duplicados en las listas son una posibilidad, y las únicas restricciones de tamaño en los enteros son su idioma. Todos los enteros en ambas listas serán mayores que 0, y ambas listas serán del mismo tamaño.
Como con todos los problemas de decisión, los valores de salida deben ser 2 valores distintos que representen verdadero y falso.
Este es un código de golf, ¡el código más corto gana!
Casos de prueba
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