Para los fanáticos de nandgame: ¡prueba DPD a decimal en puertas lógicas también!
Fondo
El decimal denso (DPD) es una forma de almacenar eficientemente dígitos decimales en binario. Almacena tres dígitos decimales (000 a 999) en 10 bits, que es mucho más eficiente que el BCD ingenuo (que almacena un dígito en 4 bits).
Anotaciones
- Las letras minúsculas
a
ai
son los bits que se copian en la representación decimal. 0
y1
son los bits exactos en los patrones de bits de entrada o salida.x
los bits se ignoran en la conversión.
Tabla de conversión
La siguiente es la tabla de conversión de 10 bits de DPD a tres dígitos decimales. Cada dígito decimal se representa como binario de 4 bits (BCD). Ambas partes se escriben de izquierda a derecha desde el dígito más significativo al menos.
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)
Tarea
Convierta 10 bits de DPD a 3 dígitos de decimal.
Casos de prueba
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
Entrada
El formato de entrada predeterminado es una lista de 10 bits. Los bits deben seguir el orden exacto anterior o al revés. Puede optar por utilizar una cadena equivalente o una representación entera en su lugar. A diferencia de mis otros desafíos, reordenar o usar estructuras anidadas no está permitido .
Para la entrada [1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
, se permiten los siguientes formatos:
- Lista de bits:
[1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
- Cuerda:
"1100010100"
- Entero binario:
788
o0b1100010100
- Entero decimal:
1100010100
- Invertido:
[0, 0, 1, 0, 1, 0, 0, 0, 1, 1]
e invertido en cualquier otro formato anterior
Los siguientes formatos NO están permitidos:
- Reordenamiento arbitrario de bits:
[0, 0, 0, 0, 0, 1, 1, 1, 0, 1]
- Estructuras anidadas:
[[1, 1, 0], [0, 0, 1], [0, 1, 0, 0]]
o[0b110, 0b001, 0b0100]
Salida
El formato de salida predeterminado es una lista de 3 dígitos decimales. Cada dígito debe representarse como 0 a 9, ya sea un entero o un carácter. Como en la entrada, puede elegir la representación de cadena o de enteros. Si elige la representación de enteros, se pueden omitir los ceros a la izquierda.
Criterio de puntuación y ganador
Aplican reglas estándar de código de golf . El programa o función más corto en bytes para cada idioma gana.