Per i fan di nandgame: prova DPD a decimale anche nelle porte logiche !
sfondo
Il decimale densamente compresso (DPD) è un modo per memorizzare in modo efficiente le cifre decimali in binario. Memorizza tre cifre decimali (da 000 a 999) in 10 bit, il che è molto più efficiente del BCD ingenuo (che memorizza una cifra in 4 bit).
notazioni
- Le lettere minuscole
a
ai
sono i bit che vengono copiati nella rappresentazione decimale. 0
e1
sono i bit esatti nei modelli di bit di input o output.x
i bit vengono ignorati nella conversione.
Tabella di conversione
Di seguito è riportata la tabella di conversione da 10 bit di DPD a tre cifre decimali. Ogni cifra decimale è rappresentata come binario a 4 bit (BCD). Entrambe le parti sono scritte da sinistra a destra dalla cifra più significativa alla minima.
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)
Compito
Converti 10 bit di DPD in 3 cifre decimali.
Casi test
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
Ingresso
Il formato di input predefinito è un elenco di 10 bit. I bit devono seguire l'ordine esatto sopra, o viceversa. È possibile scegliere invece di utilizzare una stringa equivalente o una rappresentazione intera. A differenza delle altre mie sfide, non è consentito riordinare o utilizzare strutture nidificate .
Per l'input [1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
, sono consentiti i seguenti formati:
- Elenco di bit:
[1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
- Stringa:
"1100010100"
- Numero intero binario:
788
o0b1100010100
- Numero intero decimale:
1100010100
- Invertito:
[0, 0, 1, 0, 1, 0, 0, 0, 1, 1]
e invertito in qualsiasi altro formato sopra
I seguenti formati NON sono consentiti:
- Riordinamento arbitrario dei bit:
[0, 0, 0, 0, 0, 1, 1, 1, 0, 1]
- Strutture nidificate:
[[1, 1, 0], [0, 0, 1], [0, 1, 0, 0]]
o[0b110, 0b001, 0b0100]
Produzione
Il formato di output predefinito è un elenco di 3 cifre decimali. Ogni cifra deve essere rappresentata da 0 a 9, sia un numero intero che un carattere. Come in input, puoi scegliere la rappresentazione in stringa o intera. Se si sceglie la rappresentazione intera, è possibile omettere gli zeri iniziali.
Punteggio e criterio di vincita
Si applicano le regole standard del code-golf . Vince il programma o la funzione più breve in byte per ogni lingua.