Programlama Bulmacaları ve Kod Golf taco kamyonunu açtı ! Bu kelime çıktı ve şimdi Stack Exchange ağının her yerinden kullanıcılar lezzetli, otantik ASCII taco'larımızı denemeye geliyor . Herkesin siparişlerini zamanında almasını sağlamak için yardımınıza ihtiyacımız var. Yemek kamyonlarının içinde çok fazla yer yok, bu yüzden kodunuzun mümkün olduğunca kısa olması gerekiyor.
Şimdi bazı iş başında eğitim için.
Senin işin
STDIN'den bir sipariş okuyan tam bir program veya giriş olarak tek bir string sipariş alan bir fonksiyon yazın. Tacos siparişe göre STDOUT'a basılır.
Emir almak
Müşteriler siparişlerini STDIN ya da function argümanı ile verir. Siparişler, istenen süslemelerin virgülle ayrılmış listesi şeklinde olacaktır. Topinglerin verildiği sıra, tacoda göründükleri sırayı belirtir; ilk altta en üstte ve üstte en üstte olmak üzere. İşte stokta tuttuklarımız:
- Fasulyeler
- Pirinç
- Sebzeler
- Marul
- Guacamole
- Ekşi krema
- Salsa
Müşteriler en az 1 en fazla 5 en fazla 5 en fazla sipariş verebilir. Topingler belirgin olmak zorunda değildir.
Sipariş vermeden önce müşterilerin menüye aşina olduklarını ve bu nedenle tüm siparişlerin yalnızca stokta bulunduğumuz içerikleri içerdiğini varsayabilirsiniz. Yani, giriş her zaman geçerli olacaktır.
Takoları servis etmek
Müşteriler tacolarının STDOUT'a basılmasını talep ediyorlar. Yiyeceklerinde bazı lider veya iz bırakan boşluklarla iyi durumdalar.
Pazar araştırması, herkesin tacoyu kelime olarak yemek istediğini ve tüm kapaklardaki kelimelerin çok daha lezzetli olduğunu göstermektedir. Bu yüzden TÜM CAPS'ta boşluksuz boşlukları listeleyeceğiz.
Sanatsal sunumun yararına, sadece bir tortillaya malzeme sokamayız ve güzel diyebiliriz, yavaşça soldan sağa devirmek, gerektiği gibi sarmak ve tekrarlamak zorunda kalacağız. Her topping kendine en az 2 satır alır. Numune tabağını incelediğimizde bunların hepsi daha netleşecektir.
Örnek tabağı
Bazı örnek siparişlere bir göz atalım.
Müşteri siparişleri: Beans,Veggies,Rice,Lettuce,Sour Cream
Biz teslim ediyoruz:
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
Oldukça lezzetli görünüyor değil mi? Topingler 6 karakterden sonra yeni bir satıra sarılır ve her biri 2 karakter doldurarak tekrar 12 karaktere bölünür. İlk madde üst satırında 6, ikinci satırında ise 4 karakter alır. Bu tortilla katına sığmasını sağlar. Benzer şekilde, son içerik daima en üst satırında 4, ikinci sekmesinde 6 karakter alır.
Bir müşteri arka arkaya aynı ikisinden iki sipariş verirse ne olur? Bu malzemeyi, art arda gelen tüm satırlar için sarmaya devam edin.
Müşteri siparişleri: Lettuce,Lettuce,Lettuce,Salsa
Biz teslim ediyoruz:
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
Müşteri siparişleri: Guacamole
T L
O I
R T
T R
I O
L GUAC T
L AMOLEG A
A UACA L
TORTIL
Sadece bir bileşen mi? Üstte 4 ekstra karakter verin.
Ayın çalışanları
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>
Mutlu yemek!