バックグラウンド
密パック10進数(DPD)は、10進数を2進数で効率的に格納する方法です。10ビットで3桁の10進数(000〜999)を保存します。これは、ナイーブBCD(4ビットで1桁を保存)よりもはるかに効率的です。
表記法
a
to の小文字i
は、10進表現にコピーされるビットです。0
および1
は、入力または出力ビットパターンの正確なビットです。x
変換ではビットは無視されます。
変換表
以下は、DPDの10ビットから3桁の10進数への変換表です。各10進数は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桁の10進数に変換します。
テストケース
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ビットのリストです。ビットは上記の正確な順序、またはその逆に従う必要があります。代わりに、同等の文字列または整数表現を使用することを選択できます。私の他の課題とは異なり、入れ子構造の並べ替えや使用は許可されていません。
入力[1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
には、次の形式が許可されます。
- ビットのリスト:
[1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
- 文字列:
"1100010100"
- 2進整数:
788
または0b1100010100
- 10進整数:
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桁の10進数のリストです。各数字は、0〜9の整数または文字で表される必要があります。入力と同様に、文字列または整数表現を選択できます。整数表現を選択した場合、先行ゼロは省略できます。
採点基準
標準のコードゴルフ規則が適用されます。各言語の最短プログラムまたはバイト単位の機能が優先されます。