Codici a barre a 4 stati
Molti servizi postali (Royal Mail UK, Canada Post, US Mail, ecc.) Utilizzano un codice a barre a 4 stati per codificare le informazioni sulla loro posta. Resi in ASCII, potrebbe assomigliare a questo:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Un codice a barre a 4 stati è una fila di barre. Ogni barra può essere estesa verso l'alto, verso il basso o entrambe, consentendo 4 possibilità. Ciò significa che ogni barra rappresenta essenzialmente una cifra di 4 cifre:
| | Bar: | | | | | | Cifra: 0 1 2 3
Il problema con questa simbologia è che ogni codice a barre è un codice a barre valido diverso, capovolto: cambia drasticamente il significato se l'orientamento è errato. Pertanto, una sequenza di avvio e arresto viene normalmente implementata in modo che lo scanner possa calcolare il modo in cui dovrebbe essere letto.
Ai fini di questa sfida, utilizzeremo la sequenza di avvio / arresto specificata da Australia Post: ogni codice a barre inizia e termina con una 1 0
sequenza.
La sfida
Il tuo compito è quello di scrivere un programma o una funzione che, dato un numero intero positivo N
, lo converte in un codice a barre ASCII a 4 stati, dove ogni barra (ad eccezione delle sequenze di avvio / arresto) rappresenta una cifra nella rappresentazione base-4 di N
.
Esempio:
Dato il numero intero 19623
, avremmo prima convertirlo sua rappresentazione di base 4, 10302213
.
Vorremmo quindi mappare ogni cifra sulla barra corrispondente:
1 0 3 0 2 2 1 3 | | | | | | | | | | | | | | | |
Infine, aggiungeremmo le sequenze di avvio / arresto:
Inizio: Fine: 1 0 1 0 | | | | | | | | | | | | | | | | | | | | | |
Il codice a barre risultante dovrebbe essere l'output del programma.
Regole:
- L'input sarà un numero intero positivo, all'interno dell'intervallo della dimensione intera standard della tua lingua.
- L'output:
- Può essere un elenco di righe o una stringa contenente nuove righe.
- Può contenere righe / linee iniziali o finali, purché la forma rimanga intatta.
- Dovrebbe mostrare il codice a barre con il formato sopra - deve usare il carattere pipe (
|
) e lo spazio () quando si disegnano le barre, e dovrebbe esserci 1 spazio tra ciascuna barra verticale.
- Questo è code-golf , quindi vince il programma più breve (in byte)!
Casi test
4095:
| | | | | | | | | | | | | | | | | | | | | | | |
4096:
| | | | | | | | | | | | | |
7313145:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |