Програмування Головоломки та Код Гольф відкрив вантажівку тако ! Слово вимкнене, і тепер користувачі з усієї мережі Stack Exchange приїжджають спробувати наші смачні, справжні ASCII тако . Нам потрібна ваша допомога, щоб усі вчасно отримали свої замовлення. Всередині вантажних автомобілів для їжі не так багато місця, тому вам знадобиться, щоб ваш код був якомога коротшим.
Тепер для навчання на роботі.
Ваша робота
Напишіть повну програму, яка зчитує замовлення зі STDIN або функцію, яка отримує єдиний порядок рядків у якості введення. Тако друкується в STDOUT, виготовляється на замовлення.
Прийом замовлень
Клієнти віддадуть вам свої замовлення через STDIN або аргумент функції. Замовлення будуть у формі списку бажаних начинок, розділених комами. Порядок, в якому надаються начинки, диктує порядок їх відображення в тако, причому перший перелічений верхній набір і останній вгорі. Ось що ми маємо на складі:
- Квасоля
- Рис
- Овочі
- Листя салату
- Гуакамоле
- Сметана
- Сальса
Клієнти можуть замовити всього 1 начинку, але не більше 5 начинок. Начинки не повинні бути чіткими.
Ви можете припустити, що клієнти ознайомлюються з меню перед замовленням, і тому всі замовлення містять лише інгредієнти, які ми маємо на складі. Тобто вхід завжди буде дійсним.
Подають тако
Клієнти вимагають, щоб їхні файли були надруковані в STDOUT. Вони чудово поєднуються з деякими провідними або затримними пробілами в їжі.
Дослідження ринку показують, що всі хочуть їсти тако як слова, а слова в усіх шапках набагато смачніші. Таким чином, ми перерахуємо начинки у ВСІХ КАПАХ без пробілів.
В інтересах мистецької презентації, ми не можемо просто заплести речі в тортилью і назвати це добре, нам потрібно акуратно викласти начинки зліва направо, загортаючи і повторюючи за потребою. Кожен топінг отримує мінімум 2 рядки до себе. Це стане зрозумілішим, коли ми оглянемо тарілку.
Блюдо для зразків
Давайте розглянемо деякі зразки замовлень.
Клієнт замовляє: Beans,Veggies,Rice,Lettuce,Sour Cream
Ми постачаємо:
SOUR
CREAMS
T LETTUC L
O ELETTU I
R RICERI T
T CERICE R
I VEGGIE O
L SVEGGI T
L BEANSB A
A EANS L
TORTIL
Виглядає досить смачно, правда? Начинки загортаються після 6 символів до нового рядка і повторюються, щоб заповнити 2 рядки в кожному, усічені до 12 символів. Перший інгредієнт отримує 6 символів на верхній лінії, але лише 4 на другому рядку. Це забезпечує його прилягання до складки тортилії. Так само останній інгредієнт завжди отримує 4 символи на верхній лінії та 6 на другому.
Що станеться, якщо замовник замовляє два однакових заливки підряд? Продовжуйте обгортати цей інгредієнт для всіх послідовних ліній цього інгредієнта.
Клієнт замовляє: Lettuce,Lettuce,Lettuce,Salsa
Ми постачаємо:
T SALS L
O ASALSA I
R LETTUC T
T ELETTU R
I CELETT O
L UCELET T
L TUCELE A
A TTUC L
TORTIL
Клієнт замовляє: Guacamole
T L
O I
R T
T R
I O
L GUAC T
L AMOLEG A
A UACA L
TORTIL
Тільки один інгредієнт? Дайте 4 зайвих символів у верхній частині.
Співробітники місяця
var QUESTION_ID=65888,OVERRIDE_USER=20469;function answersUrl(e){return"https://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"https://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>
Щасливого приготування!