Codes à barres de 4 états
De nombreux services postaux (Royal Mail UK, Postes Canada, US Mail, etc.) utilisent un code-barres à 4 états pour coder les informations relatives à leur courrier. Rendu en ASCII, cela peut ressembler à ceci:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Un code à barres à 4 états est une rangée de barres. Chaque barre peut être étendue vers le haut, vers le bas ou les deux, offrant ainsi 4 possibilités. Cela signifie que chaque barre représente essentiellement un chiffre de base 4:
| | Bar: | | | | | | Chiffre: 0 1 2 3
Le problème de cette symbologie est qu’il s’agit d’un code à barres différent, valide et inversé: il change radicalement la signification si l’orientation est incorrecte. Par conséquent, une séquence de démarrage et une séquence d' arrêt sont normalement implémentées afin que l'analyseur puisse calculer dans quel sens il est censé être lu.
Pour les besoins de ce défi, nous utiliserons la séquence de démarrage / d'arrêt spécifiée par Australia Post: chaque code à barres commence et se termine par une 1 0
séquence.
Le défi
Votre tâche consiste à écrire un programme ou une fonction qui, à partir d’un entier positif N
, le convertit en code à barres ASCII à 4 états, chaque barre (à l’exception des séquences de démarrage / arrêt) représentant un chiffre dans la représentation en base 4 de N
.
Exemple:
Compte tenu de l'entier 19623
, il faudrait d' abord le convertir à sa représentation de base 4, 10302213
.
Nous pourrions ensuite mapper chaque chiffre sur la barre correspondante:
1 0 3 0 2 2 1 3 | | | | | | | | | | | | | | | |
Enfin, nous ajouterions les séquences start / stop:
Début Fin: 1 0 1 0 | | | | | | | | | | | | | | | | | | | | | |
Le code à barres résultant doit être la sortie du programme.
Règles:
- L'entrée sera un entier positif, compris dans la plage de la taille de l'entier standard de votre langue.
- Le résultat:
- Peut être soit une liste de lignes, soit une chaîne contenant des nouvelles lignes.
- Peut contenir des sauts de ligne ou des espaces, tant que la forme reste intacte.
- Doit montrer le code à barres avec le format ci-dessus - il doit utiliser le caractère de pipe (
|
) et le caractère d'espacement () pour dessiner des barres, et il devrait y avoir un espace entre chaque barre verticale.
- C'est du code-golf , donc le programme le plus court (en octets) gagne!
Cas de test
4095:
| | | | | | | | | | | | | | | | | | | | | | | |
4096:
| | | | | | | | | | | | | |
7313145:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |