Output Perbedaan Faktor Kuboid
Tugas hari ini sangat sederhana: diberi bilangan bulat positif, menampilkan perwakilan dari setiap kuboid yang dapat dibentuk oleh faktor-faktornya.
Penjelasan
Volume berbentuk kubus adalah produk dari tiga sisi panjangnya. Misalnya, berbentuk kubus volume 4 yang timnya panjang adalah bilangan bulat dapat memiliki sisi [1, 1, 4]
, [1, 2, 2]
, [1, 4, 1]
, [2, 1, 2]
, [2, 2, 1]
, atau [4, 1, 1]
. Namun, beberapa di antaranya mewakili kuboid yang sama: misalnya [1, 1, 4]
dan [4, 1, 1]
berbentuk kubus yang sama diputar. Hanya ada dua kuboid berbeda dengan volume 4 dan sisi bilangan bulat: [1, 1, 4]
dan [1, 2, 2]
. Outputnya bisa berupa representasi kuboid pertama, dan representasi kuboid kedua.
Memasukkan
Program Anda harus mengambil satu bilangan bulat positif 1 ≤ n ≤ 231- 1 .
Keluaran
Anda harus mengeluarkan semua cuboids yang mungkin dalam daftar atau cara lain yang dapat diterima. Misalnya
Input Output
1 [[1, 1, 1]]
2 [[1, 1, 2]]
3 [[1, 1, 3]]
4 [[1, 1, 4], [1, 2, 2]]
8 [[1, 1, 8], [1, 2, 4], [2, 2, 2]]
12 [[1, 1, 12], [1, 2, 6], [1, 3, 4], [2, 2, 3]]
13 [[1, 1, 13]]
15 [[1, 1, 15], [1, 3, 5]]
18 [[1, 1, 18], [1, 2, 9], [1, 3, 6], [2, 3, 3]]
23 [[1, 1, 23]]
27 [[1, 1, 27], [1, 3, 9], [3, 3, 3]]
32 [[1, 1, 32], [1, 2, 16], [1, 4, 8], [2, 2, 8], [2, 4, 4]]
36 [[1, 1, 36], [1, 2, 18], [1, 3, 12],[1, 4, 9], [1, 6, 6], [2, 2, 9], [2, 3, 6], [3, 3, 4]]
Sub-daftar tidak perlu disortir, asalkan unik.
Mencetak gol
Ini kode golf, jadi jawaban tersingkat dalam byte menang. Celah standar dilarang.
Ini adalah generator test case
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=192852;
var OVERRIDE_USER=8478;
var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;function answersUrl(d){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+d+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(d,e){return"https://api.stackexchange.com/2.2/answers/"+e.join(";")+"/comments?page="+d+"&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(d){answers.push.apply(answers,d.items),answers_hash=[],answer_ids=[],d.items.forEach(function(e){e.comments=[];var f=+e.share_link.match(/\d+/);answer_ids.push(f),answers_hash[f]=e}),d.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(d){d.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),d.has_more?getComments():more_answers?getAnswers():process()}})}getAnswers();var SCORE_REG=function(){var d=String.raw`h\d`,e=String.raw`\-?\d+\.?\d*`,f=String.raw`[^\n<>]*`,g=String.raw`<s>${f}</s>|<strike>${f}</strike>|<del>${f}</del>`,h=String.raw`[^\n\d<>]*`,j=String.raw`<[^\n<>]+>`;return new RegExp(String.raw`<${d}>`+String.raw`\s*([^\n,]*[^\s,]),.*?`+String.raw`(${e})`+String.raw`(?=`+String.raw`${h}`+String.raw`(?:(?:${g}|${j})${h})*`+String.raw`</${d}>`+String.raw`)`)}(),OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(d){return d.owner.display_name}function process(){var d=[];answers.forEach(function(n){var o=n.body;n.comments.forEach(function(q){OVERRIDE_REG.test(q.body)&&(o="<h1>"+q.body.replace(OVERRIDE_REG,"")+"</h1>")});var p=o.match(SCORE_REG);p&&d.push({user:getAuthorName(n),size:+p[2],language:p[1],link:n.share_link})}),d.sort(function(n,o){var p=n.size,q=o.size;return p-q});var e={},f=1,g=null,h=1;d.forEach(function(n){n.size!=g&&(h=f),g=n.size,++f;var o=jQuery("#answer-template").html();o=o.replace("{{PLACE}}",h+".").replace("{{NAME}}",n.user).replace("{{LANGUAGE}}",n.language).replace("{{SIZE}}",n.size).replace("{{LINK}}",n.link),o=jQuery(o),jQuery("#answers").append(o);var p=n.language;p=jQuery("<i>"+n.language+"</i>").text().toLowerCase(),e[p]=e[p]||{lang:n.language,user:n.user,size:n.size,link:n.link,uniq:p}});var j=[];for(var k in e)e.hasOwnProperty(k)&&j.push(e[k]);j.sort(function(n,o){return n.uniq>o.uniq?1:n.uniq<o.uniq?-1:0});for(var l=0;l<j.length;++l){var m=jQuery("#language-template").html(),k=j[l];m=m.replace("{{LANGUAGE}}",k.lang).replace("{{NAME}}",k.user).replace("{{SIZE}}",k.size).replace("{{LINK}}",k.link),m=jQuery(m),jQuery("#languages").append(m)}}
body{text-align:left!important}#answer-list{padding:10px;float:left}#language-list{padding:10px;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="https://cdn.sstatic.net/Sites/codegolf/primary.css?v=f52df912b654"> <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><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><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody> </table>
Jawaban:
Jelly , 7 byte
Tautan monadik yang menerima bilangan bulat positif yang menghasilkan daftar 3-daftar bilangan bulat positif.
Cobalah online!
Bagaimana?
sumber
JavaScript (V8) ,
6160 byteMencetak cuboids ke STDOUT.
Cobalah online!
Berkomentar
sumber
Haskell , 52 byte
Cobalah online!
Tuple dalam urutan menurun. "3" tampaknya merupakan angka yang cukup kecil yang menuliskan 3 loop itu lebih pendek dari apa pun yang umum yang dapat saya buat.
sumber
Python 3.8 (pra-rilis) ,
8380 byteCobalah online!
... mengalahkan versi dua putaran sebanyak tiga byte:
sumber
Jelly , 11 byte
Cobalah online!
Tautan monadik yang menggunakan bilangan bulat sebagai argumennya dan mengembalikan daftar daftar bilangan bulat.
Penjelasan
sumber
Haskell ,
67 6059 byteUntuk yang diberikann , ini menghasilkan semua 3-tupel dengan entri di { 1 , 2 , ... , n } dan menyaring yang valid. Untuk menjamin keunikan, kami mengharuskan tupel diurutkan.
Cobalah online!
sumber
Retina , 59 byte
Cobalah online! Tautan termasuk test suite. Penjelasan:
Konversikan ke unary.
Ulangi dua kali, bagilah angka terakhir pada setiap baris menjadi semua pasangan faktor yang memungkinkan. Tampilan di belakangnya serakah dan atomik, jadi setelah itu cocok dengan awalan nomor terakhir itu tidak akan mundur. Ini menghasilkan semua kemungkinan permutasi dari tiga faktor.
Hapus garis di mana faktor tidak dalam urutan menaik.
Konversikan ke desimal.
sumber
Pyth , 11 byte
Cobalah online!
sumber
05AB1E , 8 byte
Cobalah online!
sumber
C (dentang) , 89 byte
Cobalah online!
Port @Arnauld 👍
Disimpan 1 berkat format output @Jonathan Frech yang lebih baik
sumber
"%d %d %d\n"
~>"%d,%d,%d "
akan menghemat satu byte.Ikon , 87 byte
Cobalah online!
Tutup ke Python :)
sumber