Dalam tantangan ini, tujuannya adalah menciptakan kembali Ensiklopedia On-Line dari Urutan Integer satu urutan pada satu waktu. Mirip dengan Evolusi Hello World , setiap jawaban tergantung pada jawaban sebelumnya.
Seiring waktu, tantangan ini akan menciptakan "silsilah keluarga" dari rangkaian OEIS. Sangat mudah untuk menambahkan ke pohon ini.
- Temukan jawaban sebelumnya, yang bisa berada di kedalaman N dari pohon.
- Tentukan angka N pertama yang dihasilkan oleh urutan jawaban itu.
- Temukan urutan dalam OEIS yang dimulai dengan angka-angka yang sama dan yang belum pernah digunakan sebelumnya.
- Tulis program untuk membuat urutan baru yang baru saja Anda temukan ini.
- Kirim jawaban Anda dengan kedalaman N +1
Karena tingkat jawaban Anda memengaruhi penilaian, Anda harus selalu menambahkan jawaban Anda ke pohon pada tingkat sedalam mungkin. Jika Anda tidak dapat memasukkan jawaban Anda di mana saja di pohon, Anda dapat memulai cabang pohon baru dan meletakkan jawaban Anda sebagai kedalaman 1.
Persyaratan Jawab
Ada beberapa cara untuk menampilkan urutan.
Opsi pertama adalah menulis program atau fungsi yang memasukkan angka (dari STDIN atau sebagai argumen) dan mengembalikan nomor ke-N dalam urutan yang Anda pilih. Anda dapat mengasumsikan bahwa urutannya akan ditentukan untuk N dan bahwa N dan S_N "berukuran cukup" (sehingga tidak akan menyebabkan luapan). Anda juga dapat menggunakan pengindeksan yang masuk akal, seperti 0 pengindeksan, 1 pengindeksan, atau pengindeksan yang tercantum di bawah "offset" pada halaman OEIS urutan, itu tidak masalah. Istilah yang diproduksi oleh indeks pertama harus cocok dengan istilah pertama dari entri OEIS.
Opsi kedua adalah menulis program atau fungsi yang memasukkan angka dan mengembalikan syarat N pertama dari urutan tersebut. Syarat-syarat pertama dari keluaran haruslah persyaratan pertama dari entri OEIS (Anda tidak dapat meninggalkan beberapa persyaratan pertama). Istilah berturut-turut harus dibatasi oleh deretan karakter non-digit yang sewenang-wenang, jadi 0,1 1.2/3,5;8,11
berfungsi tetapi 011235811
tidak masuk hitungan.
Opsi ketiga adalah membuat program yang menghasilkan aliran angka terus menerus. Demikian pula dengan opsi kedua, harus ada pembatas antara istilah yang berurutan.
Jawaban Anda harus berisi tajuk seperti ini untuk membantu penguraian Stack Snippet:
# [language], [number] bytes, depth [number], A[new sequence] from A[old sequence]
Jawaban Anda harus berisi kode untuk menghasilkan urutan, bersama dengan beberapa istilah pertama yang harus mengandung keturunan. Beberapa istilah ini harus didahului dengan kata yang tepatterms:
sehingga pengontrol dapat menggunakannya sebagai bagian dari diagram pohon. Disarankan juga untuk menulis deskripsi urutan yang Anda pilih.
Jika posting Anda adalah jawaban kedalaman 1 dan dengan demikian tidak memiliki leluhur, Anda cukup menghilangkannya from A[number]
di header Anda.
Ini adalah contoh jawaban:
# Perl, 26 bytes, depth 3, A026305 from A084912
various code here
and here
The next answer should match the following terms:
1, 4, 20
This sequence is .... and does ....
Persyaratan Chaining
Untuk menjadikan tantangan ini lebih adil, ada batasan untuk jawaban mana Anda bisa mengaitkan jawaban Anda. Aturan-aturan ini sebagian besar untuk mencegah satu orang dari membuat seluruh cabang pohon sendiri atau memiliki banyak "root" node.
- Anda tidak dapat rantai ke diri sendiri.
- Anda tidak dapat secara langsung mengaitkan dua jawaban Anda ke leluhur yang sama.
- Anda tidak dapat membuat lebih dari satu jawaban "Tingkat 1".
Juga, jika leluhurnya memiliki kedalaman N, pos Anda harus memiliki kedalaman N + 1, bahkan jika lebih dari jumlah persyaratan yang disyaratkan.
Mencetak gol
Skor Anda sebagai pengguna adalah jumlah dari semua jawaban Anda. Skor satu jawaban ditentukan oleh rumus berikut:
Answer Score = Sqrt(Depth) * 1024 / (Length + 256)
Sistem penilaian ini harus mendorong pengguna untuk mengirimkan sejumlah besar jawaban yang lebih dalam. Jawaban yang lebih pendek lebih disukai daripada jawaban yang lebih panjang, tetapi kedalaman memiliki pengaruh yang jauh lebih besar.
Di bawah ini adalah cuplikan tumpukan yang menghasilkan leaderboard serta diagram pohon dari semua jawaban. Saya ingin mengucapkan terima kasih kepada Martin Büttner dan d3noob sebagai sumber untuk banyak kode ini. Anda harus mengklik "Layar penuh" untuk melihat hasil lengkap.
function answersUrl(t){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+t+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(t){answers.push.apply(answers,t.items),t.has_more?getAnswers():process()}})}function shouldHaveHeading(t){var e=!1,r=t.body_markdown.split("\n");try{e|=/^#/.test(t.body_markdown),e|=["-","="].indexOf(r[1][0])>-1,e&=LANGUAGE_REG.test(t.body_markdown)}catch(a){}return e}function shouldHaveScore(t){var e=!1;try{e|=SIZE_REG.test(t.body_markdown.split("\n")[0])}catch(r){}return e}function getAuthorName(t){return t.owner.display_name}function decodeEntities(t){return $("<textarea>").html(t).text()}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.reverse();var t={},e=[],r=1,a=null,n=1,s=[];answers.forEach(function(t){var r=t.body_markdown.split("\n")[0],a=getAuthorName(t),n=r.match(SEQUENCE_REG)[0];n=n.trim();var o="from A000000";PARENT_REG.test(r)&&(o=r.match(PARENT_REG)[0]),o=o.substring(5).trim(),"A000000"==o&&(o="OEIS");var i="";SEQDATA_REG.test(t.body_markdown)&&(i=t.body_markdown.match(SEQDATA_REG)[1]);for(var u=!0,c=0;c<e.length;++c)u=u&&!(e[c]===n);for(var l=!0,c=0;c<e.length;++c)l=!(!l||e[c]===n||e[c]===n+a||e[c]===o+a);e.push(n),e.push(n+a),e.push(o+a),u&&data.push({name:n,parent:o,term:i+" : ",author:decodeEntities(a),URL:t.share_link}),l&&s.push(t)}),answers.sort(function(t,e){var r=t.body_markdown.split("\n")[0].match(SEQUENCE_REG),a=e.body_markdown.split("\n")[0].match(SEQUENCE_REG);return a>r?-1:r>a?1:void 0}),answers.forEach(function(e){var o=e.body_markdown.split("\n")[0],i=(o.match(NUMBER_REG)[0],(o.match(SIZE_REG)||[0])[0]),u=parseInt((o.match(DEPTH_REG)||[0])[0]).toString(),c=o.match(SEQUENCE_REG)[0],l="from A000000";PARENT_REG.test(o)&&(l=o.match(PARENT_REG)[0]),l=l.substring(5);var d=o.match(LANGUAGE_REG)[1];d.indexOf("]")>0&&(d=d.substring(1,d.indexOf("]")));for(var p=getAuthorName(e),E=!1,h=0;h<s.length;++h)E=E||s[h]===e;if(E){var f=jQuery("#answer-template").html();i!=a&&(n=r),a=i,++r;var m=1024*Math.pow(parseInt(u),.5)/(parseInt(i)+256);f=f.replace("{{SEQUENCE}}",c).replace("{{SEQUENCE}}",c).replace("{{NAME}}",p).replace("{{LANGUAGE}}",d).replace("{{SIZE}}",i).replace("{{DEPTH}}",u).replace("{{LINK}}",e.share_link),f=jQuery(f),jQuery("#answers").append(f),t[p]=t[p]||{lang:d,user:p,size:"0",numanswers:"0",link:e.share_link},t[p].size=(parseFloat(t[p].size)+m).toString(),t[p].numanswers=(parseInt(t[p].numanswers)+1).toString()}});var o=[];for(var i in t)t.hasOwnProperty(i)&&o.push(t[i]);o.sort(function(t,e){return parseFloat(t.size)>parseFloat(e.size)?-1:parseFloat(t.size)<parseFloat(e.size)?1:0});for(var u=0;u<o.length;++u){var c=jQuery("#language-template").html(),i=o[u];c=c.replace("{{RANK}}",u+1+".").replace("{{NAME}}",i.user).replace("{{NUMANSWERS}}",i.numanswers).replace("{{SIZE}}",i.size),c=jQuery(c),jQuery("#languages").append(c)}createTree()}function createTree(){function t(){var t=i.nodes(root).reverse(),e=i.links(t);t.forEach(function(t){t.y=180*t.depth});var r=c.selectAll("g.node").data(t,function(t){return t.id||(t.id=++o)}),a=r.enter().append("g").attr("class","node").attr("transform",function(t){return"translate("+t.y+","+t.x+")"});a.append("a").attr("xlink:href",function(t){return t.URL}).append("circle").attr("r",10).style("fill","#fff"),a.append("text").attr("x",function(){return 0}).attr("y",function(){return 20}).attr("dy",".35em").attr("text-anchor",function(){return"middle"}).text(function(t){return t.term+t.name}).style("fill-opacity",1),a.append("text").attr("x",function(){return 0}).attr("y",function(){return 35}).attr("dy",".35em").attr("text-anchor",function(){return"middle"}).text(function(t){return t.author}).style("fill-opacity",1);var n=c.selectAll("path.link").data(e,function(t){return t.target.id});n.enter().insert("path","g").attr("class","link").attr("d",u)}var e=data.reduce(function(t,e){return t[e.name]=e,t},{}),r=[];data.forEach(function(t){var a=e[t.parent];a?(a.children||(a.children=[])).push(t):r.push(t)});var a={top:20,right:120,bottom:20,left:120},n=3203-a.right-a.left,s=4003-a.top-a.bottom,o=0,i=d3.layout.tree().size([s,n]),u=d3.svg.diagonal().projection(function(t){return[t.y,t.x]}),c=d3.select("body").append("svg").attr("width",n+a.right+a.left).attr("height",s+a.top+a.bottom).append("g").attr("transform","translate("+a.left+","+a.top+")");root=r[0],t(root)}var QUESTION_ID=49223,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",data=[{name:"OEIS",parent:"null",term:"",author:"",URL:"https://oeis.org/"}],answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*,)/,DEPTH_REG=/\d+, A/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/,SEQUENCE_REG=/A\d+/,PARENT_REG=/from\s*A\d+/,SEQDATA_REG=/terms:\s*(?:(?:-)?\d+,\s*)*((?:-)?\d+)/;
body{text-align: left !important}#answer-list{padding: 10px; width: 550px; float: left;}#language-list{padding: 10px; width: 290px; float: left;}table thead{font-weight: bold;}table td{padding: 5px;}.node circle{fill: #fff; stroke: steelblue; stroke-width: 3px;}.node text{font: 12px sans-serif;}.link{fill: none; stroke: #ccc; stroke-width: 2px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script src="http://d3js.org/d3.v3.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="answer-list"> <h2>Sequence List</h2> <table class="answer-list"> <thead> <tr> <td>Sequence</td><td>Author</td><td>Language</td><td>Size</td><td>Depth</td></tr></thead> <tbody id="answers"></tbody> </table></div><div id="language-list"> <h2>Leaderboard</h2> <table class="language-list"> <thead> <tr> <td>Rank</td><td>User</td><td>Answers</td><td>Score</td></tr></thead> <tbody id="languages"></tbody> </table></div><table style="display: none"> <tbody id="answer-template"> <tr> <td><a href="https://oeis.org/{{SEQUENCE}}">{{SEQUENCE}}</a></td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td>{{DEPTH}}</td><td><a href="{{LINK}}">Link</a> </td></tr></tbody></table><table style="display: none"> <tbody id="language-template"> <tr> <td>{{RANK}}</td><td>{{NAME}}</td><td>{{NUMANSWERS}}</td><td>{{SIZE}}</td></tr></tbody></table>