Vous travaillez dans une imprimerie virtuelle à l'ancienne. Pour vous aider à organiser vos lettres monospace plus rapidement, vous décidez de faire le programme le plus court possible pour vous aider. Étant donné une chaîne de texte et une taille de page, générez et affichez chaque page du texte.
Exemples
Par exemple, avec une largeur de page de 14, une hauteur de 7 et du texte, voici votre livre:
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. |
| |
+------------+
Voici la configuration de base de la page:
|---i.e.14---|
+------------+ -
| Xxxxxxxxxx | |
| Xxxxxxxxxx | i.
| Xxxxxxxxxx | e.
| Xxxxxxxxxx | 7
| Xxxxxxxxxx | |
+------------+ -
Quelques choses
- Il existe une marge d'un espace entre les bords de la page et le texte.
- La largeur et la hauteur incluent les bords de la boîte, si ce n'était pas clair.
- L'enroulement ne se produit que si un mot ne peut pas tenir sur une seule ligne.
- Le programme doit être capable de produire autant de pages que nécessaire, et seulement autant.
- Votre programme doit prendre en charge n'importe quelle taille de page, pas seulement 14 x 7.
- C'est le golf de code, donc la plus petite solution en octets (n'importe quelle langue) gagne.
- Ne gâchez pas le plaisir. Les failles standard ne sont évidemment pas autorisées.
Oh, et au fait:
+------------+
| May the |
| best book |
| publisher |
| win. Good |
| Luck! |
+------------+
+------------+
| Best |
| program |
| so far: |
| Charcoal |
| |
+------------+
for example 14
que c'este.g.
scru-/-mpt-/-ious
)Réponses:
Python 2 ,
306304283279 octetsEssayez-le en ligne!
la source
L=len
pour économiser 2 octets au total ...7, 3, "Three Is The Magic Number!"
) donne une page vide de début.Fusain ,
10583 octetsEssayez-le en ligne! Le lien est vers une version détaillée du code que
le déverbosificateur ne peut pas gérer les opérateurs. Si les premières lignes vierges étaient acceptables, je pourrais le réduire à 76 octets:ⅈ
etⅉ
nilaryExplication:
Entrez la largeur
q
et la hauteur dansh
.Déplacez-vous vers une position qui déclenchera la première case à dessiner, mais sans générer de marge supérieure.
Faites une boucle sur tous les mots de la chaîne d'entrée.
Répétez l'opération lorsqu'un mot est trop large pour tenir dans une boîte.
Appuyez sur le mot qui correspondra le plus à un tiret de fin.
Préfixez un trait d'union au reste du mot.
Appuyez sur le reste du mot.
Faites une boucle sur tous les mots avec trait d'union.
Vérifiez si le mot tient sur la ligne actuelle.
Si oui, imprimez un espace.
Sinon, passez au début de la ligne suivante.
Vérifiez si nous avons besoin d'une nouvelle boîte.
Si oui, dessinez la boîte.
Enfin, imprimez le mot.
la source
Perl 5 ,
203182 + 1 (-a
) = 183 octetsEssayez-le en ligne!
la source
SOGL V0.12 , 92 octets
Essayez-le ici!
la source
JavaScript (ES8), 242 octets
Merci à @ Tvde1 d'avoir signalé un bug
Essayez-le en ligne!
Commenté
la source
12
et7
, certaines lignes / mots sont inversés.Gelée , 93 octets
Un programme complet trois arguments (
text
,width
,height
) qui imprime les pages.Essayez-le en ligne! NB Trop inefficace pour exécuter l'exemple à partir de l'OP dans la limite de 60 secondes.
( 97 octets si la ligne vierge entre les pages est en fait une exigence)
Comment?
la source
PHP, 299 octets
Exécutez avec
php -nr '<code>' <width> <height> '<text>'
ou ou essayez-le en ligne .la source