Eines Tages erwachst du nur, um dich gefangen in einer Reihe zu finden. Du versuchst einfach rauszugehen und nimmst jeweils einen Index, aber es scheint andere Regeln zu geben:
Das Array ist vollständig mit natürlichen Zahlen gefüllt.
- Wenn Sie sich in einem Index befinden
n
, wechseln Sie zum Indexarray[n]
, mit Ausnahme von: - Wenn Sie sich in einem Index befinden,
n
der eine Primzahl ist, treten Sie einenarray[n]
Schritt zurück
Beispiel: Sie beginnen mit Index 4
in diesem Array (Startindex ist 0):
array = [1,4,5,6,8,10,14,15,2,2,4,5,7];
-----------------^ you are here
Da der Wert des Feldes, in dem Sie sich befinden, ist 8
, gehen Sie 8
als erster Schritt zum Index . Das Feld, auf dem Sie landen, enthält den Wert 2
. Anschließend gehen Sie 2
als zweiten Schritt zum Index . Als 2
Primzahl machst du 5 Schritte zurück, was dein dritter Schritt ist. Da es keinen Index gibt -3
, haben Sie das Array in insgesamt 3 Schritten erfolgreich maskiert.
Ihre Aufgabe ist:
So schreiben Sie ein Programm oder eine Funktion, die ein Array und einen Startindex als Parameter akzeptiert und die Anzahl der Schritte ausgibt, die zum Verlassen des Arrays erforderlich sind. Wenn Sie das Array nicht verlassen können (z. B. [2,0,2]
mit start-index 2
=> Sie wechseln ständig von index 2
zu 0
), geben Sie einen falschen Wert aus. Sie können eine einbasierte oder eine nullbasierte Indizierung verwenden, geben Sie jedoch an, welche Sie verwenden.
Testfälle
Eingang: [2,5,6,8,1,2,3], 3
Ausgabe: 1
Eingang: [2, 0, 2], 2
Ausgabe: false
Input: [14,1,2,5,1,3,51,5,12,3,4,41,15,4,12,243,51,2,14,51,12,11], 5
;
Ausgabe: 6
Die kürzeste Antwort gewinnt.