Cómo funciona la codificación
Dada una lista de bits:
- Mantenga una prima (comenzando con
2
) - Tener una lista
- Para cada bit en la entrada
- Si es lo mismo que el bit anterior, agregue la prima que está sosteniendo a la lista
- Si es diferente, sostenga el próximo primer y agréguelo a la lista
- Devuelve el producto de todos los números en tu lista
- Para el primer bit, suponga que el bit anterior fue
0
Nota: estos pasos son solo para fines ilustrativos, no es necesario que los siga.
Ejemplos
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
Algunos ejemplos más:
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
Desafío
Escriba un codificador y un decodificador para este método de codificación.
(El decodificador invierte el proceso del codificador).
De entrada y salida
El codificador puede recibir información en cualquier formato razonable
El codificador debe generar un entero o una cadena
El decodificador debe tomar la entrada en el mismo formato que el codificador utiliza
El decodificador debe generar el mismo formato que el codificador toma como entrada
En otras palabras decoder( encoder( input ) ) === input
Notas
- El decodificador puede asumir que su entrada es decodificable
- Su respuesta sólo tiene que lidiar con números enteros que su lenguaje puede soportar de forma nativa sin necesidad de utilizar (
long
,bigInt
, etc.), ser razonable, si sólo idioma sostiene enteros hasta 1, tal vez reconsidere publicar una respuesta
Puntuación
Su puntaje es la suma de las longitudes en bytes del codificador y decodificador.
Si necesita importar un módulo, la importación puede contarse solo una vez, siempre que su codificador y decodificador puedan coexistir en el mismo archivo y reutilizarse (como funciones).
Las lagunas predeterminadas están prohibidas.
Este es el código de golf, por lo que gana el puntaje más corto para cada idioma.