var QUESTION_ID=124242,OVERRIDE_USER=61474;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:+r.match(SCORE_REG)[0],language:r.match(LANG_REG)[0].replace(/<\/?[^>]*>/g,"").trim(),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=/\d+((?=$)|(?= Bytes))/i,OVERRIDE_REG=/^Override\s*header:\s*/i;LANG_REG=/^[^,(\n\r]+/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/Sites/codegolf/all.css?v=617d0685f6f3"> <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>
42
dua kali di dalamnya.Jawaban:
Mathematica, 15 byte
Hitungan byte mengasumsikan penyandian Windows ANSI (CP-1252).
Menentukan operator biner
±
yang memecahkan masalah. Kami hanya mendefinisikan6±9=42
sebagai kasus khusus yang diutamakan dan kemudian menambahkan definisi mundur yang±
sama dengan multiplikasi. Yang terakhir menggunakan trik golf yang cukup menarik. Alasan mengapa ini bekerja sebenarnya cukup rumit dan kita perlu melihat urutannya . Urutan mirip dengan apa yang dikenal sebagai percikan dalam bahasa lain. Ini pada dasarnya adalah "daftar" tanpa pembungkus di sekitarnya. Misalnyaf[1, Sequence[2, 3, 4], 5]
benar-benar adilf[1, 2, 3, 4, 5]
. Konsep penting lainnya adalah bahwa semua operator hanyalah gula sintaksis. Secara khusus,±
dapat digunakan sebagai operator unary atau biner dan mewakili kepalaPlusMinus
. Jadi±x
adalahPlusMinus[x]
dana±b
adalahPlusMinus[a,b]
.Sekarang kita punya definisi
±n__
. Ini adalah singkatan untuk mendefinisikanPlusMinus[n__]
. Tetapin__
mewakili urutan argumen yang sewenang-wenang . Jadi ini sebenarnya menambahkan definisi untuk kegunaan biner (dan n-ary)PlusMinus
juga. Nilai dari definisi ini adalah1n
. Bagaimana ini melipatgandakan argumen? Nah,1n
gunakan perkalian implisit Mathematica dengan menyandingkan sehingga setara dengan1*n
. Tetapi*
juga hanya singkatanTimes[1,n]
. Sekarang,n
adalah urutan argumen. Jadi jika kita memohona±b
maka ini akan benar-benar menjadiTimes[1,a,b]
. Dan itu baru sajaa*b
.Saya pikir cukup rapi bagaimana penyalahgunaan sintaksis ini memungkinkan kita mendefinisikan operator biner menggunakan sintaksis unary. Kita sekarang bahkan dapat melakukan
PlusMinus[2,3,4]
untuk menghitung24
(yang juga dapat ditulis sebagai±##&[2,3,4]
atau2±Sequence[3,4]
tetapi itu hanya menjadi gila pada saat itu).sumber
*
adalah operator bawaan , jadi Anda harusUnprotect
menambahkan definisi lebih lanjut, tetapiUnprotect[Times];6*9=42
harus bekerja (meskipun tidak dapat menguji sekarang).Haskell , 14 byte
Cobalah online!
sumber
C,
32312928 byte-2 Berkat Digital Trauma
-1 terima kasih ke musicman523
Cukup mudah. Mendeklarasikan fungsi makro
f
yang membutuhkan dua argumen,a
danb
.Jika
a
ini6
danb
adalah9
, kembali42
. Kalau tidak kembalikana
xb
.Cobalah online!
sumber
^
alih-alih==
dan sesuaikan logika sedikit:#define f(a,b)a^6||b^9?a*b:42
- menyimpan 2 byte.|
daripada||
menyimpan byte lain, karena masih memiliki prioritas lebih rendah daripada^
JavaScript (ES6), 20 byte
Penjelasan:
Iff x == 6 dan y == 9,
x-6|y-9
akan menjadi 0 (salah), dan 42 akan menjadi hasilnya.Potongan:
sumber
Python 2 ,
3029 byteTerima kasih kepada Jonathan Allan karena telah menghemat satu byte!
Cobalah online!
sumber
lambda x,y:x*[y,7][6==x==y-3]
05AB1E ,
15119 byte-4 byte terima kasih kepada @Emigna
-2 byte terima kasih kepada @Adnan
Cobalah online!
Bagaimana itu bekerja
sumber
‚D96SQi42ëP
,
di awal?6Qs9Q*
akan bekerja juga untuk jumlah byte yang sama.P¹69SQi42
Java (OpenJDK 8) ,
2422 byte-2 byte terima kasih kepada @ OlivierGrégoire
Cobalah online!
sumber
System.out.println()
panggilan dan membiarkan fungsinya mengembalikan hasilnya?(a^6|b^9)==0
karena tidak ada perbandingan "berbeda dari 0" yang implisit. Potongan kode yang dihasilkan akan sepanjang 27 byte. Bagaimanapun, terima kasih atas sarannya, dan tolong katakan padaku jika saya salah tip.int a = 5; if (a) do_some_stuff(); else do_other_stuff();
memberikanType mismatch: cannot convert from int to boolean
kesalahan kompilasi. Mereka harus dibuat secara eksplisit dengan nilai-nilai boolean; lihat SO dan ORACLE .a->b->a==6&b==9?42:a*b
.Ruby, 24 byte
sumber
a^6|b^9<1
mungkin bekerja sebagai boolean. Sulit untuk diuji pada ponsel cerdas saya.(((a^6)|b)^9)
, yaitua.^(6).|(b).^(9)
, jadi itu tidak akan berfungsi dengan benar.a-6|b-9==0
akan bekerja, tapi itu tidak lebih pendek.a,b==6,9
akan menyenangkan, tetapi juga tidak berhasil.Brain-Flak ,
158154148140138126 byteCobalah online!
Penjelasan
Kode ini cukup sederhana. Kami membuat salinan dari dua item teratas di tumpukan, kami mengurangi 6 dari satu dan 9 dari yang lain. Kami kemudian mengambil
not
dari dua nilai tersebut. Kamiand
nilai-nilai itu, kalikan hasilnya dengan 12. Kalikan input dan kurangi dua hasil.sumber
not
danand
(atau memilihnya kembali), membaca deskripsi Anda sehingga membuat saya tersandung.Factorio, 661 bytes, 6 combinators dengan 9 koneksi
Ada satu combinator konstan yang diatur ke output A dan B. Ubah ini untuk mengatur input.
String cetak biru (0.15.18):
Outputnya adalah sinyal Z dan harus diambil dari deciders atas dan bawah.
sumber
Jelly ,
87 byteInput adalah sebagai array dari dua bilangan bulat: pertama operan kanan, lalu yang kiri.
Cobalah online!
Bagaimana itu bekerja
sumber
Factorio, 581 bytes, 3 combinators dengan 4 koneksi
String cetak biru (0.16.36):
Combinator konstan kiri bawah harus diatur ke output A dan B sebagai input. Outputnya adalah sinyal Z dari kombinator aritmatika kanan bawah.
sumber
MATL , 11 byte
Input adalah array dengan dua angka.
Cobalah online!
Penjelasan
sumber
GW-BASIC , 55 byte
Keluaran:
Mesin pertama di pcjs memiliki IBM BASIC, yang praktis adalah hal yang sama. Untuk mengujinya, pergilah ke sana, tekan Runmesin, Tekan Enter- Enterdan ketik
BASICA
untuk masuk ke mode BASIC. Kemudian masukkan kode sumber (ini akan secara otomatis mencetak untuk Anda), ketikRUN
, masukkan dua bilangan bulat, dan selesai!sumber
INPUT
, dikodekan dalam lebih sedikit byte daripada karakter yang menyarankannya. Oleh karena itu penghitungan tampaknya tinggi bagi saya.wc
, dan saya mendapat 55 ... Copy-paste ke emulator saya dan itu memiliki perilaku yang diharapkan.OUT.BAS
: i.stack.imgur.com/32eH1.png Bytecount adalah nilai tengah.R , 33 byte
Mengembalikan fungsi.
Cobalah online!
sumber
Periksa ,
3433 byteCek esolang baruku. Menggunakan kombinasi semantik 2D dan 1D.
Input adalah dua angka yang dilewatkan melalui argumen baris perintah.
Penjelasan
Tumpukan dimulai dengan argumen baris perintah di atasnya. Mari kita panggil argumen
a
danb
.Bagian pertama
.:+&
,, pada dasarnya menduplikasi stack, meninggalkannya sebagaia, b, a, b
.>
mendorong 0 ke tumpukan (itu adalah bagian dari literal numerik yang diselesaikan oleh9
).#
beralih ke semantik 2D, danv
mengalihkan IP ke bawah. IP segera berjalan menjadi#
, yang beralih kembali ke semantik 1D lagi.9-!
memeriksa apakahb
sama dengan 9 (dengan mengurangi 9 dan mengambil TIDAK logis).\>6-!
kemudian periksa apakaha
sama dengan 6. Tumpukan sekarang berisia, b, 1, 1
jika dan hanya jikab==9
dana==6
. Mengalikan dengan*
mengambil logika DAN dari dua nilai ini, memberia, b, 1
jika inputnya6
dan9
, dana, b, 0
sebaliknya.Setelah ini, IP berjalan menjadi
?
. Ini akan beralih ke mode 2D jika nilai tumpukan teratas bukan nol, dan jika tidak akan berlanjut dalam mode 1D.Jika nilai tumpukan teratas adalah
1
, ini berarti bahwa nilai tumpukan lainnya adalah6
dan9
, jadi kami mendorong 42 ke tumpukan dengan>42
dan kemudian bergerak ke bawah ke yang kedua#
pada baris terakhir.Jika nilai tumpukan teratas adalah
0
, maka eksekusi turun ke baris berikutnya.d
menghapus0
(karena?
tidak melakukannya), dan kemudian kita mengalikan dua input dengan*
. The##
switch dan keluar dari mode 2D, melakukan apa-apa.Cabang-cabang sekarang telah bergabung lagi. Tumpukan berisi
6, 9, 1, 42
, ataua*b
.p
mencetak nilai tumpukan teratas dan kemudian program berakhir, membuang sisa tumpukan.sumber
JavaScript (ES6), 25 byte
sumber
Python 3 ,
3633 byteCobalah online!
sumber
lambda x:x[0]*x[1]if x!=(6,9)else 42
. Satu-satunya perbedaan adalah tipe input.f=lambda x,y:42if6==x==y-3else x*y
APL (Dyalog) , 10 byte
Cobalah online!
×
produk (dari argumen)-
minus12×
dua belas kali6 9≡
apakah (6,9) identik dengan,
Rangkaian (dari argumen)sumber
R, 41 Saya pikir saya tidak tahu bagaimana cara menghitung byte. Saya baru: D
Saya mendefinisikan funtion yang argumennya a dan b dalam urutan ini . Jika a sama dengan 6 dan b sama dengan 9, ia mengembalikan 42, jika tidak, a kali b
sumber
ifelse(a==6&b==9,42,a*b)
function(a,b)`if`(a-6|b-9,a*b,42)
.SPL , 356 byte
Dengan baris dan spasi baru:
sumber
Japt ,
131112 byteCobalah online
21 byte disimpan berkat obarakon.sumber
N¬¥69?42:N×
untuk 11 byteML Standar (MLton) ,
2220 byteDisimpan 2 byte berkat @Laikoni!
Cobalah online!
Ini adalah jenis hal yang dimaksudkan SML, itulah sebabnya ia mengalahkan shortC dan Python.
Versi lama terlihat jauh lebih bagus. : P
sumber
$
sebagai pengenal! Mengapa ini tidak dikompilasi jika Anda menghapus ruang antara|
dan$
?|$
diuraikan sebagai pengidentifikasi simbolis tunggal, jadi semuanya rusak. Saya berencana untuk menulis pertanyaan kiat untuk SML segera dan menambahkan jawaban tentang kedua jenis pengidentifikasi.Pyth, 12 byte
Cobalah online
Penjelasan
sumber
AQ?&q6Gq9G42*GH
Retina , 36 byte
Cobalah online! Perkalian unary standar, hanya mengubah input untuk menangani kasus khusus.
sumber
Jelly , 10 byte
Tautan monadik mengambil daftar dua angka.
Cobalah online!
Bagaimana?
sumber
?
, seperti yang saya lakukan. ;),
khusus karena merupakan bagian dari pola regex literal, sehingga6,9
diuraikan sebagai token tunggal dan cepat$
dapat menggabungkannya⁼
. Apakah Anda beralasan, atau hanya mencobanya dan perhatikan bahwa itu berhasil?Jelly , 9 byte
Cobalah online!
Mengambil daftar angka sebagai input.
sumber
SILOS ,
8167 byteCobalah online!
Dalam beberapa hal fungsi tambahan sebagai gerbang NAND yang menarik di SILOS.
-14 byte terima kasih kepada @Leaky Nun
Intinya kita membuat angka "a" yaitu 0 (falsy) iff j adalah 6 dan i = 9, maka kita membaginya dengan sendiri kurangi satu dan kalikan dengan 12 untuk menambah produk kita.
Jika "a" adalah 1 setelah mengurangi satu dan mengalikan, itu menjadi no-op, namun dalam kasus di mana a adalah 0, 0/0 diam-diam melempar kesalahan (yang ditangkap secara otomatis secara ajaib) a menjadi 0, dan kemudian menjadi -1 dan kami akhirnya mengurangi 12 dari produk kami.
sumber
0/0
menjadi0
.Cembung ,
161413 byteCobalah online!
sumber
shortC , 23 byte
Cobalah online!
sumber