Terinspirasi oleh pertanyaan ini oleh @ CᴏɴᴏʀO'Bʀɪᴇɴ .
Diambil dari pertanyaan:
Tugas Anda sederhana: diberi dua bilangan bulat a dan b, output ∏ [a, b]; yaitu, produk dari kisaran antara a dan b. Anda dapat mengambil a dan b dalam format apa pun yang masuk akal, apakah itu argumen untuk fungsi, input daftar, STDIN, dan lain-lain. Anda dapat menampilkan dalam format apa pun yang masuk akal, seperti nilai balik (untuk fungsi) atau STDOUT. a akan selalu kurang dari b.
Perhatikan bahwa akhirnya mungkin eksklusif atau inklusif dari b. Saya tidak pilih-pilih. ^ _ ^
Perbedaan untuk tantangan ini adalah kita akan pilih-pilih tentang jenis jangkauan. Input adalah string dari bentuk [a,b]
, (a,b]
, [a,b)
, atau (a,b)
di mana []
merupakan batas inklusif dan ()
merupakan batas eksklusif. Mengingat batas-batas eksplisit, berikan produk kisaran. Kisaran input juga akan selalu menyertakan setidaknya 1 angka, rentang arti seperti (3,4)
tidak valid dan tidak perlu diuji.
Uji kasus
[a,b) => result
[2,5) => 24
[5,10) => 15120
[-4,3) => 0
[0,3) => 0
[-4,0) => 24
[a,b] => result
[2,5] => 120
[5,10] => 151200
[-4,3] => 0
[0,3] => 0
[-4,-1] => 24
(a,b] => result
(2,5] => 60
(5,10] => 30240
(-4,3] => 0
(0,3] => 6
(-4,-1] => -6
(a,b) => result
(2,5) => 12
(5,10) => 3024
(-4,3) => 0
(0,3) => 2
(-4,0) => -6
Ini adalah kode-golf , sehingga program terpendek dalam byte menang.
Papan peringkat
Cuplikan Stack di bagian bawah posting ini menghasilkan katalog dari jawaban a) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.
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 nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=66285,OVERRIDE_USER=44713;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>
Python 2, 72 byte
Untuk mengekstraksi angka yang kita evaluasi
s[1:-1]
, string input dengan ujungnya dihilangkan, yang memberikan tuple. Idenya adalah untuk mendapatkan manfaatrange
dari tuple ini dan mengambil produknya.Pemalsuan terjadi untuk menyesuaikan titik akhir. Titik akhir atas mudah, cukup potong elemen pertama jika input dimulai dengan
(
, dilakukan sebagai[s<'[':]
.Titik akhir lainnya lebih rumit. Python tidak memiliki cara bersih untuk menghapus elemen terakhir dari suatu daftar karena
l[:0]
menghapus semuanya. Jadi, kami melakukan sesuatu yang aneh. Kami memodifikasi string tuple sebelum dievaluasi untuk memakukan string"+True"
atau"+False"
tergantung pada apakah s berakhir pada]
atau)
. Hasilnya adalah sesuatu seperti3,7
menjadi3,7+False
yang mana3,7
,3,7+True
yang mana3,8
.Alternatif, lebih cantik 72:
sumber
Minecraft 15w35a +, ukuran program total 638 (lihat di bawah)
Sama seperti jawaban saya di sini , tetapi dimodifikasi. Karena Minecraft tidak memiliki input string, saya mengambil kebebasan menyimpan input papan skor. Jika itu masalah, pertimbangkan jawaban ini tidak kompetitif.
Ini menghitung
PI a,b
dengan inklusif / eksklusif yang ditentukan oleh dua tuas. Input diberikan dengan menggunakan dua perintah ini:/scoreboard players set A A {num}
dan/scoreboard players set B A {num}
. Ingatlah untuk menggunakan/scoreboard objectives add A dummy
sebelum input.Mencetak menggunakan:
{program size} + ( 2 * {input command} ) + {scoreboard command} = 538 + ( 2 * 33 ) + 34 = 638
.Kode ini sesuai dengan kode psued berikut:
Unduh dunia di sini .
sumber
Pyth, 20 byte
Cobalah online: Demonstrasi atau Test Suite
Penjelasan:
sumber
Ruby,
7977 byte79 byteTidak Disatukan:
Pemakaian:
sumber
Serius, 31 byte
Mengambil input sebagai string (dibungkus dengan tanda kutip ganda)
Coba online (input harus dimasukkan secara manual)
Penjelasan:
sumber
Python 3, 104
Mengambil input dari stdin.
sumber
MATLAB,
8670 byteIni juga berfungsi dengan Oktaf . Anda dapat mencoba online di sini . Saya telah menambahkan kode sebagai skrip ke ruang kerja itu, jadi Anda bisa langsung masuk
productRange
saat diminta, lalu masukkan input Anda, mis'(2,5]'
.Jadi, kode pertama memindai input untuk mengekstrak kurung dan angka bersama:
Ini mengembalikan array yang terbuat dari
[bracket, number, number, bracket]
.Array dibandingkan dengan
42
, sebenarnya jumlah antara 42 dan 90 inklusif akan dilakukan. Ini menentukan jenis braket mana itu, memberikan 1 jika braket eksklusif, dan 0 jika braket inklusif.Akhirnya, kami menampilkan produk dari rentang yang diperlukan:
Produk ini terdiri dari angka yang menatap nomor pertama
s(2)
plus jenis braket pertamaa(1)
(yang merupakan 1 jika braket eksklusif), berkisar hingga dan termasuk angka keduas(3)
minus jenis braket keduaa(4)
. Ini memberikan rentang inklusif / eksklusif yang benar.sumber
Julia, 75 byte
Ini adalah fungsi anonim yang menerima string dan mengembalikan integer. Untuk menyebutnya, berikan nama, mis
f=s->...
.Tidak Disatukan:
sumber
Mathematica, 128 byte
Ini terlalu lama ... Saat ini memikirkan solusi
StringReplace
+RegularExpression
.sumber
PowerShell,
146104 BytesGolf off 42 byte dengan mengubah cara angka diekstraksi dari input. Merayu!
sumber
Japt,
4341 byteCobalah online!
sumber
Perl 6 , 60 byte
Ada sedikit ketidaksesuaian karena cara Anda akan menulis
(2,5]
contoh di Perl 6 akan2^..5
([2^..5]
juga berfungsi).Jadi saya harus bertukar
(2
dengan[2^
, dan,
dengan..
, maka saya harusEVAL
mengubahnya menjadi Range.pemakaian:
sumber
CJam, 34 byte
Cobalah online
Penjelasan:
sumber
JavaScript (ES6), 90 byte
Penjelasan
Uji
Tampilkan cuplikan kode
sumber
R,
102104 byteTidak disatukan
sunting untuk memungkinkan angka negatif [dengan mengorbankan 2 karakter lagi
sumber
R
(dan tetap menjawab)JavaScript (ES6), 79
Sebagai metode anonim
Cuplikan tes
sumber