背景
密集包装的十进制(DPD)是一种以二进制有效存储十进制数字的方法。它以10位存储三位十进制数字(000至999),这比朴素的BCD(以4位存储一位数字)的效率要高得多。
记号
- 小写字母
a
toi
是复制到十进制表示形式的位。 0
和1
是输入或输出位模式中的确切位。x
转换中将忽略这些位。
换算表
以下是从10位DPD到三位十进制数字的转换表。每个十进制数字都表示为4位二进制(BCD)。双方都从最高位到最低位从左到右书写。
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)
任务
将10位DPD转换为3位十进制数字。
测试用例
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
输入项
默认输入格式是10位的列表。这些位应遵循上面的确切顺序,或相反。您可以选择使用等效的字符串或整数表示。与其他挑战不同,不允许重新排序或使用嵌套结构。
对于input [1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
,允许以下格式:
- 位列表:
[1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
- 串:
"1100010100"
- 二进制整数:
788
或0b1100010100
- 十进制整数:
1100010100
- 颠倒:
[0, 0, 1, 0, 1, 0, 0, 0, 1, 1]
并以上述任何其他格式颠倒
不允许以下格式:
- 任意重新排序位:
[0, 0, 0, 0, 0, 1, 1, 1, 0, 1]
- 嵌套结构:
[[1, 1, 0], [0, 0, 1], [0, 1, 0, 0]]
或[0b110, 0b001, 0b0100]
输出量
默认输出格式是3个十进制数字的列表。每个数字应表示为0到9,可以是整数或字符。在输入中,您可以选择字符串或整数表示。如果选择整数表示,则可以省略前导零。
得分和获胜标准
适用标准代码高尔夫球规则。每种语言的最短程序或函数(以字节为单位)获胜。