Desafio
Dado um número natural, produza-o na forma ASCII do sistema de números da Agrippa.
Descrição
Eu gosto de alfabetos ímpares e sistemas de números. Meu sistema numérico favorito é o de Heinrich Cornelius Agrippa . Ele fornece uma maneira sucinta de escrever números no intervalo [0,9999]
, onde dígitos únicos são escritos da seguinte maneira:
Números maiores que 10^4
a combinação de dígitos únicos, mas girados / espelhados horizontalmente em uma única barra central, da seguinte maneira:
[0° mirrored, 10's ] | [0°, 1's ]
[180°, 1000's] | [180° mirrored, 100's]
Aqui estão alguns exemplos:
Os equivalentes ASCII são:
Ones:
0 1 2 3 4 5 6 7 8 9
| |- |_ |\ |/ |~ || |^ |v |]
| | | | | | | | | |
Tens:
0 1 2 3 4 5 6 7 8 9
| -| _| /| \| ~| || ^| v| [|
| | | | | | | | | |
Hundreds:
0 1 2 3 4 5 6 7 8 9
| | | | | | | | | |
| |_ |- |/ |\ |~ || |v |^ |]
Thousands:
0 1 2 3 4 5 6 7 8 9
| | | | | | | | | |
| _| -| \| /| ~| || v| ^| [|
1510: 1511: 1471: 1486: 3421:
-| -|- ^|- v|| _|-
_|~ _|~ _|\ -|\ \|\
Números maiores que 9999
são divididos em seções de 4 dígitos (com zeros à esquerda adicionados para obter um múltiplo de quatro) e cada um é convertido. Por exemplo:
314159: (0031 4159)
/|- ~|]
| /|_
Regras
- Sua resposta pode ser uma função ou programa completo
- A entrada é um número inteiro positivo
- As entradas devem suportar entradas sobre
10^8
- Cada seção de quatro dígitos ocupa exatamente seis caracteres
- Seções de quatro são separadas por um único espaço
- A nova linha à direita é opcional
- São permitidos até dois espaços finais por linha
- Não vou aceitar minha própria resposta
- A pontuação está em bytes, a pontuação mais baixa ganha!
code-golf
ascii-art
kolmogorov-complexity
Michael Klein
fonte
fonte
Respostas:
Haskell, 310 bytes
reverse
(como eu fizr
:) é um byte menor que importarData.List
e usá-lo apenas uma vezz=0:z
e(!)=(!!).(++z)
é o caminho mais curto ainda que encontrei para retornar0
fora dos limitestake4s
função, mas ainda parece mágica para mimAqui está o código:
Menos golfe:
Testes (caracteres de escape removidos):
fonte
JavaScript (ES6),
180159 bytesOnde
\n
representa um caractere literal de nova linha.Editar: atualizado para a alternância de
,'
para|
. Economizou 14 bytes usando um únicoreplace
para fazer todo o trabalho. Salva 3 bytes usando em&-4
vez de<<2>>2
. Economizou 2 bytes abusando da atribuição de desestruturação. Economizou 2 bytes abusando das seqüências de caracteres do modelo.fonte