Thử thách
Đưa ra một danh sách các số nguyên dương, tìm xem có tồn tại một hoán vị trong đó lấy tối đa một bit từ mỗi số nguyên hay không, một số nhị phân bao gồm tất cả các 1
s có thể được tạo.
Số lượng bit trong số nhị phân kết quả bằng với MSB cao nhất trong danh sách các số nguyên.
Đầu ra
Mã của bạn phải xuất hoặc trả về giá trị trung thực / falsey cho biết nếu tồn tại hoán vị như vậy.
Ví dụ
Sự thật:
Với danh sách [4, 5, 2]
và biểu diễn nhị phân của nó [100, 101, 10]
, chúng ta có thể sử dụng các bit thứ ba, thứ nhất và thứ hai tương ứng để tạo 111
:
4 -> 100 -> 100 -> 1
5 -> 101 -> 101 -> 1
2 -> 010 -> 010 -> 1
Result 111
Với danh sách [3, 3, 3]
, tất cả các số có cả bit thứ nhất và thứ hai được đặt là 1
, vì vậy chúng ta có thể chọn một số để dự phòng:
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 ->
Result 11
Falsey:
Với danh sách [4, 6, 2]
, không có số nào có bit đầu tiên được đặt 1
, vì vậy số nhị phân không thể được tạo:
4 -> 100
6 -> 110
2 -> 010
Với danh sách [1, 7, 1]
, chỉ một trong các số có bit thứ hai và thứ ba được đặt là 1
và số không thể được tạo:
1 -> 001
7 -> 111
1 -> 001
Rõ ràng, nếu số bit được đặt tối đa vượt quá số nguyên, số kết quả không bao giờ có thể được tạo.
Các trường hợp thử nghiệm
Sự thật:
[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]
Quy tắc
Sơ hở tiêu chuẩn bị cấm. Vì đây là môn đánh gôn , nên bài dự thi ngắn nhất!