Für Nandgame-Fans: Bitte probieren Sie DPD auch in Logikgattern mit Dezimalstellen aus !
Hintergrund
Dicht gepackte Dezimalstellen (DPD) sind eine Möglichkeit, Dezimalstellen in Binärform effizient zu speichern. Es speichert drei Dezimalstellen (000 bis 999) in 10 Bit, was viel effizienter ist als naives BCD (das eine Stelle in 4 Bit speichert).
Notizen
- Die Kleinbuchstaben
a
bisi
sind die Bits, die in die Dezimaldarstellung kopiert werden. 0
und1
sind die genauen Bits in den Eingabe- oder Ausgabebitmustern.x
Bits werden bei der Konvertierung ignoriert.
Umrechnungstabelle
Das Folgende ist die Umwandlungstabelle von 10 Bit DPD in drei Dezimalstellen. Jede Dezimalstelle wird als 4-Bit-Binärzahl (BCD) dargestellt. Beide Seiten werden von links nach rechts von der höchstwertigen bis zur niedrigsten Stelle geschrieben.
Bits => Decimal (Digit range)
a b c d e f 0 g h i => 0abc 0def 0ghi (0-7) (0-7) (0-7)
a b c d e f 1 0 0 i => 0abc 0def 100i (0–7) (0–7) (8–9)
a b c g h f 1 0 1 i => 0abc 100f 0ghi (0–7) (8–9) (0–7)
g h c d e f 1 1 0 i => 100c 0def 0ghi (8–9) (0–7) (0–7)
g h c 0 0 f 1 1 1 i => 100c 100f 0ghi (8–9) (8–9) (0–7)
d e c 0 1 f 1 1 1 i => 100c 0def 100i (8–9) (0–7) (8–9)
a b c 1 0 f 1 1 1 i => 0abc 100f 100i (0–7) (8–9) (8–9)
x x c 1 1 f 1 1 1 i => 100c 100f 100i (8–9) (8–9) (8–9)
Aufgabe
Konvertieren Sie 10 Bit DPD in 3 Dezimalstellen.
Testfälle
DPD Decimal
0000000101 005
0001100011 063
0001111001 079
0000011010 090
0001011110 098
1010111010 592
0011001101 941
1100111111 879
1110001110 986
0011111111 999
1111111111 999 * Output is same regardless of the `x` bits
Eingang
Das Standardeingabeformat ist eine Liste mit 10 Bits. Die Bits sollten der genauen Reihenfolge oben oder der umgekehrten Reihenfolge folgen. Sie können stattdessen eine äquivalente Zeichenfolge oder eine Ganzzahldarstellung verwenden. Im Gegensatz zu meinen anderen Herausforderungen ist es nicht erlaubt, verschachtelte Strukturen neu anzuordnen oder zu verwenden .
Für die Eingabe [1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
sind folgende Formate zulässig:
- Liste der Bits:
[1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
- Zeichenfolge:
"1100010100"
- Binäre Ganzzahl:
788
oder0b1100010100
- Dezimalzahl:
1100010100
- Umgekehrt:
[0, 0, 1, 0, 1, 0, 0, 0, 1, 1]
und in allen anderen oben genannten Formaten umgekehrt
Die folgenden Formate sind NICHT erlaubt:
- Beliebige Neuordnung von Bits:
[0, 0, 0, 0, 0, 1, 1, 1, 0, 1]
- Verschachtelte Strukturen:
[[1, 1, 0], [0, 0, 1], [0, 1, 0, 0]]
oder[0b110, 0b001, 0b0100]
Ausgabe
Das Standardausgabeformat ist eine Liste mit 3 Dezimalstellen. Jede Ziffer sollte als 0 bis 9 dargestellt werden, entweder als Ganzzahl oder als Zeichen. Wie bei der Eingabe können Sie eine Zeichenfolge oder eine Ganzzahldarstellung auswählen. Wenn Sie die Ganzzahldarstellung wählen, können führende Nullen weggelassen werden.
Bewertungs & Gewinnkriterium
Es gelten die Standardregeln für Code-Golf . Das kürzeste Programm oder die kürzeste Funktion in Bytes für jede Sprache gewinnt.