Angesichts dieses Textes
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud Übung ullamco laboris nisi ut aliquip ex ea Commodo Konsequenz. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Schreiben Sie das kürzeste Programm, das denselben Text mit 80 Zeichen erzeugt. Der obige Text muss genau so aussehen:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.
Regeln:
- Wörter dürfen nicht geschnitten werden
- zusätzliche Leerzeichen müssen hinzugefügt werden
- nach einem Punkt.
- nach einem Komma
- nach dem kürzesten Wort (von links nach rechts)
- Das Ergebnis darf nicht mehr als 2 aufeinanderfolgende Leerzeichen enthalten
- Die letzte Zeile ist nicht gerechtfertigt.
- Zeilen dürfen nicht mit Komma oder Punkt beginnen.
- Stellen Sie die Ausgabe Ihres Programms bereit
Gewinner: Das kürzeste Programm.
Hinweis: Die Eingabezeichenfolge wird in STDIN als eine Zeile bereitgestellt (kein Zeilenvorschub oder Wagenrücklauf).
aktualisieren:
Die Eingabezeichenfolge kann ein beliebiger Text mit einer vernünftigen Wortlänge sein (dh nicht mehr als 20 bis 25 Zeichen), wie z.
Lorem ipsum dolor sitzen amet, consectetur adipiscing elit. Sed non risus. Suspendisse Lectus Tortor, Dignissim sitzen amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices Durchm. Maecenas ligula massa, varius a, sempre congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, nicht fermentum diam nisl sit amet erat. Duis sempre. Duis arcu massa, scelerisque vitae, Folge, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis im Faucibus orci luctus und im ultrices posuere cubilia Curae; Aliquam Nibh. Mauris ac mauris sed pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales hendrerit. Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, Ligula non tempus aliquam, Nunc turpis ullamcorper nibh, in Tempus sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer id felis. Curabitur aliquet pellentesque diam. Ganzzahliger Lebenslauf elit lobortis egestas. Lorem ipsum dolor sitzen amet, consectetuer adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et sapien. Integer Tortor Tellus, Aliquam Faucibus, Convallis ID, Congue EU, Quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non elementum posuere, metus purus iaculis lectus und tristique ligula justo vitae magna. Aliquam convallis sollicitudin purus. Praesent Aliquam, Enim bei Fermentum Mollis, Ligula Massa Adipiscing Nisl, Ac Euismod Nibh Nisl Eu Lectus. Fusce vulputate sem at sapien. Vivamus Leo. Aliquam euismod libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla tincidunt tincidunt mi. Curabitur iaculis, Lorem Vel Rhoncus Faucibus, Felis Magna Fermentum Augue und Ultricies Lacus Lorem Varius Purus. Curabitur eu amet.
quelle
Antworten:
Perl, 94 Zeichen
Laufen Sie mit
perl -nM5.01
. (Dasn
ist in der Anzahl der Zeichen enthalten.)Der obige Code ist der kürzeste, den ich machen konnte, um alle Curveballs zu verarbeiten, die ich darauf geworfen habe (z. B. Ein-Buchstaben-Wörter am Anfang einer Zeile, Eingabezeilen mit einer Länge von genau 80 Zeichen usw.), genau gemäß der Spezifikation:
(Mit Entschuldigung an Gareth, dass er seinen Kommentar als zusätzliche Testeingabe verwendet hat.)
Die folgende 75-Zeichen-Version funktioniert gut genug, um die Sample-Ausgabe aus der Sample-Eingabe zu erzeugen, kann jedoch bei anderen Eingaben fehlschlagen. Außerdem bleibt am Ende jeder Ausgabezeile ein zusätzliches Leerzeichen.
Beide Versionen werden für immer wiederholt, wenn sie auf Eingaben stoßen, die sie nicht richtig rechtfertigen können. (In der längeren Version würde das Ersetzen
until
durchuntil$i>80||
das Problem auf Kosten von sieben zusätzlichen Zeichen behoben.)quelle
Quantifier in {,} bigger than 32766 in regex; marked by <-- HERE in m/^(.*?\.|.*?,|(.*? )??\S{ <-- HERE 32767}) \b/
für den zweiten Text.$i>80
Scheck hinzufüge , erweitert er die 11. Zeile aufpede pellentesque fermentum. Maecenas adipiscing ante non diam sodales
, die nur 78 Zeichen lang ist, und gibt dann auf, da auf jedes Wort (außer dem letzten) zwei Leerzeichen folgen.Ruby, 146 Zeichen
Es druckt genau die gewünschte Ausgabe (siehe unten), wenn der angegebene Text in STDIN eingegeben wird.
Bearbeiten: Kurz nachdem ich meine erste Lösung eingereicht hatte, sah ich in den Kommentaren, dass es erforderlich ist, dass jede Eingabezeichenfolge verarbeitet werden kann. Die vorherige Antwort bestand nur aus 95 Zeichen, erfüllte diese Anforderung jedoch nicht:
quelle