Introdução
Acho que todo mundo concorda que fotos legais precisam ter uma moldura legal. Mas a maioria dos desafios neste site sobre o ASCII-Art só quer a imagem em bruto e não se preocupa com a preservação.
Não seria legal se tivéssemos um programa que pegasse um pouco de arte ASCII e o envolvesse com uma bela moldura?
O desafio
Escreva um programa que pegue um pouco de ASCII-Art como entrada e o faça rodeado por um quadro bonito.
Exemplo:
***** *** * *** *****
torna-se
╔═══════╗ ║ ***** ║ ║ *** ║ ║ * ║ ║ *** ║ ║ ***** ║ ╚═══════╝
- Você precisa usar exatamente os mesmos caracteres para o quadro, como no exemplo:
═ ║ ╔ ╗ ╚ ╝
- A parte superior e inferior do quadro são inseridas antes da primeira e após a última linha da entrada.
- As partes esquerda e direita do quadro precisam ter um espaço de preenchimento exato na linha mais larga da entrada.
- Pode não haver espaços em branco à esquerda ou à direita na saída. Apenas uma nova linha à direita é permitida.
- Você pode assumir que a entrada não possui espaços em branco desnecessários.
- Você pode assumir que a entrada não possui espaços em branco à direita em nenhuma linha.
- Você não precisa lidar com entradas vazias.
- A entrada conterá apenas caracteres ASCII imprimíveis e novas linhas.
Regras
- Função ou programa completo permitido.
- Regras padrão para entrada / saída.
- Aplicam-se brechas padrão .
- Isso é código-golfe , portanto, a menor contagem de bytes vence. O desempate é uma submissão anterior.
Feliz codificação!
É altamente recomendável usar algumas ótimas artes ASCII, que foram produzidas em qualquer desafio deste site, como entrada para o seu programa e mostrá-lo com uma bela moldura!
#
quatro vezes. A adaptação dessa abordagem aqui será, na melhor das hipóteses, complicada. , e não é viável, na pior das hipóteses.) #Respostas:
CJam, 45 caracteres / 52 bytes
Tentar evitar aqueles caros caracteres de 3 bytes foi ... interessante.
Experimente online
Explicação
fonte
Haskell, 139 bytes
Como exemplo, estou enquadrando o boneco de neve "12333321" .
Como funciona:
fonte
JavaScript (ES6), 138 bytes
São 138 bytes na codificação IBM866, que no momento da gravação ainda são suportados no Firefox, mas 152 no UTF-8.
fonte
Bash,
173171150148147 bytes,157136134133 caracteresMultilinha:
Exemplo de execução:
Exemplo de execução a partir do script:
fonte
...?${#2}+2:n))
vez de+1
, soltar 2 espaços e emprintf -v z %${n}s;
vez deprintf -v z " %*.s" $n
.AWK, 159 bytes
Aparentemente,
awk
pode imprimir Unicode se você descobrir como obtê-lo no código.fonte
Perl, 111 caracteres
(a pontuação inclui +5 para os sinalizadores de intérprete)
Primeiro, encontramos o maior comprimento de linha
$n
, classificando numericamente os comprimentos de todas as linhas.Definimos
$l
como a barra de cabeçalho / rodapé para$n
repetições do caractere de quadro horizontal.Em seguida, imprimimos cada linha formatada para alinhar à esquerda em um campo de largura
$n
, imprensado entre os caracteres do quadro.Resultado:
fonte
Pitão, 44 caracteres (58 bytes)
Explicação
Experimente aqui.
fonte
PHP 5.3, 209 bytes
Isso funciona apenas com o OEM 860 de codificação . É um superconjunto ASCII estendido, usado nas versões do DOS em português. Como sou português (e eu adorava fazer esses "quadros" em Pascal) e essa é uma codificação padrão, continuei com isso:
Aqui está a base64:
Esta resposta foi baseada na minha resposta em: https://codegolf.stackexchange.com/a/57883/14732 (o trabalho pesado foi todo feito lá, só foi preciso se mexer um pouco).
fonte
22+58+11+5+11+24+66+12=209
Os últimos 12 são novas linhas e, como é o DOS, significa CRLF, ou dois bytes por nova linha. O site charactercountonline não conta novas linhas. Cada um dos caracteres não ASCII são um byte em OEM 860.\n
em\r\n
, ao abrir o arquivo no modo ASCII / texto.Python 3, 119 bytes
126 bytesEntrada:Saída:
fonte
print"╔"+h+"╗\n"+"".join(o)+"╚"+h+"╝"
.def f(x):
n='\n';s="║ ";e=" ║";h=(x.find(n)+2)*"═";return"╔"+h+"╗"+n+s+x.replace(n,e+n+s)+e+n+"╚"+h+"╝"
<s>...</s>
). Além disso, você pode adicionar<!-- language-all: lang-python -->
antes do seu bloco de código para adicionar destaque de sintaxe ao seu código.Python 2, 115 bytes
Parece menor que 115 aqui, mas o arquivo de trabalho inclui assinatura de marca UTF-8 BOM de 3 bytes, aumentando até 115 bytes. Se você o executasse no Python 3, não precisaria da BOM e ela chegaria a 112 bytes.
fonte
sed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' codeGolf.py
C, 290 bytes
Função de golfe
B
, com dependências; recebe entrada como caractere terminado por nulo *Função um pouco não-destruída no programa completo
entrada
saída
C dicas de golfe apreciado!
fonte