Un nombre variable de bits est un tableau de 0 ou plusieurs bits. Il en [0, 1]
va de même pour un nombre variable de bits, mais il en est de même []
.
Écrivez une fonction ou un programme qui, étant donné un entier non négatif, renvoie un nombre variable de bits de sorte que chaque entier ait un mappage un à un (bijectif) avec un tableau.
Il existe une quantité infinie de ces mappages, vous êtes libre d'en créer un à votre guise, mais ce doit être un à un. Votre mappage doit conceptuellement être un pour un pour un entier de taille arbitraire, mais c'est OK si votre implémentation échoue pour les grands entiers en raison des limites numériques des types dans votre langue préférée (par exemple, les C int
).
À titre d'exemple de ce qui n'est pas un mappage un à un, il suffit de répertorier les chiffres binaires de l'entier. Dans un tel système, 5 devient [1, 0, 1]
(ou 0b101
), mais ce n'est pas un à un, car 0b0101
ou [0, 1, 0, 1]
signifie également 5.
Il devrait être assez évident qu'un mappage n'est pas un à un s'il saute un entier (par exemple, il ne fonctionne pas pour 5), mais je tiens à préciser que sauter un tableau de bits variable n'est pas non plus un -à une. Vous devez mapper sur tous les tableaux de bits variables possibles, y compris []
.
Le code le plus court en octets gagne.