Số bit thay đổi là một mảng từ 0 bit trở lên. [0, 1]
Số bit thay đổi là vậy , nhưng cũng vậy []
.
Viết một hàm hoặc chương trình, với một số nguyên không âm sẽ trả về một số bit khác nhau sao cho mỗi số nguyên có ánh xạ một-một (tính từ) với một mảng.
Có vô số ánh xạ như vậy, bạn có thể tự do xây dựng một bản đồ theo ý muốn, nhưng nó phải là một đối một. Ánh xạ của bạn về mặt khái niệm phải là một đối một cho một số nguyên có kích thước tùy ý, nhưng sẽ ổn nếu việc triển khai của bạn không thành công cho các số nguyên lớn do giới hạn số lượng của các loại trong ngôn ngữ ưa thích của bạn (ví dụ: C int
).
Như một ví dụ về những gì không phải là ánh xạ một-một, chỉ đơn giản là liệt kê các chữ số nhị phân của số nguyên. Trong một hệ thống 5 như vậy trở thành [1, 0, 1]
(hoặc 0b101
), nhưng nó không phải là một đối một, bởi vì 0b0101
hoặc [0, 1, 0, 1]
cũng có nghĩa là 5.
Một điều khá rõ ràng là ánh xạ không phải là một đối một nếu nó bỏ qua một số nguyên (ví dụ: nó không hoạt động trong 5), nhưng tôi muốn làm rõ rằng bỏ qua một mảng bit biến cũng không phải là một -đến một. Bạn phải ánh xạ tới mọi mảng bit biến có thể, bao gồm []
.
Mã ngắn nhất trong byte thắng.