Saya perlu menyalakan lilin. Sebenarnya, saya perlu menyalakan lilin dengan jumlah sewenang - wenang . Tapi hanya yang bagus.
TUJUAN Diberikan blok teks (berisi lilin menyala, valid, dan tidak valid) dan angka N
sebagai input, tulis sebuah program atau fungsi yang menerangi jumlah yang sama persis dengan N
, dikurangi jumlah lilin yang sudah menyala. Jika N
lebih besar dari jumlah lilin yang valid, program harus mencetak jumlah lilin yang hilang dan valid. Jika tidak ada lilin, output seharusnya :(
.
Berikut ini beberapa lilin yang valid:
.
| . .
| | . \
| | | /
(diakhiri dengan .
, hanya mengandung |
atau seimbang, tidak selalu berdampingan \
dan /
, bisa panjang).
Berikut ini beberapa lilin yang tidak valid:
. . . .
\ | | |
| | |
\ . | !
(tidak seimbang \
, tidak ada lilin, terputus, non- |
karakter, tidak ditanam di tanah.)
Lilin yang menyala akan menggantikan lilin yang menyala .
dengan salah satu karakter berikut (pilihan Anda):
@ ^ & " ~
Anda harus menggunakan setidaknya satu, dan Anda mendapatkan -10%
bonus untuk setiap karakter yang digunakan dalam program Anda, sedemikian rupa sehingga setiap karakter dapat muncul pada lilin yang menyala. Jika Anda menggunakan 🔥
emoji, Anda mendapatkan -15
bonus byte, yang diterapkan sebelum persentase bonus, jika digunakan. COUNT BYTE DITUNDANG KE BAWAH!
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Contoh IO
input: 8,
. .
| . ! . . |. . . .
| | | | | | | | | |
output:
@ @
| @ ! @ @ |. @ @ @
| | | | | | | | | |
input: 14,
// nothing
output: :(
input: 15,
. .. . . ". .
| . || | | || !
output: 9 // more candles required; 15 - (6 unlit) = 9 (thanks to @AndersKaseorg for catching my mistakes (plural)!)
input: 7,
.
/ ~
| \ .
/ & " / |
\ | @ | | . . . . .
\ | | | | | 1 l I |
output:
&
/ ~
| \ .
/ & " / |
\ | @ | | ^ . . . 🔥
\ | | | | | 1 l I |
input: 5,
. . |
i Q no candl es . |3-.
output: :(
Papan peringkat
Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
# Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=59664,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>
Jawaban:
Haskell, ⌊ (269 byte - 15) · 0.9⁵⌋ = 149
Contoh dijalankan:
Asumsikan bahwa setiap baris input setidaknya sepanjang baris sebelumnya, sebagaimana diizinkan oleh salah satu komentar penulis.
sumber
Python 2, 529 byte dengan bonus, 303
Strategi:
Tes:
sumber
JavaScript (ES6), 328 byte (skor: 184)
Saya mencoba untuk mengalahkan solusi Haskell tapi itu sebenarnya entri yang cukup kompetitif mengingat semua logika yang perlu terjadi.
Skor dihitung sebagai
Math.floor((328-15)*Math.pow(0.9,5))
:, byte dihitung dalam file dengan pengkodean UTF-8, diuji dan dikonfirmasi denganio.js --harmony_arrow_functions
.Solusi :
Persyaratan : array harus berlapis ruang menjadi persegi panjang.
Penjelasan : semua eval insanity menetapkan satu variabel (variabel
k
ke stringreplace
untuk menyimpan beberapa byte) dan mencukur 11 byte dari string 339-byte, yang dapat saya batalkan golf seperti:Karena contoh I / Os diminta, inilah test suite yang saya jalankan,
sumber