Untuk penggemar nandgame: Silakan coba DPD ke desimal di gerbang logika juga!
Latar Belakang
Desimal padat dikemas (DPD) adalah cara untuk secara efisien menyimpan angka desimal dalam biner. Ini menyimpan tiga angka desimal (000 hingga 999) dalam 10 bit, yang jauh lebih efisien daripada BCD naif (yang menyimpan satu digit dalam 4 bit).
Notasi
- Huruf kecil
a
untuki
bit yang disalin ke representasi desimal. 0
dan1
bit-bit yang tepat dalam pola bit input atau output.x
bit diabaikan dalam konversi.
Tabel konversi
Berikut ini adalah tabel konversi dari 10 bit DPD ke tiga angka desimal. Setiap digit desimal direpresentasikan sebagai biner 4-bit (BCD). Kedua sisi ditulis dari kiri ke kanan dari digit paling signifikan ke yang terkecil.
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)
Tugas
Ubah 10 bit DPD menjadi 3 digit desimal.
Uji kasus
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
Memasukkan
Format input default adalah daftar 10 bit. Bit harus mengikuti urutan tepat di atas, atau kebalikannya. Anda dapat memilih untuk menggunakan representasi string atau integer yang setara. Tidak seperti tantangan saya yang lain, pemesanan ulang atau menggunakan struktur bersarang tidak diperbolehkan .
Untuk input [1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
, format berikut diizinkan:
- Daftar bit:
[1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
- Tali:
"1100010100"
- Binary integer:
788
atau0b1100010100
- Bilangan bulat desimal:
1100010100
- Terbalik:
[0, 0, 1, 0, 1, 0, 0, 0, 1, 1]
dan terbalik dalam format lain di atas
Format berikut ini TIDAK diizinkan:
- Penataan ulang bit secara sewenang-wenang:
[0, 0, 0, 0, 0, 1, 1, 1, 0, 1]
- Struktur bersarang:
[[1, 1, 0], [0, 0, 1], [0, 1, 0, 0]]
atau[0b110, 0b001, 0b0100]
Keluaran
Format output default adalah daftar 3 digit desimal. Setiap digit harus direpresentasikan sebagai 0 hingga 9, baik bilangan bulat atau karakter. Seperti pada input, Anda dapat memilih representasi string atau integer. Jika Anda memilih representasi integer, angka nol di depan dapat dihilangkan.
Kriteria penilaian & menang
Aturan standar kode-golf berlaku. Program atau fungsi terpendek dalam byte untuk setiap bahasa menang.