Herausforderung
Suchen Sie anhand einer Liste positiver Ganzzahlen, ob es eine Permutation gibt, bei der von jeder Ganzzahl bis zu einem Bit benötigt wird, und 1
erstellen Sie eine Binärzahl, die aus allen s besteht.
Die Anzahl der Bits in der resultierenden Binärzahl entspricht dem höchsten MSB in der Liste der ganzen Zahlen.
Ausgabe
Ihr Code muss einen Wert für " truthy / falsey" ausgeben oder zurückgeben, der angibt, ob eine solche Permutation vorhanden ist.
Beispiele
Wahrheit:
Mit der Liste [4, 5, 2]
und ihrer binären Darstellung [100, 101, 10]
können wir das dritte, erste und zweite Bit verwenden, um Folgendes zu erstellen 111
:
4 -> 100 -> 100 -> 1
5 -> 101 -> 101 -> 1
2 -> 010 -> 010 -> 1
Result 111
In der Liste [3, 3, 3]
sind für alle Zahlen sowohl das erste als auch das zweite Bit als gesetzt 1
, sodass wir uns eine Nummer aussuchen können, die noch übrig ist:
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 ->
Result 11
Falsey:
In der Liste [4, 6, 2]
ist für keine der Zahlen das erste Bit gesetzt 1
, sodass die Binärzahl nicht erstellt werden kann:
4 -> 100
6 -> 110
2 -> 010
Mit der Liste [1, 7, 1]
ist nur für eine der Nummern das zweite und dritte Bit festgelegt 1
, und die Nummer kann nicht erstellt werden:
1 -> 001
7 -> 111
1 -> 001
Wenn die maximale Anzahl der gesetzten Bits die Anzahl der ganzen Zahlen überschreitet, kann die Ergebnisnummer natürlich nie erstellt werden.
Testfälle
Wahrheit:
[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]
Regeln
Standardlücken sind verboten. Da dies Codegolf ist , gewinnt der kürzeste Einstieg!