Переменное число битов - это массив из 0 или более битов. Так [0, 1]
же, как и переменное число битов, но это так []
.
Напишите функцию или программу, которая, учитывая неотрицательное целое число, возвращает переменное число битов, так что каждое целое число имеет однозначное (биективное) отображение с массивом.
Существует бесконечное количество таких отображений, вы можете создавать их по своему усмотрению, но они должны быть взаимно однозначными. Ваше отображение должно быть концептуально однозначным для целого числа произвольного размера, но это нормально, если ваша реализация терпит неудачу для больших целых чисел из-за числовых ограничений типов в вашем предпочтительном языке (например, C int
).
В качестве примера того, что не является взаимно-однозначным отображением, просто перечисляем двоичные цифры целого числа. В такой системе 5 становится [1, 0, 1]
(или 0b101
), но это не один к одному, потому что 0b0101
или [0, 1, 0, 1]
также означает 5.
Должно быть совершенно очевидно, что отображение не является взаимно однозначным, если оно пропускает целое число (например, оно не работает для 5), но я хотел бы прояснить, что пропуск массива переменных битов также не -к одному. Вы должны отобразить все возможные переменные битовые массивы, в том числе []
.
Самый короткий код в байтах побеждает.