Einleitung - Was ist eine Halskette?
Eine Halskette ist etwas, von dem OEIS-Leute besessen sind. Die OEIS-Herausforderung besteht aus 5 Kettensequenzen.
Eine binäre Halskette mit einer Länge n
ist eine Schleife mit n
Perlen, die entweder 0
oder sind 1
. Zwei Halsketten sind gleich, wenn eine gedreht werden kann, um die andere zu werden, und zwei umkehrbare Halsketten sind gleich, wenn eine gedreht, umgekehrt oder umgekehrt und gedreht werden kann, um die andere zu werden.
Eine primitive Halskette kann nicht als mehr als eine Kopie einer aneinander geketteten Perlenkette ausgedrückt werden. Beachten Sie, dass die Kopien alle in derselben Reihenfolge zusammengestellt werden müssen (keine Umkehrung), damit eine Halskette als nicht primitiv betrachtet wird.
Schauen wir uns zum Beispiel diese Kette an : 0 1 1 0 1 1
. Es ist nicht primitiv, weil es 0 1 1
zweimal wiederholt ausgedrückt werden kann . 0 1 0 1 1
ist primitiv.
0 1 1 0
ist primitiv, weil 0 1
und 1 0
nicht als die gleiche Zeichenfolge betrachtet werden. Diese Kette ist äquivalent zu, 1 1 0 0
weil sie um eine Perle nach links gedreht werden kann, um diese zu werden, aber nicht äquivalent zu 0 1 0 1
(was übrigens nicht primitiv ist).
Herausforderung
Geben Sie bei einer nicht negativen Ganzzahl n
die Anzahl der verschiedenen reversiblen primitiven binären Halsketten mit der Länge zurück n
. Eingabe und Ausgabe jeweils als einzelne Ganzzahl.
Die ersten Begriffe dieser Sequenz sind 1, 2, 1, 2, 3, 6, 8, 16, 24, 42, 69, 124, 208, 378, 668, 1214, 2220, 4110
0-indiziert.
Dies ist OEIS A001371
Referenzimplementierung in Python 3 - ziemlich langsam
0 1 0 1
primitiv? Wird es nicht 0 1
zweimal wiederholt?