Qualche sfondo
Le aste di conteggio sono piccole barre (lunghe 3-14 cm) che sono state utilizzate da matematici di molte culture asiatiche per oltre 2000 anni per rappresentare qualsiasi numero intero o frazione. (In questo chqllenge ci concentreremo su numeri interi senza segno) C'era anche una versione scritta, chiamata numeri di barre.
Ecco come funziona:
(Se in qualsiasi momento ti confondi, vai a controllare la rappresentazione ASCII di ogni cifra e alcuni esempi che ho incluso in fondo)
I numeri di asta sono un vero sistema numerico posizionale con cifre per 1-9 e spazi vuoti per 0. Le cifre sono costituite da linee orizzontali e verticali; più righe, più alta è la cifra. Dopo aver superato le cinque, metti una linea orizzontale in cima per aggiungere 5 al numero di linee in basso. Una linea verticale è 1, due linee verticali 2, cinque linee verticali è 5, una linea verticale con una linea orizzontale in alto è 6, quattro linee verticali con una linea orizzontale in alto è 9 (la cifra più alta).
Una cifra verticale di 3 cifre:
|||
|||
|||
|||
|||
Per rendere più semplici i numeri delle aste di lettura, hanno usato una notazione diversa per ogni cifra alternata. La seconda notazione scambia il ruolo delle linee orizzontali e verticali. in modo che 3 sia rappresentato da tre linee orizzontali e 8 da tre linee orizzontali con una linea verticale in alto.
Una cifra orizzontale 8:
|
|
__|__
_____
_____
Sapere quale notazione usare è facile, come detto in precedenza, vengono usati alternativamente e Sun Tzu scrisse che "uno è verticale, dieci è orizzontale". Quindi la cifra più a destra è verticale e alterniamo da lì in poi.
La sfida
Queste aste sono state usate per rappresentare numeri e frazioni negative (come spiegato nell'articolo di Wikipedia su di loro . Ai fini di questa sfida ci concentreremo solo su numeri interi positivi. L'obiettivo è semplice:
Scrivi una funzione o un programma completo che accetta in qualunque modo un valore intero come input e stampa la rappresentazione numerica dell'asta di questo numero intero su STDOUT (puoi anche scrivere su un file se funziona meglio). Vince il codice più breve in byte.
Ogni cifra sarà rappresentata da 5x5 caratteri ASCII e separata da due colonne di 5 spazi. La rappresentazione esatta che utilizzerai per ogni cifra è la seguente:
space between two digits (two colums):
0 digit, both vertical and horizontal (five columns):
1 digit, vertical:
|
|
|
|
|
2 digit, vertical:
| |
| |
| |
| |
| |
3 digit, vertical:
|||
|||
|||
|||
|||
4 digit, vertical:
|| ||
|| ||
|| ||
|| ||
|| ||
5 digit, vertical:
|||||
|||||
|||||
|||||
|||||
6 digit, vertical:
_____
|
|
|
|
7 digit, vertical:
_____
| |
| |
| |
| |
8 digit, vertical:
_____
|||
|||
|||
|||
9 digit, vertical:
_____
|| ||
|| ||
|| ||
|| ||
1 digit, horizontal:
_____
2 digit, horizontal:
_____
_____
3 digit, horizontal:
_____
_____
_____
4 digit, horizontal:
_____
_____
_____
_____
5 digit, horizontal:
_____
_____
_____
_____
_____
6 digit, horizontal:
|
|
|
|
__|__
7 digit, horizontal:
|
|
|
__|__
_____
8 digit, horizontal:
|
|
__|__
_____
_____
9 digit, horizontal:
|
__|__
_____
_____
_____
Le cifre devono essere stampate una accanto all'altra. Gli spazi finali oltre il rettangolo di selezione dell'ultima cifra non sono consentiti. Sono richiesti spazi finali per completare il rettangolo di selezione delle ultime cifre. È necessario terminare l'output con una nuova riga finale finale. Anche gli spazi iniziali che non appartengono al rettangolo di selezione della prima cifra sono vietati.
Si applicano scappatoie standard.
Esempio di output
Le righe che iniziano con >devono essere interpretate come input.
>12
| |
| |
| |
| |
_____ | |
>8037
| _____
| | |
__|__ _____ | |
_____ _____ | |
_____ _____ | |
>950
_____ _____
|| || _____
|| || _____
|| || _____
|| || _____