Tantangan
Diberikan daftar bilangan bulat positif, temukan jika ada permutasi di mana mengambil hingga satu bit dari masing-masing bilangan bulat, angka biner yang terdiri dari semua 1s dapat dibuat.
Jumlah bit dalam jumlah biner yang dihasilkan sama dengan MSB tertinggi dalam daftar bilangan bulat.
Keluaran
Kode Anda harus menampilkan atau mengembalikan nilai kebenaran / kesalahan yang menunjukkan jika permutasi semacam itu ada.
Contohnya
Benar:
Dengan daftar [4, 5, 2], dan representasi binernya [100, 101, 10], kita dapat menggunakan bit ketiga, pertama, dan kedua, masing-masing, untuk membuat 111:
4 -> 100 -> 100 -> 1
5 -> 101 -> 101 -> 1
2 -> 010 -> 010 -> 1
Result 111
Dengan daftar [3, 3, 3], semua angka memiliki bit pertama dan kedua ditetapkan sebagai 1, sehingga kita dapat memilih dengan nomor yang akan dicadangkan:
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 ->
Result 11
Falsey:
Dengan daftar [4, 6, 2], tidak ada angka yang memiliki bit pertama yang ditetapkan 1, sehingga angka biner tidak dapat dibuat:
4 -> 100
6 -> 110
2 -> 010
Dengan daftar [1, 7, 1], hanya satu nomor yang memiliki bit kedua dan ketiga ditetapkan sebagai 1, dan nomor tidak dapat dibuat:
1 -> 001
7 -> 111
1 -> 001
Jelas, jika jumlah maksimum set bit melebihi jumlah integer, jumlah hasil tidak akan pernah dapat dibuat.
Uji kasus
Benar:
[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]
Aturan
Celah standar dilarang. Karena ini adalah kode-golf , entri terpendek menang!