Wyzwanie
Biorąc pod uwagę listę dodatnich liczb całkowitych, sprawdź, czy istnieje permutacja, w której biorąc do jednego bitu z każdej liczby całkowitej, można utworzyć liczbę binarną składającą się ze wszystkich 1
s.
Liczba bitów w wynikowej liczbie binarnej jest równa najwyższemu MSB na liście liczb całkowitych.
Wydajność
Twój kod musi generować lub zwracać wartość true / falsey wskazującą, czy istnieje taka permutacja.
Przykłady
Prawda:
Z listą [4, 5, 2]
i jej reprezentacją binarną [100, 101, 10]
możemy użyć odpowiednio trzeciego, pierwszego i drugiego bitu, aby utworzyć 111
:
4 -> 100 -> 100 -> 1
5 -> 101 -> 101 -> 1
2 -> 010 -> 010 -> 1
Result 111
Dzięki tej liście [3, 3, 3]
wszystkie liczby mają ustawiony zarówno pierwszy, jak i drugi bit jako 1
, więc możemy wybrać nasz numer z rezerwowym:
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 ->
Result 11
Falsey:
Na liście [4, 6, 2]
żaden z numerów nie ma ustawionego pierwszego bitu jako 1
, więc nie można utworzyć liczby binarnej:
4 -> 100
6 -> 110
2 -> 010
W przypadku listy [1, 7, 1]
tylko jedna z liczb ma ustawiony drugi i trzeci bit jako 1
, a liczby nie można utworzyć:
1 -> 001
7 -> 111
1 -> 001
Oczywiście, jeśli maksymalna liczba ustawionych bitów przekracza liczbę całkowitą, liczby wynikowej nigdy nie można utworzyć.
Przypadki testowe
Prawda:
[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]
Zasady
Standardowe luki są zabronione. Ponieważ jest to golf golfowy , wygrywa najkrótszy wpis!