Для любителей 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, либо целое число, либо символ. Как и при вводе, вы можете выбрать строковое или целочисленное представление. Если вы выбираете целочисленное представление, начальные нули могут быть опущены.
Критерий оценки и выигрыша
Применяются стандартные правила игры в гольф . Самая короткая программа или функция в байтах для каждого языка выигрывает.