En mükemmel kanıt, fi için çok küçük!


12

Evde oturuyorsunuz, ellerinizi en kötü bir şekilde ovuyorsunuz. Bu sefer, A-SPIN topluluğunu ayarlayabileceğim! Sadece bu kitapta bu sorunu (şüphesiz iyileştirilebilir) kanıtladığımı iddia edeceğim… İlk ilgili sayfaya açıyorsunuz. Bu kelimeleri kazıyorsun…

Tabii ki, kötü Fermat'sın! Haha, sadece şaka yapıyorum. Bunun böyle olmadığını biliyorsunuz; bu sadece onun kötü ikizi Format'ın anlatımıdır. Buradaki format, “kanıtını” kenar boşluğuna yoğunlaştırmak için çok tembel. Bu nedenle sizi onun için yapmaya çağırdı.

Amaç Bir ispat (dize) ve bir sayfa (metin bloğu) verildiğinde, ispatı kenar boşluğuna "yazın".

Geçerli sayfa kuralları

Metin bloğu, yalnızca ve aşağıdaki gereksinimleri karşılıyorsa bir sayfa içerir:

  • Üst ve alt kenarlıklar şu şekildedir -{10,}\+$( -a +, ardından satır sonuna kadar en az on kez düzenli ifade ).
  • Üst ve alt olmayan her satır a ile bitmelidir |. En az bir tane böyle çizgi olacak.
  • |Her satırda sondan en az beş boşluk olacaktır .
  • Tüm çizgiler aynı genişliktedir.

Dolayısıyla, aşağıdaki geçerli bir sayfadır ( .s, maksimum kenar boşluğu kenarlığının nerede olduğunu göstermek içindir):

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

İşte daha geniş kenar boşluğuna sahip başka bir sayfa:

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

Verilen dizeyi olabildiğince koruyarak kenar boşluğuna yazmalısınız. Örneğin hello, bir sonraki satıra sığarsa, geçerli satıra kırmayın.

I / O'ya

Dolgu metni

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|
----------+

Bu bir , bu yüzden bayt en kısa program kazanır!


Liderler Sıralaması


Codegolf için biraz yeni, sayfayı alabilir ve dosyalardan kanıt alabilir miyim? Yoksa kullanıcı G / Ç'sinden mi gelmeleri gerekiyor?
15:38, wnnmaw

@wnnmaw golf koduna hoş geldiniz! Daha iyiyse, bir dosyadan okumayı seçebilirsiniz.
Conor O'Brien


@Mego Pek değil. Bu, ayrıca bir "marjı" tanımanızı ister; bu metnin yalnızca bölünmüş değil, gerekçelendirilmiş olması gerekir.
Conor O'Brien

Bana lorem ipsum'u öğrettiğin için teşekkürler. : P
Rɪᴋᴇʀ

Yanıtlar:


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

İçeriği f.txtizleyen kod çıktısı içeren örnek ES

Dava 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|
------------------------+

Durum 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.                 |
-----------------------------------------+

Vaka 3

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

----------+
Sorry Alex|
----------+

Bir satırın geri kalanına uymayan bir sözcük verildiğinde, programınız bunu bir sonraki satıra koymalıdır.
Conor O'Brien

Nerede bu şekilde performans göstermediğini görüyorsunuz?
15:15, wnnmaw

İlk örneğinizde, bir sonraki satıra "mükemmel" konmalıdır; ikinci örneğinizde, bir sonraki satıra "superca" da konulmalıdır. Buradaki muğlaklık için özür dilerim.
Conor O'Brien

1
Ama "mükemmel" bir sonraki satıra uymuyor, her iki şekilde de kırmak zorunda, bu yüzden şu anda yazıldığı gibi kurallarla nasıl tutarsız olduğunu görmüyorum. Şu anda açıkladığınız gibi kodu uygulamak için herhangi bir yol bilmiyorum
wnnmaw

2
Bunu, bunda haklı olduğunu o ifadeli nasıl. Benim hatam tamamen, kodun iyi.
Conor O'Brien
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.