Ispirato (con la spiegazione rubata da) questo
sfondo
Supponi di avere due elenchi A = [a_1, a_2, ..., a_n]
e B = [b_1, b_2, ..., b_n]
di numeri interi. Diciamo che A
è potenzialmente divisibile per B
se esiste una permutazione B
che rende a_i
divisibile b_i
per tutti i
. Il problema è quindi: è possibile riordinare (cioè permutare) in B
modo che a_i
sia divisibile b_i
per tutti i
? Ad esempio, se hai
A = [6, 12, 8]
B = [3, 4, 6]
Poi la risposta sarebbe True
, come B
eventuale ricambio di essere B = [3, 6, 4]
e allora avremmo che a_1 / b_1 = 2
, a_2 / b_2 = 2
e a_3 / b_3 = 2
, che sono tutti numeri interi, quindi A
è potenzialmente-divisibile per B
.
Come esempio che dovrebbe essere prodotto False
, potremmo avere:
A = [10, 12, 6, 5, 21, 25]
B = [2, 7, 5, 3, 12, 3]
Il motivo False
è che non possiamo riordinare B
dato che sono presenti 25 e 5 A
, ma l'unico divisore in B
sarebbe 5, quindi uno verrebbe lasciato fuori.
Il tuo compito
Il tuo compito è, ovviamente, determinare se due liste (fornite come input) sono potenzialmente divisibili. È possibile accettare input in qualsiasi modo accettato, come per l'output.
I duplicati negli elenchi sono una possibilità e le uniche restrizioni di dimensione sugli interi sono la tua lingua. Tutti i numeri interi in entrambi gli elenchi saranno maggiori di 0 ed entrambi gli elenchi avranno le stesse dimensioni.
Come per tutti i problemi di decisione, i valori di output devono essere 2 valori distinti che rappresentano vero e falso.
Questo è un code-golf quindi vince il codice più corto!
Casi test
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