इस चुनौती में, लक्ष्य एक बार में एक क्रम में इंटेगर सीक्वेंस के ऑन-लाइन विश्वकोश को फिर से बनाना है । हैलो वर्ल्ड के इवोल्यूशन के समान , प्रत्येक उत्तर पिछले उत्तर पर निर्भर करता है।
समय के साथ, यह चुनौती OEIS अनुक्रमों का "परिवार का पेड़" बनाएगी। इस पेड़ पर जोड़ना सरल है।
- पिछला उत्तर खोजें, जो पेड़ के किसी भी गहराई N पर हो सकता है।
- उस उत्तर के अनुक्रम द्वारा उत्पन्न पहले N संख्याओं का निर्धारण करें।
- OEIS में एक क्रम खोजें, जो उन्हीं नंबरों से शुरू होता है और जिनका पहले उपयोग नहीं किया गया है।
- इस नए अनुक्रम को बनाने के लिए एक प्रोग्राम लिखें जिसे आपने अभी पाया है।
- अपना उत्तर गहराई N + 1 के रूप में प्रस्तुत करें
चूंकि आपके उत्तर का स्तर स्कोरिंग को प्रभावित करता है, इसलिए आपको हमेशा पेड़ पर अपने उत्तर को सबसे गहरे स्तर पर जोड़ना चाहिए। यदि आप पेड़ पर कहीं भी अपना जवाब नहीं दे सकते हैं, तो आप पेड़ की एक नई शाखा शुरू कर सकते हैं और अपना उत्तर 1 गहराई पर रख सकते हैं।
उत्तर आवश्यकताएँ
अनुक्रम को आउटपुट करने के कुछ तरीके हैं।
पहला विकल्प एक प्रोग्राम या फ़ंक्शन लिखना है जो एक नंबर (STDIN या एक तर्क के रूप में) से इनपुट करता है और आपके चुने हुए क्रम में Nth नंबर देता है। आप यह मान सकते हैं कि अनुक्रम N के लिए परिभाषित किया जाएगा और यह कि N और S_N "यथोचित आकार" हैं (इसलिए यह अतिप्रवाह का कारण नहीं होगा)। आप किसी भी उचित अनुक्रमण का उपयोग कर सकते हैं, जैसे 0 अनुक्रमण, 1 अनुक्रमणिका, या अनुक्रम के OEIS पृष्ठ पर "ऑफ़सेट" के तहत सूचीबद्ध अनुक्रमण, जो कोई फर्क नहीं पड़ता। पहले इंडेक्स द्वारा निर्मित शब्द OEIS प्रविष्टि के पहले शब्द से मेल खाना चाहिए।
दूसरा विकल्प एक प्रोग्राम या फ़ंक्शन लिखना है जो एक नंबर पर इनपुट करता है और अनुक्रम के पहले एन शब्दों को वापस करता है। आउटपुट की पहली शर्तें OEIS प्रविष्टि की पहली शर्तें होनी चाहिए (आप पहले कुछ शब्दों को छोड़ नहीं सकते हैं)। गैर-वर्ण वर्णों के मनमाने तार द्वारा लगातार शब्दों को सीमांकित किया जाना चाहिए, इसलिए 0,1 1.2/3,5;8,11
काम करता है लेकिन 011235811
गिनती नहीं करता है।
तीसरा विकल्प एक प्रोग्राम बनाना है जो संख्याओं की एक सतत स्ट्रीम को आउटपुट करता है। दूसरे विकल्प के समान, लगातार शर्तों के बीच परिसीमन होना चाहिए।
आपके उत्तर में एक शीर्ष लेख होना चाहिए, जिसमें स्टैक स्निपेट पार्सिंग की सहायता की जा सकती है:
# [language], [number] bytes, depth [number], A[new sequence] from A[old sequence]
आपके उत्तर में अनुक्रम उत्पन्न करने के लिए कोड होना चाहिए, साथ ही पहले कुछ शर्तों के साथ जो किसी भी वंशज को शामिल करने की आवश्यकता होगी। इन कुछ शब्दों को सटीक शब्द से पहलेterms:
होना चाहिए ताकि नियंत्रक उन्हें पेड़ के आरेख के हिस्से के रूप में उपयोग कर सकें। आपके द्वारा चुने गए अनुक्रम का विवरण लिखने की भी सिफारिश की जाती है।
यदि आपकी पोस्ट एक गहराई 1 उत्तर है और इस प्रकार कोई पूर्वज नहीं है, तो आपको बस from A[number]
अपने हेडर में छोड़ देना चाहिए ।
यहाँ एक उदाहरण का जवाब है:
# 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 ....
चैनिंग आवश्यकताएँ
इस चुनौती को और अधिक उचित बनाने के लिए, ऐसे प्रतिबंध हैं जिन पर आप अपनी प्रतिक्रिया दे सकते हैं। ये नियम ज्यादातर किसी एक व्यक्ति को पेड़ की एक पूरी शाखा बनाने से रोकते हैं या बहुत सारे "रूट" नोड्स के मालिक हैं।
- आप अपने आप को चेन नहीं कर सकते।
- आप सीधे अपने पूर्वजों के दो उत्तरों की श्रृंखला नहीं बना सकते।
- आप एक से अधिक "स्तर 1" उत्तर नहीं दे सकते।
इसके अलावा, यदि पूर्वज गहराई N का था, तो आपके पद की गहराई N + 1 होनी चाहिए, भले ही आवश्यक शर्तों से अधिक सहमत हों।
स्कोरिंग
एक उपयोगकर्ता के रूप में आपका स्कोर आपके सभी उत्तरों के अंकों का योग है। एकल उत्तर का स्कोर निम्नलिखित सूत्र द्वारा निर्धारित किया जाता है:
Answer Score = Sqrt(Depth) * 1024 / (Length + 256)
इस स्कोरिंग प्रणाली को उपयोगकर्ताओं को बड़ी संख्या में गहरे उत्तर प्रस्तुत करने के लिए प्रोत्साहित करना चाहिए। छोटे उत्तरों को लंबे उत्तरों की तुलना में अधिक पसंद किया जाता है, लेकिन गहराई का बहुत अधिक प्रभाव होता है।
नीचे एक स्टैक स्निपेट है जो लीडरबोर्ड के साथ-साथ सभी उत्तरों के ट्री आरेख उत्पन्न करता है। मैं मार्टिन बोउटनर और d3noob को इस कोड के बहुत सारे स्रोतों के लिए धन्यवाद देना चाहता हूं । पूर्ण परिणाम देखने के लिए आपको "पूर्ण स्क्रीन" पर क्लिक करना चाहिए।
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>