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.
Réponses:
05AB1E , 13 octets
Encodeur, 8 octets
Essayez-le en ligne!
Explication
Décodeur, 5 octets
Essayez-le en ligne!
Explication
la source
Gelée , 17 octets
Encodeur (10 octets):
Essayez-le en ligne!
Décodeur (7 octets):
Essayez-le en ligne!
Comment?
Encodeur:
Décodeur:
la source
JavaScript (ES6), 130 octets
E / S: tableau de bits ↔ entier
Encodeur, 71 octets
Essayez-le en ligne!
Décodeur, 59 octets
Essayez-le en ligne!
la source
Java 10, 209 octets
Encodeur, 124 octets
Essayez-le en ligne.
Explication:
Décodeur, 85 octets
Essayez-le en ligne.
Explication:
la source
long
pourint
.Husk , 18 octets
Encodeur, 11 octets
Essayez-le en ligne!
Décodeur, 7 octets
Essayez-le en ligne!
Comment ils travaillent
Encodeur:
Décodeur:
la source
Python 2 ,
234193174 octetsEncodeur,
11610197 octets:Utilise le théorème de Wilson .
Essayez-le en ligne!
Décodeur,
1189277 octets:Essayez-le en ligne!
la source
J , 34 octets
Fortement inspiré par la solution Jelly de Jonathan Allan!
Encodeur: 23 octets
Essayez-le en ligne!
Je n'aime pas ces nombreuses fourchettes
[:
- elles devraient être jouables au golf.Décodeur: 11 octets
Essayez-le en ligne!
la source
Gelée , 15 octets
Encodeur, 9 octets
Essayez-le en ligne!
Décodeur, 6 octets
Essayez-le en ligne!
la source
C (gcc) ,
180184 octets102 octets - Encodeur
Essayez-le en ligne!
82 octets - Décodeur
Essayez-le en ligne!
la source
Gol> <> , 29 + 39 = 68 octets
Encodeur, 29 octets
Essayez-le en ligne!
Décodeur, 39 octets
Essayez-le en ligne!
Comment ça marche
Ce serait mieux si je pouvais jouer au golf dans la prochaine boucle d'amorçage ...
la source