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.
Antworten:
05AB1E , 13 Bytes
Encoder, 8 Bytes
Probieren Sie es online!
Erläuterung
Decoder, 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gelee , 17 Bytes
Encoder (10 Bytes):
Probieren Sie es online!
Decoder (7 Bytes):
Probieren Sie es online!
Wie?
Encoder:
Decoder:
quelle
JavaScript (ES6), 130 Byte
I / O: Array von Bits ↔ Integer
Encoder, 71 Bytes
Probieren Sie es online!
Decoder, 59 Bytes
Probieren Sie es online!
quelle
Java 10, 209 Bytes
Encoder, 124 Bytes
Probieren Sie es online aus.
Erläuterung:
Decoder, 85 Bytes
Probieren Sie es online aus.
Erläuterung:
quelle
long
zuint
.Schale , 18 Bytes
Encoder, 11 Bytes
Probieren Sie es online!
Decoder, 7 Bytes
Probieren Sie es online!
Wie sie arbeiten
Encoder:
Decoder:
quelle
Python 2 ,
234193174 BytesEncoder,
11610197 Bytes:Verwendet den Satz von Wilson .
Probieren Sie es online!
Decoder,
1189277 Bytes:Probieren Sie es online!
quelle
J , 34 Bytes
Stark inspiriert von Jonathan Allans Jelly-Lösung!
Encoder: 23 Bytes
Probieren Sie es online!
Ich mag diese vielen Cap-Gabeln nicht
[:
- es sollte golffähig sein.Decoder: 11 Bytes
Probieren Sie es online!
quelle
Gelee , 15 Bytes
Encoder, 9 Bytes
Probieren Sie es online!
Decoder, 6 Bytes
Probieren Sie es online!
quelle
C (GCC) ,
180184 Bytes102 Bytes - Encoder
Probieren Sie es online!
82 Bytes - Decoder
Probieren Sie es online!
quelle
Gol> <> , 29 + 39 = 68 Bytes
Encoder, 29 Bytes
Probieren Sie es online!
Decoder, 39 Bytes
Probieren Sie es online!
Wie diese funktionieren
Es wäre besser, wenn ich in der nächsten Runde Golf spielen könnte ...
quelle