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 1
s 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!