Der Gewinner ist die Antwort # 345 von Scrooble . Dies bedeutet, dass der Wettbewerb offiziell beendet ist. Sie können jedoch auch weiterhin Antworten veröffentlichen, sofern die Regeln eingehalten werden.
Ein kurzer Gruß an die drei Antwortenden in Bezug auf die Anzahl der Antworten:
1. NieDzejkob - 41 Antworten
2. KSmarts - 30 Antworten
3. Hyper Neutrino - 26 Antworten
Dies ist eine Frage zur Antwortverkettung, die Sequenzen aus OEIS und die Länge der vorherigen Einreichung verwendet.
Diese Frage zur Verkettung der Antwort funktioniert folgendermaßen:
- Ich werde die erste Antwort posten. Alle anderen Lösungen müssen sich daraus ergeben.
- Der nächste Benutzer (nennen wir ihn BenutzerA) findet die OEIS-Sequenz, in der seine Indexnummer (siehe unten) der Länge meines Codes entspricht.
- Unter Verwendung der Sequenz müssen sie dann in einer nicht verwendeten Sprache ein Programm codieren, das eine Ganzzahl als Eingabe n verwendet und die n-te Zahl in dieser Sequenz ausgibt.
- Als nächstes veröffentlichen sie ihre Lösung nach meiner, und ein neuer Benutzer (BenutzerB) muss dasselbe wiederholen.
Der n
dritte Term einer Sequenz ist der n-fache nach dem ersten Term, wobei der erste Wert der erste Wert ist, der auf der OEIS-Seite angegeben ist. In dieser Frage verwenden wir die 0-Indizierung für diese Sequenzen. Beispiel: Bei A000242 und n = 3
ist das korrekte Ergebnis 25 .
Jedoch!
Dies ist kein Code-Golf , also spielt der kürzeste Code keine Rolle. Die Länge Ihres Codes hat jedoch weiterhin Auswirkungen. Um das Duplizieren von Sequenzen zu verhindern, muss Ihr bytecount eindeutig sein . Dies bedeutet, dass kein anderes Programm, das hier eingereicht wird, dieselbe Länge in Byte haben kann wie das Ihre.
Wenn es für die Länge des letzten Posts keine Sequenz gibt, ist die Sequenz für Ihren Post die niedrigste nicht verwendete Sequenz. Dies bedeutet, dass die verwendeten Sequenzen ebenfalls eindeutig sein müssen und dass die Sequenz nicht mit Ihrem bytecount identisch sein kann.
Nachdem eine Antwort gepostet wurde und mehr als eine Woche lang keine neuen Antworten gepostet wurden, gewinnt die Antwort vor der zuletzt geposteten (diejenige, die die Kette nicht unterbrochen hat).
Ein- und Ausgang
Es gelten generische Ein- und Ausgaberegeln. Die Eingabe muss eine Ganzzahl oder eine Zeichenfolgendarstellung einer Ganzzahl sein, und die Ausgabe muss den richtigen Wert in der Sequenz haben.
Formatierung
Wie bei den meisten Fragen zur Verkettung von Antworten formatieren Sie Ihre Antwort bitte so
# N. language, length, [sequence](link)
`code`
[next sequence](link)
*anything else*
Regeln
- Sie müssen nach dem Posten mindestens 1 Stunde warten, bevor Sie eine Antwort senden.
- Sie dürfen nicht zweimal (oder öfter) hintereinander posten.
- Die Indexnummer einer Sequenz ist die Nummer nach dem
A
Teil, wobei führende Nullen entfernt werden (z. B. fürA000040
die Indexnummer ist 40). - Sie können davon ausgehen, dass weder die Eingabe noch die erforderliche Ausgabe außerhalb des Zahlenbereichs Ihrer Sprache liegen. Bitte missbrauchen Sie dies jedoch nicht, indem Sie eine Sprache auswählen, die beispielsweise nur die Zahl 1 verwenden kann.
- Wenn Ihre Einreichung länger als 65536 Zeichen ist, geben Sie bitte einen Link an, über den Sie auf den Code zugreifen können (z. B. Pastebin).
n
wird niemals größer als 1000 sein oder außerhalb der Grenzen für die Sequenz liegen, um einfach zu verhindern, dass Genauigkeitsdiskrepanzen eine Sprache am Wettbewerb hindern.- Je 150 (gültige) Antworten, desto häufiger kann eine Sprache verwendet werden. Nachdem also 150 Lösungen veröffentlicht wurden, kann jede Sprache zweimal verwendet werden (wobei alle vorherigen Antworten darauf angerechnet werden). Wenn beispielsweise 150 Antworten gepostet wurden, kann Python 3 zweimal verwendet werden. Da es jedoch bereits einmal verwendet wurde, kann es nur noch einmal verwendet werden, bis 300 Antworten gepostet wurden.
- Bitte hilfreich sein und einen Link zur nächsten zu verwendenden Sequenz posten. Dies ist nicht erforderlich, aber eine Empfehlung.
- Verschiedene Sprachversionen, z. B. Python 2 und Python 3, sind verschiedene Sprachen . Wenn beide Versionen in Try It Online verfügbar sind, handelt es sich in der Regel um unterschiedliche Sprachen. Beachten Sie jedoch, dass dies eine allgemeine Regel und keine starre Antwort ist.
- Es ist nicht gesperrt, aber bitte versuchen Sie nicht, den Code von der OEIS-Seite zu kopieren, und versuchen Sie tatsächlich, ihn zu lösen.
- Hardcoding ist nur zulässig, wenn die Sequenz endlich ist. Bitte beachten Sie, dass die Antwort, die dies veranlasste ( Nr. 40 ), die Ausnahme von der Regel ist. Ein paar Antworten zu Beginn des Ketten-Hardcodes, aber diese können ignoriert werden, da es nichts Gutes ist, die Kette bis beispielsweise # 100 zu löschen.
Antwortkettenschnipsel
quelle
float
/double
Art , um für größere Werte zu produzierenn
?Antworten:
345. Brainfuck , 162 Bytes, A000301
Probieren Sie es online!
Nächste Sequenz!
Dies nimmt als Eingabe das Zeichen mit dem Codepunkt
n
(gemäß den Spezifikationen von BF) und gibt es auf die gleiche Weise aus. Um die Zahlen zu sehen, empfehle ich die Verwendung von @ Timwi's EsotericIDE .Erläuterung:
Da hiermit alle Fibonacci-Zahlen bis zu der wichtigen Zahl gespeichert werden, schlägt die WIRKLICH große Eingabe auf einem begrenzten Band fehl.
Dies könnte durch Hardcodierung der Basis (2) erheblich verkürzt werden, aber Golf ist überhaupt kein Problem.
quelle
22. FiM ++ , 982 Bytes, A000024
Nächste Sequenz
quelle
1. Dreieckig , 10 Bytes, A000217
Probieren Sie es online!
Nächste Sequenz
Wie es funktioniert
Der Code wird in dieses Dreieck formatiert
Wenn die IP am
$
und im Südosten beginnt (SE, heh), funktioniert das folgendermaßen:quelle
A000217 Triangular numbers
...73. Sternenklar , 363 Bytes, A000252
Probieren Sie es online!
Nächste Sequenz
Verwendet die Formel "
a(n) = n^4 * product p^(-3)(p^2 - 1)*(p - 1)
wobei das Produkt über allen Primzahlen p liegt, die n teilen" von OEIS.Der Mond ist ein No-Op, aber hey, das ist kein Code-Golf.
quelle
97. Python 3 (PyPy) , 1772 Bytes, A000236
Zunächst einmal vielen Dank an Dr. Max Alekseyev für die Geduld mit mir. Ich bin sehr glücklich, dass ich ihn per E-Mail kontaktieren konnte, um diese Herausforderung zu verstehen. Seine Math.SE-Antwort hier hat mir sehr geholfen. Vielen Dank an Wheat Wizard, der mir ebenfalls geholfen hat. :)
Probieren Sie es online!
Wenn es das falsche Ergebnis gibt, erhöhen Sie einfach die 100 auf etwas Größeres. Ich denke, dass 10000 für 4 funktionieren wird, aber ich lasse meinen Computer über Nacht laufen, um dies zu bestätigen. Es kann einige Stunden dauern, bis der Vorgang abgeschlossen ist.
Beachten Sie, dass der (PyPy-) Teil nur so ist, dass ich Python wieder verwenden kann. Ich kenne wirklich nicht viele andere Sprachen und werde nicht versuchen, dies auf Java zu portieren, und riskieren, nicht rechtzeitig fertig zu werden.
Nächste Sequenz (Bitte mache auch keine verrückten Mathe-Sachen mehr. Ich habe keine Python-Versionen mehr, damit jemand anderes diese Herausforderung speichern muss. D :)
quelle
107. TrumpScript , 1589 Bytes, A000047
Probieren Sie es online!
Beim ersten Programmieren in TrumpScript habe ich das Rad möglicherweise einige Male neu erfunden - 4 Zeilen sind für die Berechnung von 2 ^ n vorgesehen. Ich habe versucht, es so aussehen zu lassen, wie es (betrunken) Trump sagen könnte. Als Bonus habe ich hier ein Python-Skript geschrieben, um zu überprüfen, ob ich alles richtig mache. Es gibt einige Unterschiede zum obigen Programm, aber viele davon sind direkt gleichwertig.
Nächste Sequenz!
quelle
I will make cat feel good
O_OI will make Business Cat feel good
30. Python 1 , 1112 Bytes, A000046
Probieren Sie es online!
Ich werde mich nicht einmal darum kümmern, Golf zu spielen. Hey, es ist nicht meine längste Python-Antwort auf dieser Site!
Nächste Sequenz
quelle
_
irrelevant ist; wir müssen das nur viele Male wiederholen2. Haskell, 44 Bytes, A000010
Probieren Sie es online!
Nächste Sequenz
quelle
9. Pyth , 19 Bytes, A000025
Testsuite .
Nächste Sequenz
quelle
>Q0
statt ,Q
um zu wissen Sie, die nächste Sequenz A000019 zu sein.Keywords: easy,nice
8. Mathematica (10.1), 25 Bytes, A000070
Nächste Sequenz
quelle
206. Proton , 3275 Bytes, A000109
Probieren Sie es online!
Nächste Sequenz
quelle
308. ENIAC (Simulator) , 3025 Bytes, A006060
Pseudocode:
Kein Online-Simulator, Ausführungsergebnis:
Register und Konstanten:
Programmsignalfluss und Datenfluss:
Voller "Code" im Pastebin oder in HTML-Kommentaren im Markup dieser Antwort, um Linkrot und eine recht lange Antwort zum gleichzeitigen Scrollen zu verhindern. Das macht Spaß!
Nächste Sequenz
quelle
15. CJam, 85 Bytes, A000060
Online-Demo
Nächste Sequenz
Präparation
OEIS gibt
wo
quelle
67. LOLCODE , 837 Bytes, A000043
Meine Feststelltaste muss fliehen, also habe ich das Ganze bei gedrückter Umschalttaste geschrieben.
Probieren Sie es online!
Nächste Sequenz
quelle
PRAIME
upper
das es -.-gggUG
in vim, wo ich es geschrieben habe, aber ich bin nicht so schlau10. Magma, 65 Bytes, A000019
Probieren Sie es hier aus
lol eingebaut
Nächste Sequenz
quelle
24. Julia 0,5 , 33 Bytes, A000023
Erweiterung von egf exp (−2 * x) / (1 − x).
Probieren Sie es online!
Nächste Sequenz.
quelle
121. Pip , 525 Bytes, A000022
Online-Demo
Nächste Sequenz
Tolles Faktum: Als die Herausforderung zum ersten Mal veröffentlicht wurde, erstellte ich eine Liste mit kleinen unangenehmen Folgenummern, die ich mit CJam anstreben wollte, und A000022 stand ganz oben auf der Liste.
Dies implementiert die in EM Rains und NJA Sloane, On Cayleys Enumeration of Alkanes (oder 4-Valent Trees) , Journal of Integer Sequences, Vol. 3, No. 2 (1999), wobei die Summe für so viele Terme genommen wird, wie für die Festsetzung des Koeffizienten erforderlich sind, und dann drei Viertel der Summe teleskopiert werden. Insbesondere bedeutet das Teleskopieren der ersten Hälfte, dass der Zyklusindex von nur auf einen von ihnen und nicht auf alle von ihnen angewendet werden muss.
Ck
n
S4
Th
Der Code zerfällt als
Beachten Sie, dass dies mein erstes Pip-Programm ist und daher wahrscheinlich nicht sehr idiomatisch ist.
quelle
156. C # (Mono), 2466 Bytes, A000083
Hinweis: Der Score beträgt 2439 Bytes für den Code und 27 für das Compiler-Flag
-reference:System.Numerics
.Online-Demo . Dies ist ein vollständiges Programm, das Eingaben über die Befehlszeile entgegennimmt.
Nächste Sequenz
Präparation
Ich folge Bowens Kommentar in OEIS, dass die Erzeugungsfunktion,
A000083(x) = A000237(x) + A035349(x) - A000237(x) * A035350(x)
in der die Komponentenerzeugungsfunktionen verknüpft sind, wie folgt transformiert wirdA000237(x) = x EULER(A035350(x))
A035350(x) = BIK(A000237(x))
A035349(x) = DIK(A000237(x))
Ich verwende die Definitionen von
BIK
undDIK
von https://oeis.org/transforms2.html, aber die Formeln scheinen eine Reihe von Tippfehlern zu haben. Ich korrigierteLPAL
ohne große Schwierigkeiten und leitete unabhängig eine Formel fürDIK
die Anwendung der Pólya-Aufzählung auf den Zyklusindex der Diedergruppe ab . Zwischen # 121 und # 156 lerne ich viel über die Pólya-Aufzählung. Ich habe einige Errata eingereicht , die sich für andere als nützlich erweisen können, wenn diese Transformationen in der Kette erneut auftreten.quelle
3. JavaScript (ES6), 38 Byte, A000044
Probieren Sie es online!
Nächste Sequenz (sollte einfach sein: P)
quelle
13. VB.NET (.NET 4.5), 1246 Bytes, A000131
A001246
Probieren Sie es online!
quelle
91. Python 2 (PyPy) , 1733 Bytes, A000066
Probieren Sie es online!
Ich hoffe, dass die Verwendung von Python 2 PyPy als weitere Hauptversion zählt. Wenn mir jemand einen Python 0-Interpreter besorgen könnte, könnte ich das auch verwenden, aber ich hoffe, das ist gültig.
Dies beginnt bei 1 Scheitelpunkt und führt zur Erstellung der Adjazenzmatrixdarstellung für jeden möglichen ungerichteten Graphen mit so vielen Scheitelpunkten. Wenn es dreiwertig ist, wird es durch die Potenz der Kanten schauen, die nach Länge sortiert werden. Wenn der erste gefundene Zyklus zu kurz ist, wird er fortgesetzt. Wenn der erste gefundene Zyklus mit der Eingabe übereinstimmt (um 3 versetzt), wird die korrekte Scheitelpunktzahl ausgegeben und der Vorgang beendet.
Nächste Sequenz <- haben Sie eine leichte Pause von all diesem mathematischen Unsinn: D
BEARBEITEN : Ich habe einige Optimierungen hinzugefügt, um es ein bisschen schneller zu machen (der dritte Term kann jedoch nicht innerhalb des 60-Sekunden-Limits von TIO berechnet werden), ohne den Bytecount zu ändern.
quelle
232. Funky ,
326330332 Bytes, A000938Probieren Sie es online!
Mehrsprachigkeit mit Javascript. Probieren Sie es online!
Nächste Sequenz .
Verwenden Sie die Formel auf der OEIS-Seite für
O(n^2 log n)
Komplexität anstelle der naivenO(n^6)
.Schnelle Erklärung:
a[n_] := 2*Sum[(n - k + 1)*(n - m + 1)*GCD[k - 1, m - 1], {m, 2, n}, {k, 2, n}] - n^2*((n^2 - 1)/6)
im Abschnitt Mathematica-Code beschriebene Formel verwendet.Formelnachweis:
Die Formel ist äquivalent zu dieser .
Die Größe des Begrenzungsrahmens von drei Punkten sei
m * k
. Betrachten Sie zwei Fälle:k != 0
undm != 0
: Es gibt zwei Möglichkeiten, die Ausrichtung der drei Punkte (\
oder/
)gcd(k-1, m-1)-1
zu bestimmen, und es gibt zwei(n - k) × (n - m)
Möglichkeiten, die Position des Begrenzungsrahmens zu bestimmen.k == 0
oderm == 0
: Es gibt zwei Möglichkeiten, die Ausrichtung (|
oder-
),n
die Zeile / Spalte, in der sich die Punkte befinden, undBinomial[n, 3] == (n*(n-1)*(n-2)) / 6
die Punkte in dieser Zeile / Spalte auszuwählen.Einige mehrsprachige Notizen:
return
. Wie ATaco jedoch erklärte , hält [Funky] dies fürreturn
eine Variable. Es wird also dieser Ausdruck analysiert, der praktisch nichts bewirkt, und dann der nächste Ausdruck analysiert. Und dies wird als Ausgabe verwendet.^
als bitweises xor verwenden, im Gegensatz zu Funky, die^
als Potenzierung verwenden. Müssenn*n
also verwendet werdenn^2
, um die Javascript-Kompatibilität zu gewährleisten.+
,-
,*
, etc.) haben gleiche Priorität und rechtsassoziativ, so Ausdrücke richtig zu klammerten müssen.quelle
11. Pari / GP, 64 Bytes, A000065
Probieren Sie es online!
Nächste Sequenz
quelle
;_; I solved A000064 and you changed it. Downvoted.
281. Java 5, 11628 Bytes, A000947
Probieren Sie es online!
Randnotiz:
Dies kann die Kette brechen.Neuer Rekord auf großem bytecount!Da ich (aus Versehen?) Leerzeichen anstelle von Tabulatoren verwende, ist der Bytecount größer als erforderlich. Auf meinem Rechner sind es 9550 Bytes. (zum Zeitpunkt der Überarbeitung)20
Eingangsfor (int i = 0; i < 20; ++i)
zu1000
).Yay! Hiermit können mehr Begriffe berechnet werden, als auf der OEIS-Seite aufgeführt sind! (zum ersten Mal, für eine Herausforderung muss ich Java verwenden) es sei denn, OEIS hat irgendwo mehr Begriffe ...
Schnelle Erklärung
Erläuterung der Sequenzbeschreibung.
Die Sequenz fragt nach der Anzahl der freien nichtplanaren Polyomagneten mit der Symmetriegruppe C 2v , wobei:
Betrachten Sie zum Beispiel die Bäume
Das erste kann nicht in das hexagonale Gitter eingebettet werden, das zweite nicht. Diese spezielle Einbettung unterscheidet sich vom dritten Baum.
(2)
und(3)
Baum oben sind planar. Dieser ist jedoch nicht planar:(Es gibt 7 Ecken und 6 Kanten)
Zum Beispiel das einzige Magnetventil mit 2 Eckpunkten
hat 3 Reflexionsebenen: die horizontale
-
, die vertikale|
und die parallel zum Computerbildschirm verlaufende■
. Das ist zu viel.Auf der anderen Seite dieser
hat 2 Reflexionsebenen:
/
und■
.Erläuterung der Methode
Und jetzt der Ansatz, wie man die Anzahl tatsächlich zählt.
Zunächst nehme ich die
a(n) = A000063(n + 2) - A000936(n)
auf der OEIS-Seite aufgeführte Formel als selbstverständlich an. Ich habe die Erklärung in der Zeitung nicht gelesen.[TODO fix this part]
Natürlich ist das Zählen von Planaren einfacher als das Zählen von Nichtplanaren. Das macht auch die Zeitung.
Also ... zählt das Programm die Anzahl der planaren Magnetspulen und subtrahiert sie von der Summe.
Da der Baum sowieso eben ist, hat er offensichtlich die
■
Reflexionsebene. Die Bedingung läuft also auf "Anzahl der Bäume mit einer Reflektionsachse in der 2D-Darstellung zählen" hinaus.Der naive Weg wäre, alle Bäume mit
n
Knoten zu generieren und auf korrekte Symmetrie zu prüfen. Da wir jedoch nur die Anzahl der Bäume mit einer Reflexionsachse ermitteln möchten, können wir einfach alle möglichen Halbbäume auf einer Hälfte generieren, sie durch die Achse spiegeln und dann auf korrekte Symmetrie prüfen. Da es sich bei den erzeugten Polyenoiden um (planare) Bäume handelt, muss sie die Reflexionsachse genau einmal berühren.Die Funktion
public static Graph[] expand(Graph[] graphs, Point.Predicate fn)
nimmt ein Array von Graphen auf, jeder hatn
Knoten und gibt ein Array von Graphen aus, jeder hatn+1
Knoten, die nicht gleich sind (unter Übersetzung) - so dass der hinzugefügte Knoten das Prädikat erfüllen mussfn
.Betrachten Sie zwei mögliche Reflexionsachsen: Eine, die durch einen Scheitelpunkt verläuft und mit Kanten zusammenfällt (
x = 0
), und eine, die die senkrechte Winkelhalbierende einer Kante ist (2x = y
). Wir können nur eine davon verwenden, da die generierten Grafiken ohnehin isomorph sind.Für die erste Achse
x = 0
beginnen wir also mit dem Basisgraphen, der aus einem einzelnen Knoten(1, 0)
(fallsn
ungerade ist) oder zwei Knoten mit einer Kante zwischen(1, 0) - (2, 0)
(falls geraden
ist) besteht, und erweitern dann die Knoten so, dassy > 0
. Dies wird im Abschnitt "Reflection type 1" des Programms durchgeführt. Anschließend spiegeln Sie sich für jedes erzeugte Diagramm durch die X-Achsex = 0
(g.reflectSelfX()
) und überprüfen, ob es die richtige Symmetrie aufweist.Beachten Sie jedoch, dass wenn
n
durch 2 teilbar ist, wir auf diese Weise jeden Graphen zweimal gezählt haben, da wir auch sein Spiegelbild durch die Achse erzeugen2x = y + 3
.(Beachten Sie die 2 orangefarbenen)
Ähnliches gilt für die Achse
2x = y
, wenn (und nur dann)n
auch ist, beginnen wir von dem Punkt(1, 1)
, erzeugen Graphen , so dass2*x > y
, und beziehen sich jeder von ihnen über die2x = y
Achse (g.reflectSelfType2()
), verbinden(1, 0)
mit(1, 1)
, und überprüfen , ob sie korrekt Symmetrie haben. Denken Sie auch daran, durch 2 zu teilen.quelle
6. R , 71 Bytes, A000072
Probieren Sie es online!
Nächste Sequenz
quelle
the answer before the last posted (the one who didn't break the chain) will win
14. Python 2 , 60 Bytes, A001246
Probieren Sie es online!
Nächste Sequenz.
quelle
26. TI-BASIC, 274 Bytes , A000183
Wertet die auf dem OEIS-Link gefundene rekursive Formel aus.
Nächste Sequenz
quelle
34. Prolog (SWI) , 168 Bytes, A000073
Probieren Sie es online!
Nächste Sequenz
quelle
49. SageMath , 74 Bytes, A000003
Probieren Sie es online!
Nächste Sequenz
quelle
76. Pygmy , 4147 Bytes, A000036
Nächste Sequenz
Sie können den Code auf dieser Seite ausführen . Zum Beispiel können Sie die 10. Nummer in der Sequenz erhalten, indem Sie den obigen Code kopieren und Folgendes hinzufügen:
quelle