Reto
Dada una lista de enteros positivos, encuentre si existe una permutación donde tomar hasta un bit de cada uno de los enteros, 1
se puede crear un número binario que consista en todos los s.
El número de bits en el número binario resultante es igual al MSB más alto en la lista de enteros.
Salida
Su código debe generar o devolver un valor verdadero / falso que indique si existe tal permutación.
Ejemplos
Verdad:
Con la lista [4, 5, 2]
y su representación binaria [100, 101, 10]
, podemos usar los bits tercero, primero y segundo, respectivamente, para crear 111
:
4 -> 100 -> 100 -> 1
5 -> 101 -> 101 -> 1
2 -> 010 -> 010 -> 1
Result 111
Con la lista [3, 3, 3]
, todos los números tienen los primeros y segundos bits configurados como 1
, por lo que podemos elegir con un número de sobra:
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 ->
Result 11
Falsey
Con la lista [4, 6, 2]
, ninguno de los números tiene el primer bit establecido como 1
, por lo que no se puede crear el número binario:
4 -> 100
6 -> 110
2 -> 010
Con la lista [1, 7, 1]
, solo uno de los números tiene el segundo y tercer bit establecido como 1
, y el número no se puede crear:
1 -> 001
7 -> 111
1 -> 001
Obviamente, si el número máximo de bits establecidos excede el número de enteros, el número de resultado nunca se puede crear.
Casos de prueba
Verdad:
[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]
Reglas
Las lagunas estándar están prohibidas. Como se trata de código de golf , ¡la entrada más corta gana!