В этой задаче цель состоит в том, чтобы воссоздать онлайн -энциклопедию целочисленных последовательностей по одной последовательности за раз. Подобно Эволюции Hello World , каждый ответ зависит от предыдущего ответа.
Со временем эта задача создаст «семейное древо» последовательностей OEIS. Это просто добавить к этому дереву.
- Найти предыдущий ответ, который может быть на любой глубине N дерева.
- Определите первые N чисел, сгенерированных последовательностью этого ответа.
- Найдите в OEIS последовательность, начинающуюся с тех же номеров и ранее не использовавшуюся.
- Напишите программу для генерации этой новой последовательности, которую вы только что нашли.
- Отправьте свой ответ как глубину N + 1
Так как уровень вашего ответа влияет на оценку, вы всегда должны добавлять свой ответ в дерево на как можно более глубоком уровне. Если вы не можете разместить свой ответ где-нибудь на дереве, вы можете начать новую ветвь дерева и поставить свой ответ как глубина 1.
Требования к ответу
Есть несколько способов вывести последовательность.
Первый вариант - написать программу или функцию, которая вводит число (из STDIN или в качестве аргумента) и возвращает N-е число в выбранной вами последовательности. Вы можете предположить, что последовательность будет определена для N и что N и S_N имеют «разумный размер» (поэтому это не вызовет переполнения). Вы также можете использовать любое разумное индексирование, такое как индексирование 0, индексирование 1 или индексирование, указанное в разделе «смещение» на странице OEIS последовательности, это не имеет значения. Термин, созданный первым индексом, должен соответствовать первому члену записи OEIS.
Второй вариант - написать программу или функцию, которая вводит число и возвращает первые N членов последовательности. Первые условия вывода должны быть первыми условиями записи 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>
источник
Ответы:
В скобках, 150 байт, глубина 4, A000292 от A000290
Следующий ответ должен соответствовать следующим условиям:
Это последовательность тетраэдрических чисел, трехмерное обобщение треугольных чисел. Формула для этого
Parenthetic - это Lisp-подобный язык, который использует скобки для определения всего. Выше приведена функция,
()()()
которая принимаетn
и выводитT(n)
. Звоните как:аннотированный
источник
Стек для блинов, 118 байт, глубина 1, A000012
Следующий ответ должен соответствовать следующим условиям:
Это печатает наименьший делитель
n
. Протестировано с интерпретатором Python на вики-странице esolang . Интерпретатор ожидает, что~
в строке после будет обозначаться конец программы, после которого поступает ввод STDIN (который в любом случае будет игнорироваться).Соответствующие инструкции:
Предыдущий ответ
Этот печатает в бесконечном цикле. Дополнительные инструкции:
Существуют и другие инструкции, но даже в этом случае Pancake Stack очень громоздкий в использовании, из-за отсутствия числового вывода и доступа только к двум верхним элементам стека.
К сожалению, первая строка этой программы кажется необходимой для предотвращения ошибки, связанной с метками в интерпретаторе Python.
источник
Python, 31 байт, глубина 4, A010060 от A000045
Следующий ответ должен соответствовать следующим условиям:
Это мой любимый, и это последовательность Туэ-Морса . Есть как минимум два определения этого:
n
(используется выше), и0 -> 01 -> 0110 -> 01101001 -> ...
)Одна из многих интересных вещей в этой последовательности - если мы возьмем черепаху и сделаем:
мы получаем это:
Выглядит знакомо?
источник
MarioLANG, 265 байтов, глубина 3, A016957 от A006370
Следующий ответ должен соответствовать следующим условиям:
Последовательность - это просто арифметическая прогрессия
6n + 4
.MarioLANG - это эзотерический язык программирования, основанный на Super Mario. Расчеты выполняются в стиле Brainfuck - есть лента ячеек, которую вы можете увеличивать / уменьшать.
Соответствующие BF-подобные команды здесь:
Так где же Марио? Ну, Марио - это указатель вашей инструкции, и он начинает слева (где
;
находится). Марио продолжает выполнять инструкции, пока он на земле=
, и когда он падает, программа завершается.Соответствующие инструкции для этого:
В общем, программа делает это:
Протестировано с интерпретатором Ruby. Обратите внимание, что в языке много неопределенного поведения, например, что происходит с инструкциями, с которыми сталкивается Марио при падении, поэтому я старался избегать всего этого.
источник
Brainfuck, 2 байта, глубина 2, A000030 от A001477
A000030 - это последовательность начальных цифр неотрицательных целых чисел, поэтому она просто читает первый символ цифры и записывает его обратно. Следующая последовательность должна начинаться с терминов:
источник
Piet, 16 байтов, глубина 3, A000035 от A000030
Следующий ответ должен соответствовать следующим условиям:
Это Пит, поэтому «байты» - это действительно кодеки. Здесь это в большем размере кодера:
Программа просто читает
n
и выводитn
по модулю 2.источник
Marbelous, 7 байтов, глубина 3, A011760 от A000027
Прошло много времени с тех пор, как этот сайт видел Marbelous ответ!
Следующий ответ должен начинаться с терминов:
Вы можете попробовать код в интерпретаторе Stack Snippet в es1024 . Ввод задается через аргумент командной строки, и вы должны выбрать «Отображать вывод в виде десятичных чисел». В противном случае результат будет выводиться в виде байтового значения, что технически тоже хорошо .
Последовательность - это последовательность «кнопок лифта в США», то есть всех положительных целых чисел, кроме 13. Обратите внимание, что Marbelous ограничен 8-битными числами, но, насколько я знаю, нет зданий с примерно 256 этажами. :)
Marbelous - это двумерный язык, в котором данные проходят через код в виде шариков (байтовых значений), падающих по сетке.
}0
получает замену на первый аргумент командной строки.<D
является переключателем, который действует как пустая ячейка для шариков меньше 13 (D
находится в базе 36), так что входы с 1 по 12 проходят через незатронутые. Если мрамор равен или больше 13, мрамор отклоняется вправо и проходит через него,++
что увеличивает значение на 1. В любом случае мрамор затем падает с доски, что печатает его значение.источник
Рельс , 56 байтов, глубина 4, A033547 от A002378
Следующий ответ должен соответствовать следующим условиям:
Программа читает
n
из STDIN и выводитn*(n^2+5)/3
, что было предположением о магических числах для модели ядерной оболочки 1940-х годов.Железнодорожный транспорт - это двумерный язык, тематически ориентированный на железнодорожные пути. Приведенный выше код выполняется с использованием
@
отражателей, которые изменяют направление движения поезда, чтобы уменьшить количество новых строк. Вот это не разгромлено:Обратите внимание, как Rail начинается сверху слева и начинает двигаться вертикально вниз справа.
Используемые команды управления стеком:
Поезд разветвляется в развязках
>v<^
, поворачивая направо, если вершина стека верна, в противном случае оставляется, если ложьисточник
Звездный, 22 байта, глубина 4, A008619 от A000142
Следующий ответ должен соответствовать следующим условиям:
Последовательность состоит из натуральных чисел, повторенных дважды. Программа считывает число из STDIN и рассчитывает
1 + floor(n/2)
.Starry - это эзотерический язык, реализованный в Ruby, который был частью книги о ... создании эзотерических языков в Ruby. Каждая инструкция определяется количеством пробелов перед одним из
+*.,`'
. Все остальные символы игнорируются, поэтому приведенное выше эквивалентнокоторый выглядит намного более звездным! (обратите внимание на пробелы)
Соответствующие команды:
Предыдущий ответ, 53 байта
Это создает последовательность до бесконечности вместо этого. Некоторые дополнительные команды:
источник
Mathematica, 20 байтов, глубина 6, A037965 из A104631
Это безымянная функция, которая просто вычисляет определение последовательности. Следующая последовательность должна начинаться с терминов:
источник
CJam, 34 байта, глубина 14, A157271 из A238263
Следующий ответ должен начинаться с терминов:
но не осталось ничего, что еще не было сделано.
Позвольте
D(n)
быть набор первыхn
3-гладких чисел: это целые числа, чьи простые факторы являются подмножеством{2, 3}
. ПозвольтеS(n)
быть наибольшее подмножествоD(n)
которого не содержит ни одного подмножества формы{x, 2x}
или{y, 3y}
. Тогда A157271 это размерS(n)
.источник
Golfscript, 3 байта, глубина 3, A000290 от A000030
Следующий ответ должен соответствовать следующим условиям:
Эта последовательность представляет собой просто квадратные числа, поэтому программа берет число и выводит его квадрат.
источник
Прелюдия , 16 байтов, глубина 1, A000211
Я думал, что я начну дерево с менее очевидного начального числа. Это обобщенная последовательность Фибоначчи с определением
a(0) = 4
,a(1) = 3
,a(n) = a(n-1) + a(n-2) - 2
. Следовательно, это в основном простая адаптация моего решения Прелюдии Фибоначчи . Выше приведена программа, которая печатает бесконечный поток чисел. Предполагается, что интерпретатор Python выводит числа вместо отдельных символов.Следующий ответ должен начинаться с терминов:
источник
Клип, 0 байтов, глубина 2, A000027 от A000012
Учитывая число
n
, печатаетnth
число в последовательности1, 2, 3, 4...
Следующий ответ должен начинаться с терминов:
источник
J, 4 байта, глубина 4, A001563 от A000290
Следующий ответ должен соответствовать следующим условиям:
Эта последовательность является числом, умноженным на его факториал. В J
(fg)x
находитсяf(x,g(x))
здесьx*factorial(x)
.источник
*!
Mathematica, 48 байтов, глубина 5, A104631 от A001563
Следующий ответ должен соответствовать следующим условиям:
За исключением длинных имен функций, Mathematica совершенно не справляется с этой задачей. Этот просто коэффициент
x^(2n+1)
в расширенииисточник
Элемент , 13 байтов, глубина 3, A000045 от A000030
A000045 представляет числа Фибоначчи. Каждый член в последовательности является суммой двух предыдущих. Это примечательно, потому что соотношение между последовательными слагаемыми приближается к золотому сечению, также известному как фи. Несколько интересно, что запись OEIS начинается с
0, 1
общего1, 1
. Следующий ответ должен соответствовать условиям:источник
Прелюдия , 1 байт, глубина 2, A000004 от A001477
Следующий ответ должен соответствовать следующим условиям:
Эта программа принимает в
n
качестве входных данных, полностью игнорирует ее и выводит нулевую константу. ТребуетсяNUMERIC_OUTPUT = True
в интерпретаторе Python.Приятно, что в Prelude есть бесконечный запас нулей в нижней части стека, поэтому все, что было нужно, - это одна команда вывода.
источник
Perl, 10 байт, глубина 1, A001477
Чтобы начать, вот простая последовательность.
Это представляет неотрицательные числа 0, 1, 2, 3 и т. Д. Путем печати введенного номера. Следующая последовательность должна начинаться с терминов:
источник
GolfScript, 9 байтов, глубина 4, A051682 от A002275
Следующий ответ должен соответствовать следующим условиям:
При этом просто используется формула для шестигранных чисел, найденная на странице OEIS.
источник
Deadfish, 4 байта, глубина 2, A005563 от A001477
Эта последовательность определяется как
(n+1)^2-1
, что именно и делает эта программа. Поскольку Deadfish не имеет ввода, он предполагает, что аккумулятор находится на желаемом номере входа. Следующий ответ должен начинаться с терминов:источник
APL, 13 байтов, глубина 4, A000108 от A000142
Каталонские номера! Индексирование начинается с нуля для них. Следующий ответ должен начинаться с терминов:
источник
GolfScript, 31 байт, глубина 11, A029030 из A242681
Следующий ответ должен соответствовать следующим условиям:
но он не сможет: это лист дерева. Эта последовательность представляет собой количество способов обмена с монетами достоинством 1, 2, 10 и 11.
источник
Сетчатка , 1 байт, глубина 3, A055642 от A001333
Следующий ответ должен начинаться с терминов:
Я думаю, что это первый раз, когда я использовал Retina для чего-то другого, кроме режима замены. Если указан только один файл без каких-либо параметров, Retina принимает режим соответствия, который по умолчанию подсчитывает количество совпадений данного регулярного выражения во входных данных. Это регулярное выражение
.
и соответствует любому символу. Таким образом, эта программа возвращает количество цифр на входе, которое является A055642.источник
Клип , 24 байта, глубина 4, A049666 от A002275
Следующий ответ должен соответствовать следующим условиям:
Последовательность просто
Fibonacci(5n)/5
. Смотрите страницу примеров для объяснения.источник
Клип, 37 байтов, глубина 5, A227327 от A000292
Возможные способы выбора двух точек на треугольной сетке со стороны n, исключая повороты и отражения. Приведенный пример: для n = 3 есть 4 способа:
Следующая последовательность должна начинаться со следующих терминов:
источник
APL, 24 байта, глубина 6, A025581 от A182712
Последовательность A025581 является последовательностью ... Я не совсем уверен, чтобы быть честным. Это пугает меня.
Индексирование начинается с 0, и функция просто вычисляет последовательность по определению.
Следующая последовательность должна начинаться с терминов:
источник
> <>, 25 байтов, глубина 2, A001333 из A002522
Это числители непрерывных дробей, сходящихся к sqrt (2). Код требует, чтобы пользователь предварительно заполнил стек индексом конвергента, который должен быть возвращен. Индексирование начинается с 1. Следующий ответ должен начинаться с терминов:
источник
J, 44 байта, глубина 10, A242681 от A026233
Следующий ответ должен начинаться с терминов:
Что-то ближе к повседневной жизни: «количество способов, с помощью которых
n
можно получить очки, используя два дротика на стандартном дартс». Только неупорядоченная пара очков имеет значение. Начальное смещение равно двум, как на странице OEIS. Использование:источник
R, 20 байтов, глубина 11, A194964 из A242681
Следующий ответ должен соответствовать следующим условиям:
Последовательность A194964 дает для каждого n результат,
1+[n/sqrt(5)]
где[
означает «этаж». Функция R принимает ввод как стандартный ввод.источник