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 0b0101o [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.