Come funziona la codifica
Dato un elenco di bit:
- Tieni un numero primo (a partire da
2
) - Avere un elenco
- Per ogni bit nell'input
- Se è uguale al bit precedente, aggiungi il numero primo che stai tenendo alla lista
- Se è diverso, tieni il primo primo e aggiungilo all'elenco
- Restituisce il prodotto di tutti i numeri nell'elenco
- Per il primo bit, supponiamo che fosse il bit precedente
0
Nota: questi passaggi sono solo a scopo illustrativo, non è necessario seguirli.
Esempi
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
Alcuni altri esempi:
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
Sfida
Scrivi un codificatore e un decodificatore per questo metodo di codifica.
(Il decodificatore inverte il processo dell'encoder).
Input Output
L'encoder può accettare input in qualsiasi formato ragionevole
L'encoder deve generare un numero intero o una stringa
Il decodificatore deve accettare l'input nello stesso formato trasmesso dall'encoder
Il decodificatore deve produrre lo stesso formato utilizzato dall'encoder come input
In altre parole decoder( encoder( input ) ) === input
Appunti
- Il decodificatore può presumere che il suo ingresso sia decodificabile
- La tua risposta ha solo a che fare con i numeri interi che il linguaggio può nativamente supportare senza usare (
long
,bigInt
, ecc), essere ragionevole, se il linguaggio supporta solo interi fino a 1, forse riconsiderare la pubblicazione di una risposta
punteggio
Il tuo punteggio è la somma delle lunghezze in byte dell'encoder e del decoder.
Se è necessario importare un modulo, l'importazione può essere conteggiata una sola volta, a condizione che l'encoder e il decoder possano coesistere nello stesso file ed essere riutilizzati (come le funzioni).
Scappatoie predefiniteSono vietate le .
Questo è code-golf, quindi vince il punteggio più breve per ogni lingua.