var QUESTION_ID=165314,OVERRIDE_USER=8478;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>
Jawaban:
Python 3 ,
2725 byteCobalah online!
sumber
Jelly , 4 byte
Cobalah online!
Bagaimana itu bekerja
sumber
APL (Dyalog) , 5 byte
Cobalah online!
Referensi yang berguna
∧=⌊
: Mengembalikan1
jika kelipatan umum terendah sama dengan minimum. Ini hanya benar jika salah satu nilai adalah nol, atau keduanya sama. Atau saya bisa=*⌊
⌈×
: Maksimum dikalikan dengan yang di atas.sumber
Bahasa Pemrograman Shakespeare , 296 byte
Cobalah online!
Partisipasi pertama untuk tantangan kode-golf, jadi mari kita mulai dengan salah satu bahasa lelucon favorit saya!
Penjelasan: Deklarasi dua variabel Ford dan Ajax (nama variabel terpendek tersedia)
Adegan Pertama: Masukkan dua nilai ke dalam variabel, kemudian uji untuk kesetaraan, lalu uji Ajax terhadap 0. Jika nilai yang harus kita kembalikan disimpan dalam variabel Ford, pergi ke Adegan C.
Jika Ford bernilai 0, cetak Ajax, jika tidak set Ajax sebagai 0 lalu cetak Ajax. Lalu pergi ke akhir program.
Adegan C: Cetak Ford
Adegan V: Akhir dari program.
sumber
Ruby , 21 byte
Cobalah online!
Karena Ruby
Penjelasan singkat:
a|b
bitwse OR, jadi itu memberi kita angka yang tepat jika a == b atau salah satunya adalah nol.Angka ajaib
531
adalah 2 ^ 9 + 2 ^ 4 + 2 ^ 1 + 2 ^ 0, dan operator [] mengekstrak bit tunggal. Ini berarti: kalikan dengan 1 jika a * b adalah 0, 1, 2, 4 atau 9, kalikan dengan 0 sebaliknya.sumber
Haskell , 25 byte
Cobalah online!
sumber
JavaScript (Node.js) , 17 byte, port entah bagaimana dari jawaban Python
Cobalah online!
JavaScript (Node.js) , 21 byte
Cobalah online!
sumber
?0:
... Bisakah Anda melakukannya||
, atau apakah presedensi mengacaukannya??0:
berarti mengembalikan nol jika cond tidak nol,||
mengembalikan non-nol jika cond tidak nolPyth ,
87 byteCobalah online!
Kasus 1 - Keduanya bernilai nol dan sama
Kasus 2 - Keduanya bernilai bukan nol dan tidak sama
Kasus 3 - Persis satu nilai nol
Kasus 4 - Keduanya bernilai nol
Solusi alternatif, juga 7 byte
Cobalah online
Versi sebelumnya, 8 byte
sumber
@{+0Q3
bekerja selama 6 byte.Java 8, 20 byte
Lambda kari. Dicuri dari sini .
sumber
Stax , 8 byte
Jalankan dan debug itu
Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.
Jalankan yang ini
sumber
Brain-Flak , 32 byte
Cobalah online!
sumber
(pengiriman pertama jadi tolong jangan menendang terlalu keras)
Python 2 ,
57 4443 byteCobalah online!
(Dikompres sedikit setelah melihat jawaban python pertama )
sumber
C (gcc), 25 byte
f(a,b){a=a^b&&a*b?0:a|b;}
pseudo-code:
sumber
C (gcc), 26 byte
Cobalah online!
Ekspansi / Tidak Terkumpul:
sumber
MATL , 9 byte
Cobalah online!
Penjelasan:
sumber
t?td~*]X>
GNU sed, 23 byte
(harus dijalankan dengan
-r
bendera)Cobalah online!
sumber
QBasic, 34 byte
Pendekatan yang berbeda!
Perhatikan bahwa nilai-nilai bukan nol dalam kisi-kisi keluaran adalah bitwise
OR
dari dua angka input. Ini hanyaa OR b
di QBasic. Kami ingin menampilkan nilai ini kapana*b=0 OR a=b
, dan0
sebaliknya, yang dapat kami lakukan dengan mengalikannya dengan negatif dari persyaratan yang disebutkan di atas (negatif, karena kebenaran ada-1
dalam QBasic).sumber
brainfuck, 25 byte
Input adalah nilai dua byte (bukan ascii)
sumber
Swift , 118 byte
sumber
!=
dan ternary.n1
dann2
untuk karakter tunggal untuk mempersingkat mereka; hapus beberapa spasi putih dan kurung, dan hapus beberapa spasi. Selain itu,==0
bisa<1
dan!=0
bisa>0
, karena kita tahu hanya input0,1,2,3
yang mungkin. Belum pernah diprogram dalam Swift sebelumnya, tetapi saya mendapatkannya hingga 91 byte seperti ini:func c(a:Int,b:Int){a==b ?print("\(a)"):a*b>0 ?print("0"):a<1 ?print("\(b)"):print("\(a)")}
Coba online.func c(a:Int,b:Int){print(a==b||a*b<1 ?max(a,b):0)}
Coba online. Sekali lagi selamat datang di PPCG, dan nikmati masa tinggal Anda!{$0==$1||1>$0*$1 ?max($0,$1):0}
Cobalah secara online!Batch,
38363530 bytePort of @ Dennis's Python menjawab, karena persyaratan terlalu mahal di Batch.
sumber
Brachylog , 10 byte
Cobalah online!
sumber
J ,
87 byte1 byte disimpan oleh H.PWiz.
Cobalah online!
Port AJ dari solusi APL H.PWiz
=
apakah angkanya sama? (hasil dalam 1 atau 0)^
untuk kekuatan<.
jumlah yang lebih kecil*
dikalikan dengan>.
jumlah yang lebih besarsumber
>.*=^<.
untuk 7 byte=
dan^
!05AB1E ,
98 byte-1 byte terima kasih kepada @MagicOctopusUrn .
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Penjelasan umum:
sumber
Ës0å~iZë0
adalah milikku; bagus Tidak benar-benar yakin Anda bisa mengalahkan 9 byte dengan banyak.à®Ë®P_+*
mana_
secara logis setara dengan>Θ
_
mengubah 0 menjadi 1, semua nilai lainnya menjadi 0.== 0
perintah, tidak tahu_
persis seperti itu. Seharusnya bermanfaat untuk tantangan lain di masa depan juga. TIL. :)Javascript, 35 byte
sumber
05AB1E , 6 byte
Cobalah online!
Port (ish) dari jawaban Pyth saya .
Header / footer TIO diambil dari jawaban Emigna
sumber
Javascript ES6,
25222120 byte1413 byte , Jika argumen disediakan dalam urutansumber
Python 2 ,
3428 byteCobalah online!
-6 dengan terima kasih kepada @Dennis
sumber
[0<i!=j>0]
menghemat beberapa byte.QBasic,
383635 byteSebagian terinspirasi oleh jawaban Erik
IF ... THEN ... ELSE
, ini solusi matematika saja.Bagaimana saya sampai di sini
Catatan penting untuk memahami matematika dengan persyaratan: dalam QBasic, hasil dari operator perbandingan adalah
0
dan-1
, bukan0
dan1
.Kita mulai dengan kode Erik:
Dengan kata lain, jika
a
danb
keduanya bukan nol, maka cetaka*-(a=b)
(a
jikaa=b
, sebaliknya0
); lain (setidaknya satua
danb
nol), outputa+b
(angka bukan nol, atau0
jika keduanya nol).Sudah ada beberapa matematika dengan persyaratan yang terjadi di sini. Mari kita selangkah lebih jauh dan lihat apakah kita bisa menghilangkan
IF
pernyataan itu sepenuhnya. Kita harus menggunakana*b>0
untuk kondisi luar:a*b
dapat memiliki beberapa nilai kebenaran yang berbeda, yang bagus untukIF
tetapi menyebabkan masalah untuk matematika.Ini adalah trik standar dari
IF
-elimination. Kapanc
benar,c*a*(a=b)
adalah-a*(a=b)
dan(c+1)*(a+b)
sedang0
; ketikac
salah,c*a*(a=b)
adalah0
dan(c+1)*(a+b)
sekaranga+b
. Jadi ungkapan ini memberikan hasil yang sama denganIF ... THEN ... ELSE
. Satu-satunya masalah adalah, itu membuat program kita 40 byte, bukan 38. Mungkin kita bisa mempersingkatnya dengan mengatur ulang matematika.Masih 40 byte ...
Sekarang program kami kembali ke 38 byte. Tetapi karena kita hanya menggunakan
c
sekali, kita tidak harus menugaskannya ke variabel lagi:Sekarang kita turun ke 36 byte.
Tapi tunggu ada lagi ... Itu
a+b+a*(a=b)
ekspresi terlihat berlebihan sedikit.a*(a=b)
adalah-a
jikaa=b
dan0
sebaliknya. Ketika kita menambahkannyaa
, kita dapat0
jikaa=b
dana
sebaliknya. Mungkin kita dapat mencapai hal yang sama dalam lebih sedikit byte dengan membalikkan kondisinya.Pada awalnya, ini tidak terlihat lebih pendek. Tetapi kita dapat menyimpan byte dengan mengurangi alih-alih menambahkan negatif:
Dan di sana kami memiliki solusi 35-byte kami.
sumber
Bersih ,
464342 byteCobalah online!
Komposisi anonim
:: [Int] -> Int
, mengurutkan pasangan dan kemudian mencocokkan anggota pertama.Melakukannya sebagai lambda yang tersusun memiliki panjang yang sama:
sumber
Jelly ,
76 byteCobalah online! atau Coba semua kombinasi!
Bagaimana?
Menggunakan metode dalam jawaban APL , kami mendapatkan jumlah byte yang sama. Satu byte lebih panjang dari jawaban itu karena kelipatan umum terendah adalah dua byte.
6 byte
Cobalah online!
sumber
∧=⌊
dan=*⌊
. Yang kedua lebih disukai oleh Jelly=*⌊
harus dilakukan⌊
minimum. Atau bisa digunakan×
dalam kedua bahasa