Um número variável de bits é uma matriz de 0 ou mais bits. Então, [0, 1]
é um número variável de bits, mas assim é []
.
Escreva uma função ou programa que, dado um número inteiro não negativo, retorne um número variável de bits, de modo que todo número inteiro tenha um mapeamento um para um (bijetivo) com uma matriz.
Há uma quantidade infinita desses mapeamentos, você pode criar um como quiser, mas deve ser um a um. Conceitualmente, seu mapeamento deve ser individual para um número inteiro de tamanho arbitrário, mas tudo bem se sua implementação falhar para números inteiros grandes devido a limites numéricos de tipos no seu idioma preferido (por exemplo, C's int
).
Como exemplo do que não é um mapeamento um para um, basta listar os dígitos binários do número inteiro. Nesse sistema, 5 se torna [1, 0, 1]
(ou 0b101
), mas não é um para um, porque 0b0101
ou [0, 1, 0, 1]
também significa 5.
Deveria ser óbvio que um mapeamento não é individual se pular um número inteiro (por exemplo, não funciona para 5), mas eu gostaria de deixar claro que ignorar uma matriz de bits variável também não é uma. -para um. Você deve mapear a cada matriz de bits variável possível, inclusive []
.
código mais curto em bytes vitórias.