Виклик
Давши список натуральних чисел, знайдіть, чи існує перестановка, де можна взяти до одного біта з кожного цілого числа, 1може бути створено двійкове число, що складається з усіх s.
Кількість бітів у отриманому двійковому числі дорівнює найвищій MSB у списку цілих чисел.
Вихід
Ваш код повинен виводити або повертати значення truthy / falsey, що вказує, чи існує така перестановка.
Приклади
Truthy:
За допомогою списку [4, 5, 2]та його бінарного подання [100, 101, 10]ми можемо використовувати третій, перший та другий біти відповідно для створення 111:
4 -> 100 -> 100 -> 1
5 -> 101 -> 101 -> 1
2 -> 010 -> 010 -> 1
Result 111
У цьому списку [3, 3, 3]всі номери мають і перший, і другий біт як 1, тому ми можемо взяти вибір із номером, щоб запасти:
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 ->
Result 11
Фальсі:
У списку [4, 6, 2]жодне з чисел не встановлено перший біт як 1, тому двійкове число не може бути створене:
4 -> 100
6 -> 110
2 -> 010
Зі списку [1, 7, 1], лише одне з чисел має другий та третій біти 1, а число не можна створити:
1 -> 001
7 -> 111
1 -> 001
Очевидно, якщо максимальна кількість встановлених бітів перевищує кількість цілих чисел, число результатів ніколи не може бути створене.
Тестові справи
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]
Фальсі:
[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]
Правила
Стандартні лазівки заборонені. Оскільки це код-гольф , виграє найкоротший вхід!