파이에 비해 너무 작은 가장 훌륭한 증거 —!


12

가장 악한 방식으로 손을 문지르면서 집에 앉아 있습니다. 이번에는 커뮤니티 A-SPIN을 설정할 수 있습니다! 나는이 책에서이 문제가 의심 할 여지없이 입증되었다고 주장 할 것이다 . 당신은 그 말을 긁습니다…

당신은 물론 사악한 페르마입니다! 하하, 농담이야 이런 일이 발생하지 않았다는 것을 알고 있습니다. 이것은 단지 그의 사악한 쌍둥이 인 형식의 이야기 일뿐입니다. 여기의 형식은 그의 "증거"를 여백에 응축 시키기에는 너무 게으 릅니다. 그러므로 그는 당신에게 그를 위해 그것을하도록 요구했습니다.

목표 증명 (문자열)과 페이지 (텍스트 블록)가 주어지면 증명 여백에 "쓰기"합니다.

유효한 페이지 규칙

텍스트 블록은 다음 요구 사항을 충족하는 경우에만 페이지를 포함합니다.

  • 위쪽 및 아래쪽 테두리는 형식입니다 -{10,}\+$( -a +, 그 다음 줄 끝까지 10 회 이상 정규 표현식 ).
  • 상단과 하단이 아닌 모든 줄은로 끝나야합니다 |. 그러한 줄은 하나 이상있을 것입니다.
  • |각 줄 의 마지막에서 최소 5 개의 공백이있을 것 입니다.
  • 모든 선은 같은 너비입니다.

따라서 다음은 유효한 페이지입니다 ( .s는 최대 여백 경계가있는 위치를 나타냅니다).

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

이것은 이므로 바이트 단위의 가장 짧은 프로그램이 승리합니다!


리더 보드


codegolf를 처음 사용하는 경우 페이지를 가져 와서 파일에서 교정 할 수 있습니까? 아니면 사용자 I / O에서 가져와야합니까?
wnnmaw

@wnnmaw는 골프를 코드에 오신 것을 환영합니다! 더 좋은 경우 파일에서 읽도록 선택할 수 있습니다.
코너 오브라이언


@Mego 확실하지 않습니다. 이것은 또한 "여백"을 인식하기를 원합니다. 그 텍스트는 단순히 분할이 아니라 정당화되어야합니다.
코너 오브라이언

lorem ipsum에 대해 가르쳐 주셔서 감사합니다. : P
Rɪᴋᴇʀ

답변:


4

파이썬 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뒤에 코드 출력이있는 샘플 IO

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

나머지 한 줄에 맞지 않는 단어가 주어지면 프로그램은 다음 줄에 넣어야합니다.
코너 O'Brien

이런 식으로 작동하지 않는 곳은 어디입니까?
wnnmaw

첫 번째 예에서 "excellent"는 다음 줄에 입력해야합니다. 두 번째 예에서는 "superca"도 다음 줄에 입력해야합니다. 애매한 점이 유감입니다.
코너 오브라이언

1
그러나 "우수한"은 다음 줄에 맞지 않습니다. 어느 쪽이든 깨뜨려야하므로 이것이 현재 작성된 규칙과 어떻게 일치하지 않는지 알 수 없습니다. 나는 현재 당신이 설명하고있는 코드를 구현하는 방법을 모른다
wnnmaw

2
당신은 즉,이 점을 가지고 있다 가 모호하게하는 방법. 내 잘못은 전적으로 귀하의 코드는 괜찮습니다.
코너 오브라이언
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.