Você trabalha em uma impressora virtual antiquada. Para ajudá-lo a organizar suas cartas monoespaçadas mais rapidamente, você decide tornar o programa mais curto possível para ajudá-lo. Dada uma sequência de texto e um tamanho de página, gere e produza cada página do texto.
Exemplos
Por exemplo, com uma largura de página de 14, altura 7 e algum texto, eis o seu livro:
14, 7, "Fruits make an extremely good snack due to their utterly scrumptious sweetness. They are also very healthy for you."
+------------+
| Fruits |
| make an |
| extremely |
| good snack |
| due to |
+------------+
+------------+
| their |
| utterly |
| scrumptio- |
| -us |
| sweetness. |
+------------+
+------------+
| They are |
| also very |
| healthy |
| for you. |
| |
+------------+
Aqui está a configuração básica da página:
|---i.e.14---|
+------------+ -
| Xxxxxxxxxx | |
| Xxxxxxxxxx | i.
| Xxxxxxxxxx | e.
| Xxxxxxxxxx | 7
| Xxxxxxxxxx | |
+------------+ -
Algumas coisas
- Há uma margem de um espaço entre as bordas da página e o texto.
- A largura e a altura incluem as bordas da caixa, se isso não estiver claro.
- A envolvência ocorre apenas se uma palavra não couber em uma única linha.
- O programa precisa ser capaz de produzir quantas páginas forem necessárias, e somente essas.
- Seu programa precisa suportar qualquer tamanho de página, não apenas 14 por 7.
- Esse é o código golf, então a menor solução em bytes (em qualquer idioma) vence.
- Não estrague a diversão. As brechas padrão obviamente não são permitidas.
Ah, e falando nisso:
+------------+
| May the |
| best book |
| publisher |
| win. Good |
| Luck! |
+------------+
+------------+
| Best |
| program |
| so far: |
| Charcoal |
| |
+------------+
for example 14
que é #e.g.
scru-/-mpt-/-ious
)Respostas:
Python 2 ,
306304283279 bytesExperimente online!
fonte
L=len
para salvar um total de 2 bytes ...7, 3, "Three Is The Magic Number!"
) gera uma página vazia à esquerda.Carvão ,
10583 bytesExperimente online! Link é uma versão detalhada do código que
o deverbosifier não pode lidar com os operadores. Se linhas em branco à esquerda fossem aceitáveis, eu poderia reduzi-lo a 76 bytes:ⅈ
eⅉ
nilaryExplicação:
Insira a largura
q
e a altura emh
.Mova para uma posição que acionará a primeira caixa a ser desenhada, mas sem gerar uma margem superior.
Faça um loop sobre todas as palavras na sequência de entrada.
Repita enquanto uma palavra é muito larga para caber em uma caixa.
Pressione o máximo da palavra que se encaixar mais um hífen à direita.
Prefixe um hífen para o resto da palavra.
Empurre o resto da palavra.
Faça um loop sobre todas as palavras hifenizadas.
Verifique se a palavra se encaixa na linha atual.
Nesse caso, imprima um espaço.
Caso contrário, vá para o início da próxima linha.
Verifique se precisamos de uma nova caixa.
Se sim, desenhe a caixa.
Por fim, imprima a palavra.
fonte
Perl 5 ,
203182 + 1 (-a
) = 183 bytesExperimente online!
fonte
SOGL V0.12 , 92 bytes
Experimente aqui!
fonte
JavaScript (ES8), 242 bytes
Obrigado a @ Tvde1 por relatar um erro
Experimente online!
Comentado
fonte
12
e7
, algumas linhas / palavras são invertidas.Geléia , 93 bytes
Um programa completo recebendo três argumentos (
text
,width
,height
) que imprime as páginas.Experimente online! Nota: Ineficiente demais para executar o exemplo do OP dentro do limite de 60 segundos.
( 97 bytes se a linha em branco entre as páginas for realmente um requisito)
Quão?
fonte
PHP, 299 bytes
Execute com
php -nr '<code>' <width> <height> '<text>'
ou ou tente online .fonte