Definition
Aus der Beschreibung zu OEIS A006345 :
a(n)
Betrachten Sie zum Finden entweder a1
oder a2
. Suchen Sie für jedes das längste wiederholte Suffix, dh für jedes vona(n)=1,2
, die längste Sequenzs
mit der Eigenschaft, mit der die Sequenza(1),...,a(n)
endetss
. Verwenden Sie die Ziffer, die das kürzere Suffix ergibt.a(1) = 1
.
Ausgearbeitetes Beispiel
a(1)=1
.
Wenn a(2)=1
ja, haben wir die Sequenz, 1 1
in der sich die längste doppelte Teilzeichenfolge vom Ende befindet 1
. Wenn a(2)=2
stattdessen, dann wäre es die leere Teilzeichenfolge. Deshalb a(2)=2
.
Wann n=6
wählen wir zwischen 1 2 1 1 2 1
und 1 2 1 1 2 2
. Bei der ersten Wahl 1 2 1
wird vom Ende an nacheinander verdoppelt. In der zweiten Wahl ist es 2
stattdessen. Daher a(6)=2
.
Wann n=9
wählen wir zwischen 1 2 1 1 2 2 1 2 1
und 1 2 1 1 2 2 1 2 2
. In der ersten Wahl ist die längste verdoppelte aufeinanderfolgende Teilzeichenfolge 2 1
, während in der zweiten Wahl 1 2 2
am Ende nacheinander verdoppelt wird. Deshalb a(9)=1
.
Aufgabe
Gegeben n
, zurück a(n)
.
Technische Daten
n
wird positiv sein.- Sie können 0-indiziert anstelle von 1-indiziert verwenden. In diesem Fall geben Sie dies bitte in Ihrer Antwort an. Auch in diesem Fall
n
kann es sich0
auch.
Testfälle
Die Testfälle sind 1-indiziert. Sie können jedoch 0-indiziert verwenden.
n a(n)
1 1
2 2
3 1
4 1
5 2
6 2
7 1
8 2
9 1
10 1
11 2
12 1
13 2
14 2
15 1
16 1
17 2
18 1
19 1
20 1
Verweise
- WolframMathWorld
- Obligatorisch OEIS A006345
quelle
n=9
hat die erste Wahl1 2 1 1 2 2 1 2 1
die doppelte Teilzeichenfolge2 1
am Ende.Antworten:
Haskell,
146140137133118 Bytesquelle
(\x->(\s->...
? Sonst könntest du schreiben(\x s->...
.div ...
, können Sie die kürzere verwendenn
. Die zusätzlichen Vergleiche geben alle false zurück und ändern das Ergebnis nicht.Python, 137 Bytes
Diese Lösung verwendet eine 0-basierte Indizierung.
quelle
Jelly ,
25242220 Bytes2 Bytes dank Dennis.
Probieren Sie es online!
Ein Port meiner Antwort in Pyth .
quelle
Mathematica, 84 Bytes
quelle
Jelly ,
3029282724 BytesProbieren Sie es online! oder überprüfen Sie alle Testfälle .
quelle
MATL , 34 Bytes
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
Python 2, 94 Bytes
Verwendet eine 0-basierte Indizierung. Teste es auf Ideone .
quelle
Pyth , 26 Bytes
Testsuite.
Erläuterung
Wann
n = 6
wählen wir zwischen1 2 1 1 2 1
und1 2 1 1 2 2
.Wir generieren diese beiden Möglichkeiten und betrachten dann ihre Suffixe.
Für die erste, die Suffixe sind:
1
,2 1
,1 2 1
,1 1 2 1
,2 1 1 2 1
,1 2 1 1 2 1
.Wir filtern nach doppelten Suffixen, indem wir prüfen, ob sie gleich sind, nachdem wir sie für ihre Länge geteilt durch 2 gedreht haben (es stellt sich heraus, dass diese Prüfung nicht perfekt ist, weil sie bestätigt
1
und2
auch).Wir nehmen das letzte doppelte Suffix und nehmen dann seine Länge.
Wir wählen dann die Möglichkeit, die einer oben erzeugten Mindestlänge entspricht.
Dann fahren wir mit dem nächsten Wert von fort
n
.Für die Zwecke dieses Programms war es Golfspieler, stattdessen das umgekehrte Array zu erzeugen.
quelle
Pyth,
4629 BytesHat sich von @Leaky Nuns hervorragender Pyth-Antwort inspirieren lassen. Versucht zu sehen, ob es einen kürzeren Weg mit Strings gibt. Noch 3 Bytes zu kurz!
Sie können es hier ausprobieren .
quelle
u
Ce anstelle einer expliziten for-Schleife spart Ihnen 4 BytesRetina ,
51-42Bytes9 Bytes dank Martin Ender.
Probieren Sie es online!
Ein Hafen dieser Antwort .
quelle
Perl, 40 Bytes
Der Code ist 39 Byte lang und erfordert den
-p
Schalter ( +1 Byte).Die Schleife ist von der Perl-Lösung auf der entsprechenden OEIS-Seite inspiriert , obwohl ich mir den regulären Ausdruck unabhängig ausgedacht habe.
Teste es auf Ideone .
quelle
JavaScript (ES6), 84
Indexbasis 0
Weniger golfen
Prüfung
quelle