Отличное доказательство, слишком маленькое, чтобы обмануть!

12

Вы сидите дома, потирая руки самым злым образом. На этот раз я смогу установить сообщество A-SPIN! Я просто утверждаю, что я доказал эту проблему (что, несомненно, невозможно) в этой книге здесь ... Вы открываете первую релевантную страницу. Вы нацарапаете эти слова ...

Вы, конечно, злой Ферма! Хаха, шучу. Вы знаете, что это не произошло так; это просто повествование о его злом близнеце Формате. Формат здесь слишком ленив, чтобы сконцентрировать его «доказательство» на полях. Поэтому он призвал вас сделать это для него.

Задача Получив доказательство (строка) и страницу (текстовый блок), «напишите» в поле доказательства.

Действующие правила страницы

Текстовый блок содержит страницу тогда и только тогда, когда он отвечает следующим требованиям:

  • Верхняя и нижняя границы имеют форму -{10,}\+$(регулярное выражение -не менее десяти раз до a +, а затем до конца строки).
  • Каждая не верхняя и не нижняя строка должна заканчиваться символом |. Там будет хотя бы одна такая строка.
  • В |каждой строке будет как минимум пять пробелов из последних .
  • Все линии имеют одинаковую ширину.

Таким образом, следующая страница является допустимой (она .показывает, где находится максимальная граница поля):

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

Вот еще одна страница с более широким полем:

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

Вы должны написать данную строку на полях, сохраняя слова, которые вы можете, насколько вы можете. Например, если helloпомещается на следующей строке, не разбивайте ее на текущей строке.

I / O

Текст наполнителя

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

Это , поэтому выигрывает самая короткая программа в байтах!


Leaderboard

Конор О'Брайен
источник
Немного новичок в Codegolf, могу ли я взять страницу и доказательства из файлов? Или они должны исходить от ввода / вывода пользователя?
wnnmaw
@wnnmaw добро пожаловать в код гольф! Если это лучше, вы можете выбрать чтение из файла.
Конор О'Брайен
@Mego Не совсем. Это также требует, чтобы вы распознали «маржу»; этот текст должен быть обоснован, а не просто разделен.
Конор О'Брайен
Что ж, спасибо, что рассказали мне о Lorem Ipsum. : P
Rɪᴋᴇʀ

Ответы:

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

Пример ввода-вывода с содержимым с f.txtпоследующим выводом кода

Дело 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|
------------------------+

Дело 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.                 |
-----------------------------------------+

Дело 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
источник
Когда вам дается слово, которое не соответствует ни одной из оставшихся строк, ваша программа должна поместить его в следующую строку.
Конор О'Брайен
Где вы видите, что это не так?
wnnmaw
В вашем первом примере «отлично» следует поместить в следующую строку; во втором примере «суперка» также должна быть помещена в следующую строку. Извините за двусмысленность там.
Конор О'Брайен
1
Но «отлично» не помещается в следующую строку, оно должно нарушаться в любом случае, поэтому я не вижу, как это не согласуется с правилами, как они написаны в настоящее время. В настоящее время я не знаю способа реализации кода, как вы сейчас описываете
wnnmaw
2
У вас есть точка там, то есть , как это сформулировано. Я полностью виноват, твой код в порядке.
Конор О'Брайен