var QUESTION_ID=151130,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/151130/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:
Jelly , 7 byte
Cobalah online!
Menggunakan konvolusi (yang saya berkontribusi pada Jelly: D)
Bagaimana itu bekerja
sumber
<⁵Ạ
untuk output tanpa boolean TIDAK dilakukan di atasnya.JavaScript (ES6), 67 byte
Mengambil input sebagai 2 string dalam sintaks currying
(a)(b)
. Pengembalianfalse
untuk yang mudah atau yangtrue
tidak mudah.Uji kasus
Tampilkan cuplikan kode
Alt. versi (cacat),
645552 byteDisimpan 3 byte dengan mengambil string, seperti yang disarankan oleh @Shaggy
Seperti yang ditunjukkan oleh @LeakyNun, metode ini akan gagal pada beberapa bilangan bulat spesifik besar
Mengambil input sebagai 2 string dalam sintaks currying
(a)(b)
. Pengembaliantrue
untuk yang mudah atau yangfalse
tidak mudah.Uji kasus
Tampilkan cuplikan kode
Bagaimana?
Idenya di sini adalah untuk secara eksplisit mengekspos membawa dengan memasukkan nol sebelum setiap digit dari masing-masing faktor.
Contoh:
331 x 1021 menjadi 30301 x 1000201 , yang menghasilkan 30307090501, bukan 337951 . Dengan menambahkan nol di depan ke hasil dan mengelompokkan semua digit dengan 2, ini dapat ditulis sebagai 03 03 07 09 05 01 . Semua kelompok kurang dari 10 , yang berarti tidak akan ada bawaan dalam perkalian standar.
431 x 1021 menjadi 40301 x 1000201 , yang menghasilkan 40309100501 dan dapat ditulis sebagai 04 03 09 10 05 01 . Kali ini, kami memiliki 10 yang menunjukkan carry dalam multiplikasi standar.
sumber
108
di tengah mengacaukan algoritma Anda)Alice , 30 byte
Cobalah online!
Output
1
untuk mudah dan0
sulit.Angka-angka mudah dikalikan jika dan hanya jika jumlah digit produk sama dengan produk jumlah digit.
sumber
MATL , 10 byte
Keluaran
0
untuk mudah,1
untuk sulit.Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
R ,
13511010986 byteCobalah online!
Mengambil input sebagai string.Itu jelek tapi berhasil ™.Ini sekarang menggunakan pendekatan konvolusi, seperti dalam jawaban Leaky Nun , sehingga dibutuhkan input sebagai bilangan bulat, dan kembali
TRUE
untuk angka yang sulit dikalikan danFALSE
untuk yang mudah dikalikan.Saya selalu memiliki masalah dalam porting pendekatan konvolusi di masa lalu, tetapi hari ini saya akhirnya membaca dokumentasi :
Itu hanya konyol. Jadi ekstraksi digit dibalik untuk
n
, dan itu menjadi port jawaban Leaky Nun.sumber
Python 2 , 88 byte
Mengambil dua bilangan bulat sebagai input dan mengembalikan
False
(mudah dikalikan) atauTrue
(tidak).Cobalah online! (terlalu lambat untuk salah satu kasus uji)
sumber
len(`n+m`)
akan benar-benar gagal selama 40, 30 .len(`n+m`)+1
?len(`n`+`m`)
harus dilakukan.JavaScript (Node.js) ,
43413736 byteTerima kasih @ Dennis untuk ide menggunakan interpolasi string dalam jawaban ini dan menghemat 4 byte!
Terima kasih @ ØrjanJohansen untuk -1!
Cobalah online!
Tentu saja ketika basis tujuan kurang dari basis asli (seperti dalam jawaban Jelly saya, basis 2)
<
harus dibalik.sumber
Bahasa Wolfram (Mathematica) ,
75666556 byteCobalah online!
Menerima 2 input string
Penjelasan:
-9 untuk mengubah menggunakan string sebagai input
-1 untuk menggunakan operator infiks
-9 Terima kasih @MartinEnder untuk
Max
fungsinyasumber
Python 2 ,
158135123113 byte-12 byte berkat Leaky Nun -10 byte berkat ovs
Cobalah online! atau Coba semua test case
sumber
all(d[k]<10for k in d)
berfungsi atau hanya Python 3?Julia 0,6 , 30 byte
Cobalah online!
Input adalah tupel angka, output
true
untuk angka yang sulit dikalikan dan yangfalse
mudah..
adalah aplikasi fungsi elemen-bijaksana....
memperluas tuple (daftar digit bilangan bulat) ke dua inputconv
fungsi yang terpisah.sumber
Python 3 ,
5835 134039 byteSepertinya saya punya ide ini dua jam terlambat .
Terima kasih kepada @ ØrjanJohansen karena bermain golf 1 byte!
Cobalah online!
sumber
SNOBOL4 (CSNOBOL4) ,
268264247246243131 byteCobalah online!
Port pendekatan oleh Nitrodon . Saya pikir ini adalah pertama kalinya saya mendefinisikan sebuah fungsi di SNOBOL,
D
untuk jumlah digit.versi lama, 243 byte:
Cobalah online!
Input pada STDIN dipisahkan oleh baris baru, output ke STDOUT: baris baru tunggal untuk mudah dikalikan, dan tidak ada output untuk tidak mudah dikalikan.
Ini tidak akan memenangkan penghargaan apa pun, tetapi memberikan pendekatan lain (yah, sungguh ini adalah pendekatan naif). Saya tidak berpikir saya bisa menulis ini di cubix, tetapi SNOBOL cukup sulit untuk digunakan.
Karena mengambil input sebagai string, ini akan berfungsi untuk input apa pun dengan masing-masing kurang dari 512 digit; Saya tidak 100% yakin seberapa besarARRAY
SNOBOL.INPUT buffered dalam versi SNOBOL ini untuk memiliki lebar maksimum 1024 karakter; semua karakter lain kemudian hilang. Tampaknya ARRAY bisa sangat besar; lebih dari 2048 sel yang diperlukan.
sumber
Arang , 38 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Output a
-
ketika angkanya mudah dikalikan. Penjelasan:Inisialisasi
z
ke array angka (jumlah panjang input) yang cukup besar.Loop di atas indeks input
q
danh
.Lakukan satu langkah penggandaan panjang.
Periksa untuk membawa.
sumber
Pari / GP , 52 byte
Cobalah online!
sumber
Haskell,
8281 byteAngka-angka yang diambil sebagai string. Kembali
False
jika jumlahnya mudah untuk dikalikan danTrue
sebaliknya.Cobalah online!
Saya pikir itu cukup berbeda dari jawaban @ Laikoni . Bagaimana itu bekerja:
sumber
Haskell ,
4544 byteEdit:
==
menjadi<
.Saya memikirkan hal ini sebelum melihat jawaban yang lain, kemudian menemukan bahwa yang Alice menggunakan ide dasar yang sama. Tetap memposting karena lebih pendek daripada jawaban Haskell lainnya.
?
membutuhkan dua bilangan bulat dan mengembalikan aBool
. Gunakan sebagai331?1021
.False
berarti penggandaannya mudah.Cobalah online!
s
adalah fungsi yang menghitung jumlah digit bilangan bulat. (read.pure
Mengonversi karakter satu digit ke integer.)sumber
Ruby , 69 byte
Cobalah online!
sumber
Haskell , 123 byte
Cobalah online! Contoh penggunaan:
"331" % "1021"
hasilTrue
.sumber
Perl 5 , 100 + 2 (
-F
) = 102 byteCobalah online!
output false untuk mudah, benar untuk tidak mudah.
sumber
Jelly , 8 byte
Cobalah online!
Port jawaban Javascript saya . Tidak lebih pendek dari jawaban Jelly yang ada karena Jelly memiliki konvolusi bawaan yang kuat.
Ambil input sebagai daftar dua angka. Pengembalian
1
untuk mudah,0
karena tidak mudah.Penjelasan:
sumber
C (gcc) , 104 byte
Pada dasarnya lakukan perkalian "dengan tangan" ke r [] dan atur nilai kembali jika ada kolom yang lebih tinggi dari 9, karena itu berarti carry telah terjadi.
Anehnya, ini lebih pendek dari upaya pertama saya yang mengambil string sebagai argumen.
Cobalah online!
sumber