Wie funktioniert die Kodierung?
Eine Liste von Bits gegeben:
- Halte eine Primzahl (beginnend mit
2
) - Hab eine Liste
- Für jedes Bit in der Eingabe
- Wenn es dasselbe wie das vorherige Bit ist, fügen Sie der Liste die Primzahl hinzu, die Sie halten
- Wenn es anders ist, halte die nächste Primzahl und füge sie der Liste hinzu
- Geben Sie das Produkt aller Nummern in Ihrer Liste zurück
- Für das erste Bit wird angenommen, dass das vorherige Bit war
0
Hinweis: Diese Schritte dienen nur zu Illustrationszwecken. Sie müssen sie nicht befolgen.
Beispiele
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
Einige weitere Beispiele:
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
Herausforderung
Schreiben Sie einen Codierer und einen Decodierer für diese Codierungsmethode.
(Der Decoder kehrt den Vorgang des Encoders um).
Input-Output
Der Encoder kann Eingaben in jedem vernünftigen Format vornehmen
Der Encoder muss entweder eine Ganzzahl oder einen String ausgeben
Der Decoder muss Eingaben in demselben Format vornehmen, das der Encoder ausgibt
Der Decoder muss dasselbe Format ausgeben, das der Encoder als Eingabe verwendet
Mit anderen Worten decoder( encoder( input ) ) === input
Anmerkungen
- Der Decoder kann annehmen, dass sein Eingang decodierbar ist
- Ihre Antwort muss sich nur auf Ganzzahlen beziehen , die Ihre Sprache von Haus aus unterstützen kann, ohne (
long
,bigInt
usw.) zu verwenden. Wenn Ihre Sprache nur Ints bis 1 unterstützt, überdenken Sie möglicherweise das Posten einer Antwort
Wertung
Ihre Punktzahl ist die Summe der Längen in Bytes des Codierers und Decodierers.
Wenn Sie ein Modul importieren müssen, kann der Import nur einmal gezählt werden, vorausgesetzt, Ihr Encoder und Decoder können in derselben Datei koexistieren und wiederverwendet werden (ähnliche Funktionen).
Standardlücken sind verboten.
Dies ist Codegolf, daher gewinnt die kürzeste Punktzahl für jede Sprache.