12
4
You sit at home, rubbing your hands in a most evil fashion. This time, I'll be able to set the community A-SPIN! I'll merely claim that I have proven this problem (which is of no doubt improvable) inside this book here… You open to the first relevant page. You scrawl those words…
You are, of course, the evil Fermat! Haha, just kidding. You know it didn't happen like this; this is merely the narrative of his evil twin, Format. Format here is too lazy to condense his “proof” into the margin. He has therefore called upon you to do it for him.
Objective Given a proof (string), and a page (text block), "write" into the margin the proof.
Valid page rules
A text block contains a page if and only if it meets the following requirements:
- The top and bottom borders are of the form
-{10,}\+$
(Regular expression for-
at least ten times until a+
, then the end of the line). - Every non-top and non-bottom line must end with a
|
. There will be at least one such line. - There will be at least five spaces from the last
|
in each line. - All lines are the same width.
So the following is a valid page (the .
s are for showing where the maximal margin border is):
-----------------+
Lorem Ipsum. |
and other . |
latin crud . |
. |
EOF. |
-----------------+
Here is another page with a wider margin:
------------------------+
Hello world! . |
How are you, to. |
day? --Mme. B . |
. |
------------------------+
You are to write the given string in the margin, maintaining words that you can, as far as you can. For example, if hello
fits on the next line, do not break it on the current line.
I/Os
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|
----------+
This is a code-golf, so the shortest program in bytes wins!
Leaderboard
var QUESTION_ID=63683,OVERRIDE_USER=8478;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?([-\.\d]+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Little new to codegolf, can I pick up the page and proof from files? Or do they have to come from user I/O? – wnnmaw – 2015-11-12T20:38:52.550
@wnnmaw welcome to code golf! If it is better, you may choose to read from a file. – Conor O'Brien – 2015-11-12T21:32:05.237
Possible dupe – Mego – 2015-11-17T04:09:50.460
@Mego Not quite. This wants you to recognize a "margin", in addition; that text must have been justified, not merely split. – Conor O'Brien – 2015-11-17T13:43:08.243
Well, thanks for teaching me about lorem ipsum. :P – Rɪᴋᴇʀ – 2016-03-02T15:01:37.037