Para fãs de nandgame: Por favor, experimente DPD para decimal em portas lógicas também!
fundo
O decimal densamente compactado (DPD) é uma maneira de armazenar com eficiência dígitos decimais em binário. Ele armazena três dígitos decimais (000 a 999) em 10 bits, o que é muito mais eficiente que o BCD ingênuo (que armazena um dígito em 4 bits).
Notações
- As letras minúsculas
a
parai
são os bits que são copiados para a representação decimal. 0
e1
são os bits exatos nos padrões de bits de entrada ou saída.x
bits são ignorados na conversão.
Tabela de conversão
A seguir, a tabela de conversão de 10 bits do DPD para três dígitos decimais. Cada dígito decimal é representado como binário de 4 bits (BCD). Ambos os lados são escritos da esquerda para a direita, do dígito mais significativo ao mínimo.
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)
Tarefa
Converta 10 bits do DPD em 3 dígitos decimais.
Casos de teste
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
O formato de entrada padrão é uma lista de 10 bits. Os bits devem seguir a ordem exata acima, ou o inverso. Você pode optar por usar uma sequência equivalente ou uma representação inteira. Ao contrário dos meus outros desafios, não é permitido reordenar ou usar estruturas aninhadas .
Para a entrada [1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
, os seguintes formatos são permitidos:
- Lista de bits:
[1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
- Corda:
"1100010100"
- Inteiro binário:
788
ou0b1100010100
- Inteiro decimal:
1100010100
- Invertida:
[0, 0, 1, 0, 1, 0, 0, 0, 1, 1]
e invertida em qualquer outro formato acima
Os seguintes formatos NÃO são permitidos:
- Reordenação arbitrária de bits:
[0, 0, 0, 0, 0, 1, 1, 1, 0, 1]
- Estruturas aninhadas:
[[1, 1, 0], [0, 0, 1], [0, 1, 0, 0]]
ou[0b110, 0b001, 0b0100]
Saída
O formato de saída padrão é uma lista de 3 dígitos decimais. Cada dígito deve ser representado como 0 a 9, um número inteiro ou um caractere. Como na entrada, você pode escolher uma representação de sequência ou número inteiro. Se você escolher representação inteira, os zeros à esquerda poderão ser omitidos.
Critério de pontuação e vitória
Aplicam-se as regras de código-golfe padrão . O programa ou função mais curto em bytes para cada idioma vence.