Штрих-коды 4 штатов
Многие почтовые службы (Royal Mail UK, Canada Post, US Mail и т. Д.) Используют штрих-код из 4 штатов для кодирования информации о своей почте. Визуализированный в ASCII, он может выглядеть примерно так:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Штрих-код с 4 состояниями - ряд строк. Каждый стержень может быть расширен вверх, вниз или оба, что позволяет 4 варианта. Это означает, что каждый столбец представляет собой основную цифру 4:
| | Бар: | | | | | | Цифра: 0 1 2 3
Проблема с этой символикой состоит в том, что каждый штрих-код является действительным, другим штрих-кодом вверх ногами: радикально меняя значение, если ориентация неверна. Следовательно, последовательность запуска и остановки обычно реализуется, чтобы сканер мог рассчитать, каким образом он должен быть прочитан.
Для этой задачи мы будем использовать последовательность запуска / остановки, указанную Австралийской почтой: каждый штрих-код начинается и заканчивается 1 0
последовательностью.
Соревнование
Ваша задача - написать программу или функцию, которая при наличии положительного целого числа N
преобразует его в штрих-код ASCII с 4 состояниями, где каждая полоса (кроме последовательностей начала / остановки) представляет цифру в представлении base-4 для N
.
Пример:
Учитывая целое число 19623
, мы бы сначала преобразовать его в представление базовых 4 10302213
.
Затем мы сопоставили бы каждую цифру с соответствующей полосой:
1 0 3 0 2 2 1 3 | | | | | | | | | | | | | | | |
Наконец, мы бы добавили последовательности start / stop:
Начать конец: 1 0 1 0 | | | | | | | | | | | | | | | | | | | | | |
Полученный штрих-код должен быть выходом программы.
Правила:
- Входные данные будут положительным целым числом в диапазоне стандартного целочисленного размера вашего языка.
- Выход:
- Может быть либо списком строк, либо строкой, содержащей новые строки.
- Может содержать начальные или конечные символы новой строки / пробелы, если форма остается неизменной.
- Должен отображать штрих-код в указанном выше формате - он должен использовать символ трубы (
|
) и символ пробела () при рисовании полос, и между каждой вертикальной полосой должен быть один пробел.
- Это код-гольф , поэтому выигрывает самая короткая (в байтах) программа!
Тестовые случаи
4095:
| | | | | | | | | | | | | | | | | | | | | | | |
4096:
| | | | | | | | | | | | | |
7313145:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |