... Ah xin lỗi, không có bỏng ngô ở đây, chỉ có POPCNT.
Viết chương trình hoặc hàm ngắn nhất có một số nvà xuất tất cả các số nguyên từ 0 đến 2 n - 1, theo thứ tự tăng dần của số 1 bit trong biểu diễn nhị phân của các số (popcount). Không cho phép trùng lặp.
Thứ tự của các số có cùng số đếm được xác định theo thực hiện.
Ví dụ: cho n = 3, tất cả các đầu ra này là hợp lệ:
0, 1, 2, 4, 3, 5, 6, 7
[0, 4, 1, 2, 5, 3, 6, 7]
0 4 2 1 6 5 3 7
Định dạng đầu vào và đầu ra được xác định theo triển khai để cho phép sử dụng các tính năng ngôn ngữ để tiếp tục đánh mã. Có một vài hạn chế về đầu ra:
- Các số phải được xuất ở định dạng thập phân.
Đầu ra phải chứa một dấu phân cách hợp lý giữa các số (dấu phân cách cho phép, nhưng không dẫn đầu).
Thức ăn Line (
\n), tab (\t), không gian,,,.,;,|,-,_,/là dấu phân cách khá hợp lý. Tôi không nhớ các không gian bổ sung để in đẹp, nhưng không sử dụng chữ cái hoặc chữ số làm dấu phân cách.- Các số và dấu phân cách có thể được bao quanh bởi
[ ],{ }hoặc bất kỳ ký hiệu mảng hoặc danh sách. - Đừng in bất cứ điều gì khác không được nêu ở trên.
Tặng kem
Nhân số điểm của bạn với 0,5 nếu giải pháp của bạn có thể tạo ra số nhanh chóng. Tinh thần của phần thưởng này là nếu bạn trực tiếp chuyển đổi giải pháp in của mình sang máy phát, thì trình tạo chỉ sử dụng tối đa bộ nhớ O (n) trong đó n là số bit như được xác định ở trên. (Bạn không thực sự phải chuyển đổi giải pháp của mình sang máy phát điện). Lưu ý rằng trong khi tôi áp đặt n <= 28, bộ nhớ cần lưu trữ tất cả các số vẫn tăng theo cấp số nhân và một giải pháp sắp xếp ngây thơ sẽ chiếm ít nhất 4 GB bộ nhớ với n = 28.
Vui lòng thêm một số giải thích đơn giản về cách giải pháp của bạn hoạt động trước khi yêu cầu phần thưởng này.