ある日、目を覚まして、自分がアレイに巻き込まれているのを見つけます。そこから出て、一度に1つのインデックスを取得しようとしますが、他のルールがあるようです。
配列は自然数で完全に埋められます。
- インデックスに自分自身を見つけた場合
n
にいる場合は、indexarray[n]
に移動しますが、次の場合を除きます。 - あなたが
n
素数であるインデックスに自分自身を見つけた場合、あなたはarray[n]
戻ってステップを取る
例:4
この配列のindex から開始します(開始インデックスは0):
array = [1,4,5,6,8,10,14,15,2,2,4,5,7];
-----------------^ you are here
現在のフィールドの値は8
なので8
、最初のステップとしてインデックスに移動します。着陸するフィールドには値が含まれています2
。次に2
、2番目のステップとしてインデックスに移動します。以下のよう2
素数である、あなたはあなたの第三段階である、バックの5つのステップを取ります。インデックスがないため-3
、合計3ステップで配列を正常にエスケープしました。
あなたの仕事は:
パラメータとして配列と開始インデックスを受け取り、配列をエスケープするためのステップ数を出力するプログラムまたは関数を作成します。配列をエスケープできない場合(たとえば[2,0,2]
、start-index 2
=>を使用すると、常にインデックスから移動します)2
からに0
)、偽の値を出力します。1ベースのインデックス付けまたはゼロベースのインデックス付けを使用できますが、使用するものを指定してください。
テストケース
入力: [2,5,6,8,1,2,3], 3
出力: 1
入力: [2, 0, 2], 2
出力: false
入力: [14,1,2,5,1,3,51,5,12,3,4,41,15,4,12,243,51,2,14,51,12,11], 5
;
出力: 6
最短の答えが勝ちです。