Nandgame hayranları için: Lütfen DPD'yi mantık kapılarında ondalık saymaya çalışın !
Arka fon
Yoğun paketlenmiş ondalık (DPD) , ondalık basamakları ikili biçimde etkin biçimde saklamanın bir yoludur. 10 bitte üç ondalık basamağı (000 ila 999) depolar; bu, saf BCD'den (4 bitte bir basamak depolayan) çok daha verimlidir.
Gösterimler
- Küçük harfler
a
içini
ondalık gösterimi kopyalanır parçalarıdır. 0
ve1
giriş veya çıkış bit desenlerindeki kesin bitlerdir.x
bitler dönüşümde göz ardı edilir.
Dönüşüm tablosu
Aşağıdaki 10 DPD bitinden üç ondalık basamağa kadar dönüşüm tablosudur. Her ondalık basamak 4 bit ikili (BCD) olarak gösterilir. Her iki taraf da en belirgin basamağından en küçüğüne doğru soldan sağa yazılır.
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)
Görev
10 DPD bit, 3 ondalık basamağa dönüştürün.
Test durumları
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
Giriş
Varsayılan giriş formatı 10 bitlik bir listedir. Bitler yukarıdaki tam sırayı veya tam tersini izlemelidir. Bunun yerine eşdeğer bir dize veya tamsayı gösterimi kullanmayı seçebilirsiniz. Diğer zorluklarımın aksine iç içe yapıların yeniden sıralanması veya kullanılması yasaktır. .
Giriş [1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
için aşağıdaki formatlara izin verilir:
- Bitlerin listesi:
[1, 1, 0, 0, 0, 1, 0, 1, 0, 0]
- Dize:
"1100010100"
- İkili tamsayı:
788
veya0b1100010100
- Ondalık tam sayı:
1100010100
- Tersine
[0, 0, 1, 0, 1, 0, 0, 0, 1, 1]
çevrildi : ve yukarıdaki diğer formatlarda ters
Aşağıdaki formatlara izin verilmemektedir:
- Bitlerin keyfi yeniden sıralanması:
[0, 0, 0, 0, 0, 1, 1, 1, 0, 1]
- İç içe yapılar:
[[1, 1, 0], [0, 0, 1], [0, 1, 0, 0]]
veya[0b110, 0b001, 0b0100]
Çıktı
Varsayılan çıkış formatı 3 ondalık basamağın listesidir. Her hane, bir tam sayı veya bir karakter olan 0 ila 9 olarak gösterilmelidir. Girişte olduğu gibi dize veya tamsayı gösterimi seçebilirsiniz. Tamsayı gösterimi seçerseniz, baştaki sıfırlar ihmal edilebilir.
Puanlama ve kazanan kriter
Standart kod-golf kuralları geçerlidir. Bayt cinsinden en kısa program veya işlev her dil için kazanır.