Ewolucja OEIS

56

W tym wyzwaniu celem jest odtworzenie On-Line Encyclopedia of Integer Sequences po jednej sekwencji na raz. Podobnie jak w przypadku Evolution of Hello World , każda odpowiedź zależy od poprzedniej.

Z czasem to wyzwanie stworzy „drzewo genealogiczne” sekwencji OEIS. Łatwo jest dodać do tego drzewa.

  1. Znajdź poprzednią odpowiedź, która może znajdować się na dowolnej głębokości N drzewa.
  2. Określ pierwsze N ​​liczb wygenerowanych przez sekwencję tej odpowiedzi.
  3. Znajdź sekwencję w OEIS, która zaczyna się od tych samych numerów i która nie była wcześniej używana.
  4. Napisz program do wygenerowania nowej sekwencji, którą właśnie znalazłeś.
  5. Prześlij swoją odpowiedź jako głębokość N + 1

Ponieważ poziom twojej odpowiedzi wpływa na punktację, zawsze powinieneś dodawać swoją odpowiedź do drzewa na możliwie najgłębszym poziomie. Jeśli nie możesz znaleźć odpowiedzi w dowolnym miejscu na drzewie, możesz założyć nową gałąź drzewa i ustawić swoją odpowiedź jako głębokość 1.

Wymagania dotyczące odpowiedzi

Istnieje kilka sposobów generowania sekwencji.

Pierwszą opcją jest napisanie programu lub funkcji, która wprowadza liczbę (z STDIN lub jako argument) i zwraca N-tą liczbę w wybranej sekwencji. Możesz założyć, że sekwencja zostanie zdefiniowana dla N i że N i S_N mają „rozsądną wielkość” (więc nie spowoduje to przepełnienia). Możesz także użyć dowolnego rozsądnego indeksowania, takiego jak indeksowanie 0, indeksowanie 1 lub indeksowanie wymienione w „przesunięciu” na stronie OEIS sekwencji, co nie ma znaczenia. Termin wytworzony przez pierwszy indeks musi być zgodny z pierwszym terminem wpisu OEIS.

Drugą opcją jest napisanie programu lub funkcji, która wprowadza liczbę i zwraca pierwsze N ​​wyrazów sekwencji. Pierwsze warunki wyniku muszą być pierwszymi warunkami wpisu OEIS (nie można pominąć kilku pierwszych warunków). Kolejne terminy muszą być rozdzielane dowolnymi ciągami znaków innych niż cyfry, więc 0,1 1.2/3,5;8,11działa, ale 011235811się nie liczy.

Trzecią opcją jest stworzenie programu, który generuje ciągły strumień liczb. Podobnie jak w przypadku drugiej opcji, pomiędzy kolejnymi terminami muszą znajdować się separatory.

Twoja odpowiedź powinna zawierać taki nagłówek, aby ułatwić analizowanie fragmentu kodu:

 # [language], [number] bytes, depth [number], A[new sequence] from A[old sequence] 

Twoja odpowiedź powinna zawierać kod do wygenerowania sekwencji, wraz z pierwszymi kilkoma terminami, które muszą zawierać potomkowie. Te kilka terminów powinno być poprzedzonych dokładnym słowem,terms: aby kontroler mógł użyć ich jako części diagramu drzewa. Zaleca się również napisanie opisu wybranej sekwencji.

Jeśli Twój post jest odpowiedzią na głębokość 1, a zatem nie ma przodka, po prostu pomiń wpis from A[number]w nagłówku.

Oto przykładowa odpowiedź:

# 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 ....

Łączenie wymagań

Aby uczynić to wyzwanie bardziej sprawiedliwym, istnieją ograniczenia dotyczące odpowiedzi, do których możesz połączyć swoje odpowiedzi. Reguły te mają przede wszystkim na celu uniemożliwienie jednej osobie utworzenia całej gałęzi drzewa samodzielnie lub posiadania wielu węzłów „root”.

  • Nie możesz przykuć do siebie.
  • Nie możesz bezpośrednio połączyć dwóch swoich odpowiedzi z tym samym przodkiem.
  • Nie możesz udzielić więcej niż jednej odpowiedzi „Poziomu 1”.

Ponadto, jeśli przodek miał głębokość N, twój post musi mieć głębokość N + 1, nawet jeśli zgadza się więcej niż wymagana liczba warunków.

Punktacja

Twój wynik jako użytkownika jest sumą wyników wszystkich twoich odpowiedzi. Wynik pojedynczej odpowiedzi zależy od następującego wzoru:

Answer Score = Sqrt(Depth) * 1024 / (Length + 256)

Ten system punktacji powinien zachęcać użytkowników do przesyłania dużej liczby głębszych odpowiedzi. Preferowane są krótsze odpowiedzi niż dłuższe, ale głębia ma znacznie większy wpływ.

Poniżej znajduje się fragment stosu, który generuje tabelę wyników, a także schemat drzewa wszystkich odpowiedzi. Chciałbym podziękować Martinowi Büttnerowi i d3noob jako źródłom dużej części tego kodu. Kliknij „Pełny ekran”, aby zobaczyć pełne wyniki.

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&]*(?:&lt;(?:s&gt;[^&]*&lt;\/s&gt;|[^&]+&gt;)[^\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>

PhiNotPi
źródło
5
Wiesz, myślę, że to może być najfajniejsze pytanie codegolf.sx, jakie kiedykolwiek zadałem. To nie tylko fajne, ale w rzeczywistości przydatne jako archiwum.
Todd Lehman
3
Biorąc pod uwagę, że OEIS jest dostępny online, przyjmuje N terminów jako wyszukiwany termin i zawiera matematykę lub kod klonu dla wielu sekwencji, możliwe byłoby napisanie meta-wpisu, który szukał najlepszego wpisu punktacji, dla którego istnieje kod w OEIS, który jest potomkiem dowolnego wpisu tutaj i opublikował go.
dniu
2
Czy mogę polecić jakiś sposób oznaczenia na wykresie fragmentu generującego, że węzeł jest końcowy, tj. Nie ma nieużywanych sekwencji o większej głębokości w OEIS?
Claudiu
1
Myślę, że jedynym sposobem na utrzymanie tego wyzwania byłoby dostarczenie czegoś, gdzie podasz swoją nazwę użytkownika, i zawiera listę problemów OEIS, które możesz zrobić, w kolejności od najwyższej głębokości do najniższej. W przeciwnym razie znalezienie następnej sekwencji do opublikowania zajmuje zbyt dużo czasu.
Claudiu
1
SVG jest nieco zbyt wąski.
CalculatorFeline

Odpowiedzi:

21

Nawias, 150 bajtów, głębokość 4, A000292 z A000290

((()()())(()()()())((()())((()(()())))((()(())())((()()(()))(()(()()))((()(()))(()(()()))((())()))((()(()))(()(()()))((())()())))((())()()()()()()))))

Następna odpowiedź powinna pasować do następujących terminów:

0, 1, 4, 10

Jest to sekwencja liczb czworościennych, generalizacja 3D liczb trójkątnych. Wzór na to jest następujący

T(n) = n*(n+1)*(n+2)/6

Nawias jest językiem podobnym do Lisp, który używa nawiasów do definiowania wszystkiego. Powyżej jest funkcją, ()()()która przyjmuje ni wychodzi T(n). Zadzwoń jak:

((()()()())((())()()()()()()()))

Adnotacja

(
  define
  (() ()())

  f [][][]
  (() ()()())

  (
    lambda
    (() ())

    (
      n [[][]]
      (() (()()))
    )

    (
      div
      (() (())())

      (
        *
        (() ()(()))

        n
        (() (()()))

        (
          +
          (() (()))

          n
          (() (()()))

          1
          ((()) ())
        )

        (
          +
          (() (()))

          n
          (() (()()))

          2
          ((()) ()())
        )
      )

      6
      ((()) ()()()()()())
    )
  )
)


Test call:

(
  f
  (() ()()())

  6
  ((()) ()()()()()())
)
Sp3000
źródło
19
Czym na świecie jest ten język? To jak wredniejsza wersja Lisp.
Alex A.,
10
@AlexA. To nie jest Lisp! To pełna przeszkoda w mówieniu!
CJ Dennis
18

Pancake Stack, 118 bajtów, głębokość 1, A000012

Put this kindercarnavalsoptochtvoorbereidingswerkzaamheden pancake on top!
Show me a pancake!
Eat all of the pancakes!

Następna odpowiedź powinna pasować do następujących terminów:

1

Drukuje najmniejszy dzielnik n. Przetestowano za pomocą interpretera języka Python na stronie wiki esolang . Interpreter oczekuje ~na linii po oznaczeniu końca programu, po którym następuje wejście STDIN (które i tak zostanie zignorowane).

Odpowiednie instrukcje:

Put this <blah> pancake on top!                # Push length of <blah> 
Show me a pancake!                             # Output top of stack as char
Eat all of the pancakes!                       # Terminate the program

Poprzednia odpowiedź

Put this  pancake on top!
[]
Put this kindercarnavalsoptochtvoorbereidingswerkzaamheden pancake on top!
Show me a pancake!
Put this delectable pancake on top!
Show me a pancake!
If the pancake is tasty, go over to "".

Ten drukuje w nieskończonej pętli. Dodatkowe instrukcje:

[<blah>]                                       # Define the label <blah>
If the pancake is tasty, go over to "<blah>".  # If top of stack nonzero, go to label

Istnieją inne instrukcje, ale mimo to Pancake Stack jest bardzo kłopotliwy w użyciu normalnym, ze względu na brak danych liczbowych i dostęp tylko do dwóch górnych elementów stosu.

Niestety pierwsza linia tego programu wydaje się konieczna, aby zapobiec błędowi związanemu z etykietami w interpreterie Pythona.

Sp3000
źródło
17

Python, 31 bajtów, głębokość 4, A010060 z A000045

lambda n:sum(map(ord,bin(n)))%2

Następna odpowiedź powinna pasować do następujących terminów:

0, 1, 1, 0

Ten jest moim ulubionym i jest to sekwencja Thue-Morse . Istnieją co najmniej dwie jego definicje:

  • Parzystość jedności w rozwinięciu binarnym n(używane powyżej), i
  • Sekwencja uzyskana na początku od 0, a następnie kilkakrotnie dołączane do tej pory bitowe dopełnienie sekwencji (tj. 0 -> 01 -> 0110 -> 01101001 -> ...)

Jedną z wielu fajnych rzeczy w tej sekwencji jest złapanie żółwia i wykonanie:

import turtle

turtle.speed(0)
n = 12

# Calculate first 2^n of Thue-Morse
tm = map(lambda n:sum(map(ord,bin(n)))%2, range(2**n)) 

# Move to top left
turtle.penup()
turtle.setx(-300)
turtle.sety(300)
turtle.pendown()

# For each num, go forward a unit if 0, or turn left 120 degrees if 1
for m in tm:
    if m == 0:
        turtle.forward(1)

    elif m == 1:
        turtle.left(120)

turtle.hideturtle()
turtle.mainloop()

otrzymujemy to:

wprowadź opis zdjęcia tutaj

Wygląda podobnie?

Sp3000
źródło
15

MarioLANG, 265 bajtów, głębokość 3, A016957 z A006370

                           <
         =================="
               (((+)< ))+(<
              ======" ===="
               >-))+!  >-(!
               "====#  "==#
          >-(>[!))   >[!(  !
          "====#=======#===#
;)++++++>[!))++++:
==========#=======

Następna odpowiedź powinna pasować do następujących terminów:

4, 10, 16

Sekwencja jest jedynie postępem arytmetycznym 6n + 4.

MarioLANG to ezoteryczny język programowania oparty na, no cóż, Super Mario. Obliczenia są wykonywane w sposób podobny do Brainfuck - istnieje taśma komórek, którą można zwiększać / zmniejszać.

Odpowiednie polecenia podobne do BF są tutaj:

+      Increment current memory cell
-      Decrement current memory cell
(      Move memory pointer left
)      Move memory pointer right
;      Numeric input
:      Numeric output
[      Skip next instruction is current cell is zero

Więc gdzie jest Mario? Mario jest twoim wskaźnikiem instrukcji i zaczyna od lewej (gdzie ;jest). Mario wykonuje instrukcje tak długo, jak jest na ziemi =, a kiedy upada, program się kończy.

Odpowiednie instrukcje w tym zakresie to:

=      Ground for Mario to stand on
<      Make Mario move leftward
>      Make Mario move rightward
!      Make Mario stop moving
#      Elevator start
"      Elevator end

Podsumowując, program robi to:

Put input (n) in cell 0
Increment cell 1 to 6
While cell 1 is not zero...
    Decrement cell 1
    Move n from cell 0 to cells 2, 3
    Move n from cell 2 to cell 0
Increment cell 3 by 4
Output as num

Przetestowano przy pomocy interpretera Ruby. Zauważ, że język ma wiele nieokreślonych zachowań, takich jak to, co dzieje się z instrukcjami, które Mario spotyka podczas upadku, więc starałem się tego uniknąć.

Sp3000
źródło
12

Brainfuck, 2 bajty, głębokość 2, A000030 z A001477

,.

A000030 jest sekwencją początkowych cyfr nieujemnych liczb całkowitych, więc po prostu odczytuje pierwszy znak cyfry i zapisuje go z powrotem. Następna sekwencja powinna zaczynać się od warunków:

0, 1
Martin Ender
źródło
12
To może być najkrótszy użyteczny program Brainfuck, jaki kiedykolwiek widziałem.
Alex A.,
9

Piet, 16 bajtów, głębokość 3, A000035 z A000030

wprowadź opis zdjęcia tutaj

Następna odpowiedź powinna pasować do następujących terminów:

0, 1, 0

To jest Piet, więc „bajty” są tak naprawdę kodami. Tutaj jest w większym rozmiarze kodu:

wprowadź opis zdjęcia tutaj

Program po prostu wczytuje ni generuje nmoduł 2.

Sp3000
źródło
9

Cudowny, 7 bajtów, głębokość 3, A011760 z A000027

Minęło trochę czasu, odkąd ta strona otrzymała Marbelous odpowiedź!

}0
<D++

Następna odpowiedź powinna zaczynać się od warunków:

1, 2, 3

Możesz wypróbować kod w interpretatorze Stack Snippet es1024 . Wstaw jest podawany za pomocą argumentu wiersza poleceń i powinieneś wybrać „Wyświetl dane wyjściowe jako liczby dziesiętne”. W przeciwnym razie wynik zostanie wyprowadzony jako wartość bajtowa, co technicznie jest również w porządku .

Sekwencja ta jest sekwencją „przycisków windy w USA”, tj. Wszystkich liczb całkowitych dodatnich oprócz 13. Zauważ, że Marbelous jest ograniczony do liczb 8-bitowych, ale o ile mi wiadomo, nie ma budynków z blisko 256 piętrami. :)

Marbelous to język 2D, w którym dane przepływają przez kod w postaci kulek (wartości bajtów) opadających w dół siatki. }0zostaje zastąpiony pierwszym argumentem wiersza poleceń. <Djest przełącznikiem, który działa jak pusta komórka do marmurów mniejszych niż 13 ( Dznajduje się w podstawie 36), dzięki czemu wejścia od 1 do 12 przechodzą bez zmian. Jeśli marmur jest równy lub większy niż 13, marmur jest odchylany w prawo i przechodzi przez to, ++co zwiększa wartość o 1. W obu przypadkach marmur spada z planszy, co drukuje jego wartość.

Martin Ender
źródło
8

Szyna , 56 bajtów, głębokość 4, A033547 z A002378

$'main'
 0/aima19-@
@------e<
  /()(!!)-@
@-()m5a()m3do#

Następna odpowiedź powinna pasować do następujących terminów:

0, 2, 6, 14

Program wczytuje nze STDIN i dane wyjściowe n*(n^2+5)/3, co było zgadywaniem magicznych liczb dla modelu pocisków jądrowych z lat 40. XX wieku.

Rail to język 2D, którego tematyka dotyczy torów kolejowych. Powyższy kod jest golfowany za pomocą @reflektorów, które odwracają kierunek pociągu, w celu zmniejszenia liczby nowych linii. Tutaj nie jest golfem:

$ 'main'
 \
  0
   \ /--aima19--\
    |           |
    \--e-------<
                \
                 \-(!n!)-(n)-(n)-m-5-a-(n)-m-3-d-o-#

Zwróć uwagę, jak Rail zaczyna się w lewym górnym rogu i zaczyna się poruszać pionowo w dół w prawo.

Stosowane komendy manipulacji na stosie to:

0-9       Push 0-9 respectively
e         Push t (true) if EOF, else f (false)
i         Input char
o         Output
a         Add
m         Multiply
(!n!)     Store top of stack as variable n
(n)       Push variable n to stack
#         Halt program

Pociąg rozgałęzia się na skrzyżowaniach >v<^, skręcając w prawo, jeśli wierzchołek stosu jest prawdziwy, w przeciwnym razie w lewo, jeśli fałsz.

Sp3000
źródło
8

Gwiaździsta, 22 bajty, głębokość 4, A008619 z A000142

      + + +*,  +   **.

Następna odpowiedź powinna pasować do następujących terminów:

1, 1, 2, 2

Sekwencja składa się z dodatnich liczb całkowitych powtórzonych dwukrotnie. Program wczytuje liczbę ze STDIN i oblicza 1 + floor(n/2).

Starry to ezoteryczny język zaimplementowany w Rubim, który był częścią książki o ... tworzeniu ezoterycznych języków w Rubim. Każda instrukcja jest określona przez liczbę spacji przed jedną z nich +*.,`'. Wszystkie pozostałe znaki są ignorowane, więc powyższe jest równoważne z

      +
 + +*,
  +   *
*.

który wygląda na bardziej gwiaździsty! (zwróć uwagę na spacje końcowe)

Odpowiednie polecenia to:

Spaces     Final      Instruction
------     -----      -----------
n >= 5     +          Push n-5 to stack
1          +          Duplicate top of stack
0 mod 5    *          Add
0 mod 2    ,          Input num
2          +          Swap top 2
3 mod 5    *          Divide
0 mod 2    .          Output num

Poprzednia odpowiedź, 53 bajty

      +` +.               + + .  + +.  + .      +* +'

Zamiast tego generuje sekwencję ad infinitum. Niektóre dodatkowe polecenia to:

Spaces     Final      Instruction
------     -----      -----------
1 mod 2    .          Output as ASCII char
n          `          Mark a label n
n          '          Pop and if nonzero, jump back to label n
Sp3000
źródło
7

Mathematica, 20 bajtów, głębokość 6, A037965 z A104631

Binomial[2#-2,#-1]#&

Jest to nienazwana funkcja, która po prostu oblicza definicję sekwencji. Następna sekwencja powinna zaczynać się od warunków:

0, 1, 4, 18, 80, 350
Martin Ender
źródło
Węzeł liścia (bez innych sekwencji)
CalculatorFeline
7

CJam, 34 bajty, głębokość 14, A157271 z A238263

qi_,_m*{~2@#3@#*}$<::+1f&_:+\1-,e>

Następna odpowiedź powinna zaczynać się od warunków:

1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7

ale nie ma już nic, co jeszcze nie zostało zrobione.

Niech D(n)będzie zbiorem pierwszych n3-gładkich liczb: to znaczy liczb całkowitych, których czynniki pierwsze są podzbiorem {2, 3}. Niech S(n)będzie największym podzbiorem, D(n)który sam nie zawiera żadnego podzbioru postaci {x, 2x}lub {y, 3y}. Zatem A157271 ma rozmiar S(n).

Peter Taylor
źródło
1
Ach miło, patrzyłem na to, ale nie byłem całkiem pewien, co oznaczają ich wyjaśnienia. Twoje jest znacznie wyraźniejsze.
Claudiu
6

Golfscript, 3 bajty, głębokość 3, A000290 z A000030

~2?

Następna odpowiedź powinna pasować do następujących terminów:

0, 1, 4

Ta sekwencja jest po prostu liczbami kwadratowymi, więc program pobiera liczbę i wyświetla swój kwadrat.

Klamka
źródło
6

Preludium , 16 bajtów, głębokość 1, A000211

3(v!  v)
4 ^+2-^

Myślałem, że zacznę drzewo z mniej oczywistą liczbą początkową. Jest to uogólniony ciąg Fibonacciego z definicji a(0) = 4, a(1) = 3, a(n) = a(n-1) + a(n-2) - 2. W związku z tym jest to głównie prosta adaptacja mojego rozwiązania Prelude Fibonacciego . Powyżej jest programem, który drukuje strumień nieskończoności liczb. Zakłada interpreter Pythona, który wypisuje liczby zamiast pojedynczych znaków.

Następna odpowiedź powinna zaczynać się od warunków:

4
Martin Ender
źródło
6

Klip, 0 bajtów, głębokość 2, A000027 z A000012

Podana liczba ndrukuje nthliczbę w sekwencji1, 2, 3, 4...

Następna odpowiedź powinna zaczynać się od warunków:

1, 2
Ypnypn
źródło
5

J, 4 bajty, głębokość 4, A001563 z A000290

(*!)

Następna odpowiedź powinna pasować do następujących terminów:

0, 1, 4, 18

Sekwencja ta jest liczbą pomnożoną przez silnię. W J (fg)xjest f(x,g(x))tutaj x*factorial(x).

randomra
źródło
Możesz pominąć nawiasy dla 2 bajtów:*!
27ıʇǝɥʇuʎs
@ ɐɔıʇǝɥʇuʎs Nie będę się kłócił z nikim, kto powiedziałby, że nie mogę ich pominąć za ~ 1/128 części wyniku. :)
randomra
5

Mathematica, 48 bajtów, głębokość 5, A104631 z A001563

SeriesCoefficient[((x^5-1)/(x-1))^#,{x,0,2#+1}]&

Następna odpowiedź powinna pasować do następujących terminów:

0, 1, 4, 18, 80

Pomijając długie nazwy funkcji, Mathematica absolutnie zachwyca tym wyzwaniem. Ten jest po prostu współczynnikiem x^(2n+1)rozszerzenia

(1 + x + x^2 + x^3 + x^4)^n
Sp3000
źródło
5

Element , 13 bajtów, głębokość 3, A000045 z A000030

1_'0[3:~2@+]`

A000045 reprezentuje liczby Fibonacciego. Każdy termin w sekwencji jest sumą dwóch poprzednich terminów. Jest to godne uwagi, ponieważ stosunek między kolejnymi terminami zbliża się do złotego podziału, znanego również jako phi. Co ciekawe, wpis OEIS zaczyna się 0, 1od wspólnego 1, 1. Następna odpowiedź powinna pasować do warunków:

0, 1, 1
PhiNotPi
źródło
5

Preludium , 1 bajt, głębokość 2, A000004 z A001477

!

Następna odpowiedź powinna pasować do następujących terminów:

0, 0

Ten program przyjmuje ndane wejściowe, całkowicie je ignoruje i wysyła stałą zerową. Wymaga NUMERIC_OUTPUT = Trueinterpretera języka Python.

Zaletą Preludium jest to, że ma nieskończoną podaż zer na dole stosu, więc wszystko, co było potrzebne, to jedno polecenie wyjściowe.

Sp3000
źródło
4

Perl, 10 bajtów, głębokość 1, A001477

Aby rozpocząć, oto prosta sekwencja.

print$_=<>

Reprezentuje nieujemne liczby 0, 1, 2, 3 itd., Drukując liczbę wejściową. Następna sekwencja powinna zaczynać się od warunków:

0
PhiNotPi
źródło
4

GolfScript, 9 bajtów, głębokość 4, A051682 z A002275

~.9*7-*2/

Następna odpowiedź powinna pasować do następujących terminów:

0, 1, 11, 30

To po prostu używa wzoru na liczby hendekagonalne znalezione na stronie OEIS.

Klamka
źródło
4

Deadfish, 4 bajty, głębokość 2, A005563 z A001477

isdo

Ta sekwencja jest zdefiniowana jako (n+1)^2-1, co dokładnie robi ten program. Ponieważ Deadfish nie ma danych wejściowych, zakłada, że ​​akumulator ma żądany numer wejściowy. Następna odpowiedź powinna zaczynać się od warunków:

0, 3
NinjaBearMonkey
źródło
4

APL, 13 bajtów, głębokość 4, A000108 z A000142

{(⍵!2×⍵)÷⍵+1}

Liczby katalońskie! Indeksowanie zaczyna się od zera. Następna odpowiedź powinna zaczynać się od warunków:

1, 1, 2, 5
cirpis
źródło
4

GolfScript, 31 bajtów, głębokość 11, A029030 z A242681

~][11.(2]{:C;{{.C-.)0>}do;}%}/,

Następna odpowiedź powinna pasować do następujących terminów:

1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 7

ale nie będzie w stanie: to jest liść drzewa. Ta sekwencja jest liczbą sposobów dokonywania zmian za pomocą monet o wartości 1, 2, 10 i 11.

Peter Taylor
źródło
3
A258000: 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 7, 42 - Jakaś dziwna sekwencja, o którą poprosili na codegolf.stackexchange.com
schnaader
4

Siatkówka , 1 bajt, głębokość 3, A055642 z A001333

.

Następna odpowiedź powinna zaczynać się od warunków:

1, 1, 1

Myślę, że po raz pierwszy użyłem Retiny w czymś innym niż tryb Replace. Jeśli podany jest tylko jeden plik bez żadnych opcji, Retina przyjmuje tryb dopasowania, który domyślnie zlicza liczbę dopasowań danego wyrażenia regularnego na wejściu. Ten wyrażenie regularne .pasuje do dowolnej postaci. Dlatego ten program zwraca liczbę cyfr wejścia, którym jest A055642.

Martin Ender
źródło
3

Klip , 24 bajty, głębokość 4, A049666 z A002275

/F*5nx5[Fx?<x3O]+F(xF((x

Następna odpowiedź powinna pasować do następujących terminów:

0, 1, 11, 122

Sekwencja jest po prostu Fibonacci(5n)/5. Zobacz stronę przykłady o wyjaśnienie.

Ypnypn
źródło
3

Klip, 37 bajtów, głębokość 5, A227327 z A000292

[t/m++#t4*2#t3*8#t2?%t2+*2t9]*8t]48]n

Możliwe sposoby wybrania dwóch punktów na trójkątnej siatce z boku n, z wyłączeniem obrotów i odbić. Podany przykład to: dla n = 3 istnieją 4 sposoby:

  X        X        X        .
 X .      . .      . .      X X
. . .    X . .    . X .    . . .

Następna sekwencja musi zaczynać się od następujących terminów:

0, 1, 4, 10, 22
Ypnypn
źródło
3

APL, 24 bajty, głębokość 6, A025581 z A182712

{¯1-⍵-2!1+⌊.5+.5*⍨2×1+⍵}

Sekwencja A025581 jest sekwencją ... Nie jestem pewien, czy mam być szczery. To mnie przeraża.

Indeksowanie rozpoczyna się od 0, a funkcja po prostu oblicza sekwencję z definicji.

Następna sekwencja powinna zaczynać się od warunków:

0, 1, 0, 2, 1, 0
cirpis
źródło
Zmniejszenie liczb całkowitych m do 0, a następnie zmniejszenie liczb całkowitych m + 1 do 0 itd. Może to pomóc.
CalculatorFeline
3

> <>, 25 bajtów, głębokość 2, A001333 z A002522

301-v >rn;
*2@:<r^!?:-1r+

Są to liczniki konwergencji ciągłej frakcji do sqrt (2). Kod wymaga od użytkownika wypełnienia stosu indeksem zbieżności, który powinien zostać zwrócony. Indeksowanie zaczyna się od 1. Następna odpowiedź powinna zaczynać się od terminów:

1, 1
cirpis
źródło
3

J, 44 bajty, głębokość 10, A242681 z A026233

f=.(,(<:*+)"0/~~.50,25,(,+:,3*])1+i.20)+/@:=]

Następna odpowiedź powinna zaczynać się od warunków:

1, 1, 2, 2, 3, 3, 4, 4, 5, 5

Coś bliższego codziennemu życiu: „liczba sposobów na uzyskanie wyniku nza pomocą dwóch rzutek na standardowej tarczy do rzutek”. Liczy się tylko nieuporządkowana para wyników. Początkowe przesunięcie wynosi dwa, jak na stronie OEIS. Stosowanie:

f 2 => 1
f 72 => 12
randomra
źródło
3

R, 20 bajtów, głębokość 11, A194964 z A242681

1+floor(scan()/5^.5)

Następna odpowiedź powinna pasować do następujących terminów:

1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5

Sekwencja A194964 daje każdemu n wynik, 1+[n/sqrt(5)]gdzie [oznacza „podłoga”. Funkcja R przyjmuje dane wejściowe jako standardowe.

plannapus
źródło