Un número variable de bits es una matriz de 0 o más bits. Entonces, [0, 1]
es un número variable de bits, pero también lo es []
.
Escriba una función o programa que, dado un número entero no negativo, devuelva un número variable de bits, de modo que cada número entero tenga un mapeo uno a uno (biyectivo) con una matriz.
Hay una cantidad infinita de tales mapeos, usted es libre de construir uno a su gusto, pero debe ser uno a uno. Su mapeo debe ser conceptualmente uno a uno para un número entero de tamaño arbitrario, pero está bien si su implementación falla para números enteros grandes debido a los límites numéricos de los tipos en su idioma preferido (por ejemplo, C int
).
Como ejemplo de lo que no es un mapeo uno a uno, es simplemente enumerar los dígitos binarios del entero. En dicho sistema, 5 se convierte [1, 0, 1]
(o 0b101
), pero no es uno a uno, porque 0b0101
o [0, 1, 0, 1]
también significa 5.
Debería ser bastante obvio que un mapeo no es uno a uno si omite un número entero (por ejemplo, no funciona para 5), pero me gustaría dejar en claro que omitir una matriz de bits variable tampoco es uno -a uno. Debe asignar a cada matriz de bits variable posible, incluida []
.
El código más corto en bytes gana.