Для шанувальників nandgame: Будь ласка, спробуйте також DPD для десяткового розміру в логічних воротах !
Фон
Щільно упакований десятковий (DPD) - це спосіб ефективно зберігати десяткові цифри у двійкових. Він зберігає три десяткових цифри (000 до 999) в 10 біт, що набагато ефективніше, ніж наївний BCD (який зберігає одну цифру в 4 біти).
Позначення
- Малі літери
a
вi
ті біти, які копіюються в десятковому поданні. 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 біт. Біти повинні дотримуватися точного порядку, зазначеного вище, або реверсу його. Ви можете замість цього використати еквівалентне рядкове або ціле представлення. На відміну від інших моїх проблем, переупорядкування та використання вкладених структур не дозволяється .
Для введення [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, або ціле число, або символ. Як і при введенні, ви можете обрати рядкове або ціле подання. Якщо ви вибрали ціле представлення, провідні нулі можна опустити.
Критерій оцінки та виграшу
Діють стандартні правила гольф-коду . Виграє найкоротша програма або функція в байтах для кожної мови.