Программирование Пазлы и Код Гольф открыл тако грузовик ! Слово отсутствует, и теперь пользователи со всей сети 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>
Приятного приготовления!