Ein ausgezeichneter Beweis, zu klein, um ihn zu fassen!

12

Sie sitzen zu Hause und reiben sich auf die übelste Weise die Hände. Dieses Mal kann ich die Community A-SPIN einstellen! Ich behaupte nur, dass ich dieses Problem (das zweifellos verbesserungsfähig ist) in diesem Buch hier bewiesen habe ... Sie öffnen die erste relevante Seite. Du kritzelst diese Worte ...

Du bist natürlich der böse Fermat! Haha war nur Spaß. Sie wissen, dass es nicht so passiert ist; Dies ist lediglich die Erzählung seines bösen Zwillings, Format. Format ist hier zu faul, um seinen "Beweis" in den Rand zu verdichten. Er hat Sie daher aufgefordert, dies für ihn zu tun.

Ziel Wenn Sie einen Proof (String) und eine Seite (Textblock) haben, "schreiben" Sie den Proof in den Rand.

Gültige Seitenregeln

Ein Textblock enthält eine Seite nur dann, wenn die folgenden Anforderungen erfüllt sind:

  • Die oberen und unteren Ränder haben die Form -{10,}\+$(regulärer Ausdruck für -mindestens zehn Mal bis a +, dann das Ende der Zeile).
  • Jede nicht-obere und nicht-untere Zeile muss mit einem enden |. Es wird mindestens eine solche Zeile geben.
  • |In jeder Zeile sind mindestens fünf Leerzeichen vom letzten entfernt.
  • Alle Linien sind gleich breit.

Das Folgende ist also eine gültige Seite (die .s zeigen an, wo der maximale Rand ist):

-----------------+
Lorem Ipsum.     |
and other  .     |
latin crud .     |
           .     |
        EOF.     |
-----------------+

Hier ist eine andere Seite mit einem breiteren Rand:

------------------------+
Hello world!   .        |
How are you, to.        |
day? --Mme. B  .        |
               .        |
------------------------+

Sie müssen die angegebene Zeichenfolge in den Rand schreiben und dabei die Wörter beibehalten, die Sie können, so weit Sie können. Wenn zum Beispiel helloin die nächste Zeile passt, brechen Sie sie in der aktuellen Zeile nicht um.

I / Os

Fülltext

Proof: This is a most excellent proof, too small for anyone!
Text:                       ; not a leading newline
------------------------+
Hello world!            |
How are you, to         |
day? --Mme. B           |
                        |
------------------------+
Output: 
------------------------+
Hello world!    This a  |
How are you, to most    |
day? --Mme. B   excellen|
                t proof,|
------------------------+    

Proof: Execute the member as an example to the others!
Text:
------------------------------------------------+
Contrary to popular belief, Lorem               |
Ipsum is not simply random text.                |
It has roots in a piece of classical            |
Latin literature from 45 BC, making             |
it over 2000 years old. Richard                 |
McClintock, a Latin professor at                |
Hampden-Sydney College in Virginia,             |
looked up one of the more obscure               |
Latin words, consectetur, from a                |
Lorem Ipsum passage, and going through          |
the cites of the word in classical              |
literature, discovered the undoubtable          |
source. Lorem Ipsum comes from...               |
------------------------------------------------+
Output:
------------------------------------------------+
Contrary to popular belief, Lorem      Execute  |
Ipsum is not simply random text.       the      |
It has roots in a piece of classical   member as|
Latin literature from 45 BC, making    an       |
it over 2000 years old. Richard        example  |
McClintock, a Latin professor at       to the   |
Hampden-Sydney College in Virginia,    others!  |
looked up one of the more obscure               |
Latin words, consectetur, from a                |
Lorem Ipsum passage, and going through          |
the cites of the word in classical              |
literature, discovered the undoubtable          |
source. Lorem Ipsum comes from...               |
------------------------------------------------+

Proof: Consider supercalifragilisticexpialidocious. Therefore, x.
Output:
-----------------------------------------+
sections 1.10.32 and                     |
1.10.33 of "de Finibus                   |
Bonorum et Malorum"                      |
(The Extremes of Good                    |
and Evil) by Cicero,                     |
written in 45 BC. This                   |
book is a treatise on                    |
the theory of ethics,                    |
very popular during the                  |
Renaissance. The first                   |
line of Lorem Ipsum,                     |
"Lorem ipsum dolor sit                   |
amet..", comes from a                    |
line in section 1.10.32.                 |
-----------------------------------------+
Output: Consider supercalifragilisticexpialidocious. Therefore, x.
-----------------------------------------+
sections 1.10.32 and     Consider        |
1.10.33 of "de Finibus   supercalifragili|
Bonorum et Malorum"      sticexpialidocio|
(The Extremes of Good    us. Therefore, x|
and Evil) by Cicero,     .               |
written in 45 BC. This                   |
book is a treatise on                    |
the theory of ethics,                    |
very popular during the                  |
Renaissance. The first                   |
line of Lorem Ipsum,                     |
"Lorem ipsum dolor sit                   |
amet..", comes from a                    |
line in section 1.10.32.                 |
-----------------------------------------+

Proof: Alex is a bird. All birds can fly. All things that fly are wrong. Ergo, Alex is wrong.
Text:
----------+
Sorry     |    ; 5 spaces. 
----------+
Output:
----------+
Sorry Alex|
----------+

Dies ist ein , also gewinnt das kürzeste Programm in Bytes!


Bestenliste

Conor O'Brien
quelle
Kann ich die Seite abholen und aus Dateien prüfen? Oder müssen sie von Benutzer-E / A stammen?
Mittwoch,
@wnnmaw willkommen bei code golf! Wenn es besser ist, können Sie aus einer Datei lesen.
Conor O'Brien
@Mego Nicht ganz. Damit wollen Sie zusätzlich einen "Rand" erkennen; Dieser Text muss begründet und nicht nur geteilt worden sein.
Conor O'Brien
Vielen Dank, dass Sie mir Lorem Ipsum beigebracht haben. : P
Rɪᴋᴇʀ

Antworten:

4

Python 2, 334

p=open("f.txt",'r').readlines()
r,S,p=p[0][7:],p[2].strip(),p[3:-1]
import textwrap as t,itertools as i
m,l=max([len(s[:-5].strip()) for s in p]),len(S)-2
P = i.izip_longest(["{} {{:{}}}|".format(s[:m],l-m) for s in p],t.wrap(r,l-m),fillvalue="")
print S
for q in P:
 if not q[0]:break
 print q[0].format(q[1])
print S

Beispiel IO mit Inhalt von f.txtgefolgt von Code-Ausgabe

Fall 1

Proof: This is a most excellent proof, too small for anyone!
Text:                       
------------------------+
Hello world!            |
How are you, to         |
day? --Mme. B           |
                        |
------------------------+

------------------------+
Hello world!    Proof:  |
How are you, to This is |
day? --Mme. B   a most e|
                xcellent|
------------------------+

Fall 2

Proof: Consider supercalifragilisticexpialidocious. Therefore, x.
Output:
-----------------------------------------+
sections 1.10.32 and                     |
1.10.33 of "de Finibus                   |
Bonorum et Malorum"                      |
(The Extremes of Good                    |
and Evil) by Cicero,                     |
written in 45 BC. This                   |
book is a treatise on                    |
the theory of ethics,                    |
very popular during the                  |
Renaissance. The first                   |
line of Lorem Ipsum,                     |
"Lorem ipsum dolor sit                   |
amet..", comes from a                    |
line in section 1.10.32.                 |
-----------------------------------------+

-----------------------------------------+
sections 1.10.32 and     Consider superca|
1.10.33 of "de Finibus   lifragilisticexp|
Bonorum et Malorum"      ialidocious.    |
(The Extremes of Good    Therefore, x.   |
and Evil) by Cicero,                     |
written in 45 BC. This                   |
book is a treatise on                    |
the theory of ethics,                    |
very popular during the                  |
Renaissance. The first                   |
line of Lorem Ipsum,                     |
"Lorem ipsum dolor sit                   |
amet..", comes from a                    |
line in section 1.10.32.                 |
-----------------------------------------+

Fall 3

Proof: Alex is a bird. All birds can fly. All things that fly are wrong. Ergo, Alex is wrong.
Text:
----------+
Sorry     |   
----------+

----------+
Sorry Alex|
----------+
wnnmaw
quelle
Wenn ein Wort eingegeben wird, das nicht in die restliche Zeile passt, sollte es von Ihrem Programm in die nächste Zeile eingefügt werden.
Conor O'Brien
Wo sehen Sie es nicht so?
wnnmaw
In Ihrem ersten Beispiel sollte "ausgezeichnet" in die nächste Zeile gesetzt werden. In Ihrem zweiten Beispiel sollte "superca" auch in die nächste Zeile gestellt werden. Entschuldigen Sie die Unklarheit.
Conor O'Brien
1
Aber "ausgezeichnet" passt nicht in die nächste Zeile, es muss so oder so brechen, damit ich nicht sehe, wie dies mit den Regeln unvereinbar ist, wie sie derzeit geschrieben sind. Ich kenne derzeit keine Möglichkeit, den Code zu implementieren, wie Sie ihn jetzt beschreiben
wnnmaw
2
Sie haben da einen Punkt, so heißt es. Ich bin vollkommen schuld, dein Code ist in Ordnung.
Conor O'Brien