Lets definieren eine Zeigersequenz, eine beliebige Sequenz sein , dass a (n) a ((n-1) - (a (n-1))) = forall n größer als eine endliche Zahl. Zum Beispiel, wenn unsere Sequenz mit begann
3 2 1
Unser nächster Term wäre 2, weil a (n-1) = 1 , (n-1) -1 = 1 , a (1) = 2 (dieses Beispiel ist der Index Null, es ist jedoch egal, welchen Index Sie für die Berechnung verwenden immer gleich sein.). Wenn wir den Vorgang wiederholen, erhalten wir die unendliche Folge
3 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 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 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 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
Aufgabe
Bei einem gegebenen Anfangsarray positiver Ganzzahlen wird die Zeigersequenz beginnend mit diesem Array ausgegeben.
Ausgabearten
Die Ausgabe soll flexibel sein, wenn Sie eine Funktion schreiben, die als Programm zurückgegeben werden kann, entweder eine unendliche Liste von Ganzzahlen oder eine Funktion, die die Sequenz indiziert. Wenn Sie ein vollständiges Programm schreiben, können Sie Terme der Sequenz auf unbestimmte Zeit ausgeben.
Sie können auch zwei Eingaben vornehmen, das Start-Array und einen Index. Wenn Sie sich dazu entscheiden, müssen Sie nur den Term der Sequenz an diesem Index ausgeben.
Sie erhalten niemals eine Sequenz, die vor dem Beginn der Sequenz indexiert werden muss. Beispielsweise 3ist keine gültige Eingabe, da Sie Begriffe vor dem benötigen 3, um den nächsten Begriff aufzulösen.
Dies ist Codegolf, daher ist Ihre Punktzahl die Anzahl der Bytes in Ihrem Programm, wobei eine niedrigere Punktzahl besser ist.
Testfälle
Testfälle werden der Einfachheit halber abgeschnitten
2 1 -> 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 ...
2 3 1 -> 2 3 1 3 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 ...
3 3 1 -> 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 ...
4 3 1 -> 4 3 1 3 4 4 3 3 4 4 4 3 4 4 4 4 3 4 4 4 4 3 4 4 4 4 3 4 ...