Algunos antecedentes
Las barras de conteo son pequeñas barras (3-14 cm de largo) que fueron utilizadas por matemáticos de muchas culturas asiáticas durante más de 2000 años para representar cualquier número entero o fracción. (En este desafío nos centraremos en enteros sin signo). También había una versión escrita, llamada números de barra.
Así es como funciona:
(Si en algún momento te confundes, revisa la representación ascii de cada dígito y algunos ejemplos que he incluido en la parte inferior)
Los números de barra son un verdadero sistema de numeración posicional con dígitos para 1-9 y en blanco para 0. Los dígitos consisten en líneas horizontales y verticales; Cuantas más líneas, mayor será el dígito. Una vez que pasas las cinco, pones una línea horizontal en la parte superior para agregar 5 al número de líneas a continuación. Una línea vertical es 1, dos líneas verticales 2, cinco líneas verticales son 5, una línea vertical con una línea horizontal en la parte superior es 6, cuatro líneas verticales con una línea horizontal en la parte superior son 9 (el dígito más alto).
Un vertical de 3 dígitos:
|||
|||
|||
|||
|||
Sin embargo, para facilitar la lectura de los números de barra, utilizaron notación diferente para cada dígito alterno. La segunda notación intercambia el papel de las líneas horizontales y verticales. de modo que 3 está representado por tres líneas horizontales y 8 por tres líneas horizontales con una línea vertical en la parte superior.
Un dígito horizontal de 8:
|
|
__|__
_____
_____
Saber qué notación usar es fácil, como se dijo anteriormente, se usan alternativamente y Sun Tzu escribió que "uno es vertical, diez es horizontal". Entonces, el dígito más a la derecha es vertical y alternamos a partir de ahí.
El reto
Estas barras se usaron para representar números y fracciones negativos (como se explica en el artículo de Wikipedia sobre ellos . Sin embargo, para este desafío solo nos enfocaremos en enteros positivos. El objetivo es simple:
Escriba una función o un programa completo que tome un valor entero como entrada de cualquier manera e imprima la representación numérica de la barra de este entero en STDOUT (también puede escribir en un archivo si eso funciona mejor). El código más corto en bytes gana.
Cada dígito estará representado por 5x5 caracteres ascii y separados por dos columnas de 5 espacios. La representación exacta que usará para cada dígito es la siguiente:
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:
|
__|__
_____
_____
_____
Los dígitos deben imprimirse uno al lado del otro. Los espacios finales más allá del cuadro delimitador del último dígito no están permitidos. Se requieren espacios finales para completar el cuadro delimitador de los últimos dígitos. Debe finalizar la salida con una nueva línea final. Los espacios iniciales que no pertenecen al cuadro delimitador del primer dígito también están prohibidos.
Salida de ejemplo
Las líneas que comienzan con >
deben interpretarse como entrada.
>12
| |
| |
| |
| |
_____ | |
>8037
| _____
| | |
__|__ _____ | |
_____ _____ | |
_____ _____ | |
>950
_____ _____
|| || _____
|| || _____
|| || _____
|| || _____
fuente
Respuestas:
Python 2 - 216
Mi primer disparo, podría ser algo para sacar, pero me duele el cerebro, así que es lo suficientemente bueno por ahora
fuente
JavaScript (ES6) 223
Función con parámetro numérico, salida a la consola. NB Si el parámetro de entrada podría ser una cadena, el código sería 5 caracteres más corto y sin el límite de 17 dígitos significativos de números JS.
Prueba
Prueba en la consola de Firefox.
F(12)
Salida
F(8037)
Salida
F(950)
Salida
Sin golf
fuente
PowerShell , 229 bytes
Pruébalo en línea!
Donde esta cadena presenta dígitos:
varillas verticales:
varillas horizontales:
Script desenrollado:
fuente