Machen Sie einen n-Jongleur

8

Ich habe mich wirklich für Sequenzen interessiert, die der Eigenschaft folgen

ein(n+1)=ein(n- -ein(n))

In letzter Zeit ist hier eine weitere Frage zu diesen Sequenzen. Insbesondere beschäftigen wir uns mit Sequenzen von den ganzen Zahlen bis zu den natürlichen Zahlen.

Eine periodische Sequenz mit der obigen Eigenschaft ist genau dann ein n- Jongleur, wenn sie genau n verschiedene Werte enthält. Zum Beispiel ist die folgende Sequenz ein 2-Jongleur

... 2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1 ...

weil es nur die Zahlen 1und enthält 2.

Ein Beispiel für einen Drei-Jongleur wäre

... 3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5 ...

weil es jongliert 1, 3und 5.

Aufgabe

Gegeben n> 1 als Eingang, Ausgang jeder n -Juggler.

Sie können eine Sequenz auf verschiedene Arten ausgeben

  • Geben Sie eine Funktion aus, die sie indiziert.

  • Nehmen Sie eine zusätzliche Eingabe des Index und geben Sie den Wert an diesem Index aus.

  • Geben Sie einen fortlaufenden Unterabschnitt der Sequenz aus, der mit der angegebenen Eigenschaft die Sequenz eindeutig bestimmt .

Dies ist daher werden die Antworten in Bytes bewertet, wobei weniger Bytes besser sind.

Ad-hoc-Garf-Jäger
quelle
1
Dürfen wir die Sequenz unbegrenzt drucken?
Mr. Xcoder
3
@ Mr.Xcoder Normalerweise würde ich ja sagen, aber da diese Sequenzen in beide Richtungen unendlich sind, muss ich zögernd nein sagen. (Wenn Sie ein überzeugendes Argument vorbringen, könnte ich meine Meinung dazu leicht ändern.) Wenn Sie einen Weg finden, in beide Richtungen zu drucken, wäre das in Ordnung.
Ad-hoc-Garf-Jäger
3
Es scheint, dass die Folgen folgen a(n+1) = a(n-a(n))und nicht +
TFeld
4
Ja, dies ist der Fall: 2,2einmal wiederholen → 2,2,2,2, erneut wiederholen → 2,2,2,2,2,2usw. Es gibt absolut keine Möglichkeit, eine 1Wiederholung zu erhalten 2,2. Die Reihenfolge, die Sie erhalten, ist immer eindeutig.
Aditsu beendet, weil SE
2
Es sieht so aus, als ob das Anwesen nicht mehr ist.
Erik der Outgolfer

Antworten:

4

Pyth , 5 Bytes

t+*%E

Probieren Sie die 2 , 3 , 4 Jongleure.

Erhält zwei Nummern, N und I , getrennt durch einen Zeilenumbruch und in dieser Reihenfolge. Ich bin der Index in der Sequenz.

Dies verwendet eine recht einfache Formel: N - 1 + N * (I% N) . Ihre Gültigkeit wurde vom OP bestätigt .

Mr. Xcoder
quelle
3

CJam, 9

Wie wäre es damit?

q~1$,=)*(

Probieren Sie es online aus

Eingabe ist, n iwo nist die Haupteingabe und iist der Index, für den Sie den Wert erhalten möchten.

Erläuterung:

q~    read and evaluate the input (n and i)
1$    copy n
,=    basically this is a modulo (i%n) that avoids a negative result for negative i
)*    increment, then multiply by n
(     decrement
Aditsu beenden, weil SE böse ist
quelle
1

Haskell , 17 Bytes

n!i=i`mod`n*n+n-1

Probieren Sie es online aus!

Eine andere Antwort mit Mr. Xcoders Idee. Ich würde die Frage sonst nicht beantworten können, um ehrlich zu sein. : P.

total menschlich
quelle
0

Gelee , 5 Bytes

Ɠ%×+’

Probieren Sie es online aus!

Hafen von Mr. Xcoders Ansatz. Der Index I ist in STDIN, N ist ein Argument.

Erik der Outgolfer
quelle