Sie arbeiten an einer virtuellen, altmodischen Druckmaschine. Um Ihnen zu helfen, Ihre Monospace-Briefe schneller zu ordnen, entscheiden Sie sich für das kürzestmögliche Programm, um Ihnen zu helfen. Generieren und geben Sie jede Seite des Texts mit einer vorgegebenen Zeichenfolge und Seitengröße aus.
Beispiele
Beispiel: Bei einer Seitenbreite von 14, einer Höhe von 7 und einem Text finden Sie hier Ihr Buch:
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. |
| |
+------------+
Hier ist das grundlegende Seiten-Setup:
|---i.e.14---|
+------------+ -
| Xxxxxxxxxx | |
| Xxxxxxxxxx | i.
| Xxxxxxxxxx | e.
| Xxxxxxxxxx | 7
| Xxxxxxxxxx | |
+------------+ -
Ein paar Dinge
- Zwischen den Seitenkanten und dem Text befindet sich ein Abstand von einem Leerzeichen.
- Die Breite und Höhe schließen die Kastenränder ein, wenn das nicht klar war.
- Ein Umbruch tritt nur auf, wenn ein Wort nicht in eine einzelne Zeile passt.
- Das Programm muss in der Lage sein, so viele Seiten wie nötig und nur so viele auszugeben.
- Ihr Programm muss jede Seitengröße unterstützen, nicht nur 14 mal 7.
- Dies ist Codegolf, daher gewinnt die kleinste Lösung in Bytes (jede Sprache).
- Mach dir den Spaß nicht kaputt. Standardlücken sind natürlich nicht erlaubt.
Oh, und übrigens:
+------------+
| May the |
| best book |
| publisher |
| win. Good |
| Luck! |
+------------+
+------------+
| Best |
| program |
| so far: |
| Charcoal |
| |
+------------+
for example 14
, das iste.g.
scru-/-mpt-/-ious
)Antworten:
Python 2 ,
306304283279 BytesProbieren Sie es online!
quelle
L=len
insgesamt 2 Bytes speichern ...7, 3, "Three Is The Magic Number!"
) liefert eine führende leere Seite.Kohle ,
10583 BytesProbieren Sie es online! Der Link ist eine ausführliche
Codeversion, mit der der Deverbosifier die Operatoren. Wenn führende Leerzeilen akzeptabel wären, könnte ich es auf 76 Bytes reduzieren:ⅈ
undⅉ
nilary nicht umgehen kannErläuterung:
Geben Sie die Breite in
q
und die Höhe in einh
.Bewegen Sie sich zu einer Position, die das erste zu zeichnende Kästchen auslöst, ohne jedoch einen oberen Rand zu erzeugen.
Durchlaufen Sie alle Wörter in der Eingabezeichenfolge.
Wiederholen Sie diesen Vorgang, während ein Wort zu breit ist, um in ein Kästchen zu passen.
Drücken Sie so viele Wörter, wie passen, sowie einen nachgestellten Bindestrich.
Stellen Sie dem Rest des Wortes einen Bindestrich voran.
Schieben Sie den Rest des Wortes.
Überfliege alle Wörter mit Bindestrich.
Überprüfen Sie, ob das Wort in die aktuelle Zeile passt.
Wenn ja, drucken Sie ein Leerzeichen.
Ansonsten gehe zum Anfang der nächsten Zeile.
Überprüfen Sie, ob wir eine neue Box benötigen.
Wenn ja, dann zeichnen Sie die Box.
Zum Schluss das Wort ausdrucken.
quelle
Perl 5 ,
203182 + 1 (-a
) = 183 BytesProbieren Sie es online!
quelle
SOGL V0.12 , 92 Bytes
Probieren Sie es hier aus!
quelle
JavaScript (ES8), 242 Byte
Vielen Dank an @ Tvde1 für den Hinweis auf einen Fehler
Probieren Sie es online!
Kommentiert
quelle
12
und aus7
, einige Zeilen / Wörter sind vertauscht.Gelee , 93 Bytes
Ein volles Programm nimmt drei Argumente (
text
,width
,height
) , das druckt die Seiten.Probieren Sie es online! NB Das Beispiel kann nicht innerhalb der 60-Sekunden-Grenze vom OP ausgeführt werden.
( 97 Bytes, wenn die Leerzeile zwischen den Seiten tatsächlich erforderlich ist)
Wie?
quelle
PHP, 299 Bytes
Laufen Sie mit
php -nr '<code>' <width> <height> '<text>'
oder oder versuchen Sie es online .quelle