Programming Puzzles & Code Golf telah membuka truk taco ! Kata itu keluar dan sekarang pengguna dari seluruh jaringan Stack Exchange datang untuk mencoba taco ASCII kami yang lezat dan otentik . Kami membutuhkan bantuan Anda untuk memastikan bahwa semua orang menerima pesanan mereka tepat waktu. Tidak ada banyak ruang di dalam truk makanan, jadi Anda perlu kode Anda sesingkat mungkin.
Sekarang untuk beberapa pelatihan di tempat kerja.
Pekerjaan Anda
Tulis program lengkap yang membaca perintah dari STDIN atau fungsi yang mendapat urutan string tunggal sebagai input. Taco dicetak ke STDOUT, dibuat sesuai pesanan.
Menerima pesanan
Pelanggan akan memberi Anda pesanan mereka melalui STDIN atau argumen fungsi. Pesanan akan dalam bentuk daftar topping yang diinginkan koma-dibatasi. Urutan pemberian topping menentukan urutan kemunculannya di taco, dengan topping yang terdaftar pertama di bagian bawah dan yang terakhir di atas. Inilah yang kami simpan:
- kacang polong
- Nasi
- Sayuran
- Selada
- guacamole
- Krim asam
- salsa
Pelanggan dapat memesan sedikitnya 1 topping tetapi tidak lebih dari 5 topping. Topping tidak perlu berbeda.
Anda dapat berasumsi bahwa pelanggan sudah familiar dengan menu sebelum memesan dan dengan demikian semua pesanan hanya akan mengandung bahan yang kami stok. Artinya, input akan selalu valid.
Melayani taco
Pelanggan meminta taco mereka dicetak ke STDOUT. Mereka baik-baik saja dengan ruang putih terkemuka atau tertinggal dalam makanan mereka.
Riset pasar menunjukkan bahwa semua orang ingin makan taco sebagai kata-kata, dan kata-kata dalam semua topi jauh lebih beraroma. Dengan demikian kami akan membuat daftar topping di SEMUA CAPS tanpa spasi.
Untuk kepentingan presentasi yang artistik, kita tidak bisa begitu saja memasukkan barang-barang ke dalam tortilla dan menyebutnya bagus, kita harus dengan lembut meletakkan topping dari kiri ke kanan, membungkus dan mengulangi sesuai kebutuhan. Setiap topping mendapatkan minimal 2 baris untuk dirinya sendiri. Ini semua akan menjadi lebih jelas setelah kami memeriksa piring sampel.
Piring sampel
Mari kita lihat beberapa pesanan sampel.
Pesanan pelanggan: Beans,Veggies,Rice,Lettuce,Sour Cream
Kami mengirimkan:
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
Terlihat sangat enak, bukan? Topping membungkus setelah 6 karakter ke baris baru dan diulang untuk masing-masing mengisi 2 baris, terpotong menjadi 12 karakter. Bahan pertama mendapat 6 karakter pada baris teratas tetapi hanya 4 pada baris kedua. Ini memastikan bahwa itu pas di lipatan tortilla. Demikian pula, bahan terakhir selalu mendapat 4 karakter di baris teratas dan 6 di kedua.
Apa yang terjadi jika pelanggan memesan dua topping yang sama berturut-turut? Terus bungkus bahan itu untuk semua baris berturut-turut bahan itu.
Pesanan pelanggan: Lettuce,Lettuce,Lettuce,Salsa
Kami mengirimkan:
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
Pesanan pelanggan: Guacamole
T L
O I
R T
T R
I O
L GUAC T
L AMOLEG A
A UACA L
TORTIL
Hanya satu bahan? Berikan nilai 4 karakter tambahan di atas.
Karyawan bulan ini
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>
Selamat memasak!
Python 3, 475 byte
Mungkin terlalu lama, tetapi saya mungkin juga memposting sesuatu!
sumber
r=(r+["TORTIL"])[::-1]
denganr=["TORTIL"]+r[::-1]
.range(0,l)
bisa jugarange(l)
.if l==2:q=s[0];s=[q,q,q];l=3
pada satu baris. 3.n(l)
melakukan hal yang sama dengann(0,l)
.Ruby,
376375368363362 byteMasih dalam proses.
(Bonus: Bekerja dengan topping sebanyak yang Anda inginkan, bukan hanya 5. Kebanyakan karena saya tidak melihat aturan itu pada awalnya> _ <)
Versi tidak disatukan:
sumber