Sfida
Dato un elenco di numeri interi positivi, scopri se esiste una permutazione in cui prendendo fino a un bit da ciascuno dei numeri interi, 1
è possibile creare un numero binario composto da tutti gli s.
Il numero di bit nel numero binario risultante è uguale al MSB più alto nell'elenco di numeri interi.
Produzione
Il codice deve generare o restituire un valore di verità / falsità che indica se esiste una tale permutazione.
Esempi
Truthy:
Con l'elenco [4, 5, 2]
e la sua rappresentazione binaria [100, 101, 10]
, possiamo usare il terzo, il primo e il secondo bit, rispettivamente, per creare 111
:
4 -> 100 -> 100 -> 1
5 -> 101 -> 101 -> 1
2 -> 010 -> 010 -> 1
Result 111
Con l'elenco [3, 3, 3]
, tutti i numeri hanno sia il primo che il secondo bit impostati come 1
, quindi possiamo scegliere con un numero di riserva:
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 ->
Result 11
Falsey:
Con l'elenco [4, 6, 2]
, nessuno dei numeri ha il primo bit impostato come 1
, quindi il numero binario non può essere creato:
4 -> 100
6 -> 110
2 -> 010
Con l'elenco [1, 7, 1]
, solo uno dei numeri ha il secondo e il terzo bit impostati come 1
e il numero non può essere creato:
1 -> 001
7 -> 111
1 -> 001
Ovviamente, se il numero massimo di bit impostati supera il numero di numeri interi, il numero del risultato non potrà mai essere creato.
Casi test
Truthy:
[1]
[1, 2]
[3, 3]
[3, 3, 3]
[4, 5, 2]
[1, 1, 1, 1]
[15, 15, 15, 15]
[52, 114, 61, 19, 73, 54, 83, 29]
[231, 92, 39, 210, 187, 101, 78, 39]
Falsey:
[2]
[2, 2]
[4, 6, 2]
[1, 7, 1]
[15, 15, 15]
[1, 15, 3, 1]
[13, 83, 86, 29, 8, 87, 26, 21]
[154, 19, 141, 28, 27, 6, 18, 137]
Regole
Sono vietate le scappatoie standard . Dato che si tratta di code-golf , vince l'ingresso più breve!