Você não acha que ler texto simples não é atraente o suficiente? Experimente o nosso
##### ### ### ##### ##### ##### ##### # # ##### #
# # # # # # # # # # # # #
##### ### # # # # #### # # #
# # # # # # # # # # # #
# # ### ### ##### ##### # ##### # # # #
Muito mais chique, não é? Mas é muito longo para escrever à mão, seria maravilhoso se alguém fizesse um programa que fizesse isso por mim!
Sua tarefa , se você se voluntariar para me ajudar, será escrever um programa ou uma função que use [a-zA-Z\s\n]
apenas uma string que contenha e gerar (ou retornar) a escrita ascii dela!
Você deve usar o seguinte alfabeto para formatar sua saída:
##### #### ### #### ##### ##### ### # # ##### ##### # # # # #
# # # # # # # # # # # # # # # # # # ## ##
##### #### # # # #### #### # ## ##### # # ### # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # #### ### #### ##### # ### # # ##### ### # # ##### # #
# # ### #### ### #### ### ##### # # # # # # # # # # #####
## # # # # # # # # # # # # # # # # # # # # # #
# # # # # #### # # #### ### # # # # # # # # # # #
# ## # # # # ## ## # # # # # # ## ## # # # #
# # ### # #### # # ### # ### # # # # # # #####
O espaço:
|
| it's a 5x5 square of spaces
| but had to pad it with |s to make it appear in this post
|
|
Como essa fonte é de largura fixa, o caractere de espaço também é cercado por espaços, resultando em um espaço de 7 larguras entre as duas letras.
a b
1234567 -- these numbers are just for the example, you don't have to output them
##### ####
# # # #
##### ####
# # # #
# # ####
a b
1234567890123
##### ####
# # # #
##### ####
# # # #
# # ####
Quando você encontra uma nova linha, como na entrada
ascii
text
Apenas certifique-se de separar os dois blocos de texto por pelo menos uma linha vazia
##### ### ### ##### #####
# # # # # # #
##### ### # # #
# # # # # # #
# # ### ### ##### #####
##### ##### # # #####
# # # # #
# #### # #
# # # # #
# ##### # # #
Além disso, você tem permissão para substituir os #
s por qualquer outro caractere, desde que esteja no intervalo ASCII imprimível e não haja espaços. Você pode, por exemplo, usar A
s para a letra A, B
para a letra B e assim por diante.
Como esse é o código-golfe (e também a complexidade do kolmogorov ), a finalização vencedora será a que resolver esse desafio com o mínimo de bytes possível, divirta-se!
fonte
Respostas:
Python 3, 375 bytes
Veja este código em execução no ideone.com.
O mesmo código, mas de alguma forma bem recuado, formatado e comentado:
Também decidi optar pela codificação da base 36, pois é a base mais alta que o Python
int()
suporta nativamente. Aqui está um pequeno script Python 3 que eu escrevi (ungolfed) que converte definições de fonte como na pergunta em códigos base 36: Meu conversor em ideone.comO resultado consiste no caractere
1
como pixel ativado e um espaçocomo pixel desativado. Aqui está um exemplo de execução:
Entrada (quebra de linha como
\n
):Resultado:
fonte
Clojure, 552 bytes
Cada letra em ascii é representada como uma string binária com # - 1, espaço - 0. Em seguida, é convertida para a base 36, de modo que são necessários apenas 5 caracteres para armazenar + ":" para que Clojure saiba que deve ser tratado como símbolo. Em seguida, a entrada é dividida pelo símbolo de nova linha e, para cada linha, convertemos uma letra na base 36 de volta para a base binária e obtemos os primeiros [0: 5] símbolos para adicionar nova linha, os próximos [5:10] e assim por diante.
Você pode vê-lo em execução aqui - https://ideone.com/y99ST5
fonte
SOGL , 137 bytes (não concorrente)
Explicação:
nota: atualmente esse idioma não pode realmente aceitar uma string de entrada com várias linhas, então pedi um número e li as próximas x linhas como entrada.
A primeira string é
compactado usando um dicionário personalizado que usa "" e "-" (a compactação possui um modo especial com "\ n - | / _" disponível para uma compressão ainda maior!)
Contém 25 caracteres por caractere ascii na ordem do alfabeto. eles são ordenados de cima para baixo e à direita.
os caracteres vão como
e é da mesma maneira que os
┼
adiciona a uma matriz.fonte
foo\nbar
de várias linhas entradasPowershell,
261253 bytesScript de teste:
Resultado:
Nota:
$s|% *per|% t*y
é um atalho para$s|% toUpper|% toCharArray
Sobre o espaço:
Para cada caractere da cadeia de origem, o script usa um símbolo (máscara de bit) da cadeia mágica
'_ONO__NQ...'
. No entanto, o índice vai além da seqüência mágica por um espaço. Nesse caso, a máscara de bit$c
fica vazia. Significa zero para todos os bits.Sobre a linha em branco:
O script exibe 6 linhas para cada símbolo, em vez de 5. O índice também vai além da seqüência mágica para uma linha em branco. Portanto, a linha 6 contém apenas espaços.
É melhor ver se você imprimir outro caractere em vez de um espaço. Por exemplo
·
.fonte
C (gcc) , 326 bytes
Uma primeira facada. Tinha que incluir stdio.he string.h no TIO, mas não era necessário com o MinGW.
Experimente online!
fonte
JavaScript (ES6),
292287278 bytesDemo
Mostrar snippet de código
fonte