Comment fonctionne l'encodage
Étant donné une liste de bits:
- Tenir un premier (en commençant par
2
) - Avoir une liste
- Pour chaque bit en entrée
- Si c'est le même que le bit précédent, ajoutez le premier que vous tenez à la liste
- Si c'est différent, maintenez le premier prime et ajoutez-le à la liste
- Retournez le produit de tous les numéros de votre liste
- Pour le premier bit, supposons que le bit précédent était
0
Remarque: ces étapes sont uniquement à des fins d'illustration, vous n'êtes pas obligé de les suivre.
Exemples
Input: 001
hold 2
0: add 2 to the list
0: add 2 to the list
1: hold 3, add 3 to the list
list: 2,2,3
Output: 12
Input: 1101
hold 2
1: hold 3, add 3 to the list
1: add 3 to the list
0: hold 5, add 5 to the list
1: hold 7, add 7 to the list
list: 3,3,5,7
Output: 315
Quelques exemples supplémentaires:
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
Défi
Écrivez un encodeur et un décodeur pour cette méthode d'encodage.
(Le décodeur inverse le processus de l'encodeur).
Entrée sortie
L'encodeur peut prendre des entrées dans n'importe quel format raisonnable
L'encodeur doit sortir soit un entier soit une chaîne
Le décodeur doit accepter l'entrée dans le même format que le codeur émet
Le décodeur doit sortir le même format que l'encodeur prend en entrée
En d'autres termes decoder( encoder( input ) ) === input
Remarques
- Le décodeur peut supposer que son entrée est décodable
- Votre réponse a seulement pour traiter des entiers que votre langue peut prendre en charge de manière native sans utiliser (
long
,bigInt
, etc.), être raisonnable, si vous ne supporterais que la langue ints jusqu'à 1, peut - être revenir sur l' affichage d' une réponse
Notation
Votre score est la somme des longueurs en octets de l'encodeur et du décodeur.
Si vous devez importer un module, l'importation ne peut être comptée qu'une seule fois à condition que votre encodeur et votre décodeur puissent coexister dans le même fichier et être réutilisés (comme les fonctions).
Les failles par défaut sont interdites.
C'est le golf de code, donc le score le plus court pour chaque langue l'emporte.