Códigos de barras de 4 estados
Muchos servicios postales (Royal Mail UK, Canada Post, US Mail, etc.) utilizan un código de barras de 4 estados para codificar información sobre su correo. Representado en ASCII, puede verse más o menos así:
El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El |
Un código de barras de 4 estados es una fila de barras. Cada barra se puede extender hacia arriba, hacia abajo o ambas, permitiendo 4 posibilidades. Esto significa que cada barra representa esencialmente una base de 4 dígitos:
El | El | Bar: | El | El | El | El | El | Dígito: 0 1 2 3
El problema con esta simbología es que cada código de barras es un código de barras válido y diferente al revés: cambiando drásticamente el significado si la orientación es incorrecta. Por lo tanto, normalmente se implementa una secuencia de inicio y parada para que el escáner pueda calcular de qué manera se supone que debe leerse.
Para el propósito de este desafío, utilizaremos la secuencia de inicio / parada especificada por Australia Post: cada código de barras comienza y termina con una 1 0
secuencia.
El reto
Su tarea es escribir un programa o función que, dado un entero positivo N
, lo convierta en un código de barras ASCII de 4 estados, donde cada barra (excepto las secuencias de inicio / parada) representa un dígito en la representación de base 4 N
.
Ejemplo:
Dado el número entero 19623
, tendríamos primero convertirlo a su representación de base 4, 10302213
.
Luego mapearíamos cada dígito a la barra correspondiente:
1 0 3 0 2 2 1 3 El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El |
Finalmente, agregaríamos las secuencias de inicio / parada:
Inicio fin: 1 0 1 0 El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El |
El código de barras resultante debe ser la salida del programa.
Reglas:
- La entrada será un número entero positivo, dentro del rango del tamaño entero estándar de su idioma.
- La salida:
- Puede ser una lista de líneas o una cadena que contiene nuevas líneas.
- Puede contener líneas / espacios iniciales o finales, siempre que la forma permanezca intacta.
- Debe mostrar el código de barras con el formato anterior: debe usar el carácter de tubería (
|
) y el carácter de espacio () al dibujar barras, y debe haber 1 espacio entre cada barra vertical.
- Este es el código de golf , por lo que gana el programa más corto (en bytes).
Casos de prueba
4095:
El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El |
4096:
El | El | El | El | El | El | El | El | El | El | El | El | El | El |
7313145:
El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El |