は、私はルビーに変換する方法Rubyのループでいくつかの繰り返しをスキップする方法は?
for(i = 0; i < 10; i++){
printf("Hello");
if(i == 5){
a[3] = a[2] * 2;
if(a[3] == b)
i = a[3]; //Skip to index = a[3]; depends on runtime value
}
}
以下のCコードがあると? next
を使用して1回の繰り返しをスキップできることはわかっていますが、条件付きの値に応じていくつかの繰り返しをスキップしなければならず、実行前にスキップする回数はわかりません。ここで
は(Coreywardで述べたように)私は実際に働いているコードです:
私は値が0.1未満(0.1未満の意志を異なるという配列に「直線」を探しています「直線」とみなす)。範囲は、長い「線」とみなすために50より長くなければなりません。私はライン範囲[a、b]を見つけた後、反復を上限bにスキップして+ 1から再開しないで、b + 1から新しい "直線"を見つけるようにします。
for(i=0; i<arr.Length; i++){
if(arr[i] - arr[i + 50] < 0.1){
m = i; //m is the starting point
for(j=i; j<arr.Length; j++){ //this loop makes sure all values differs less than 0.1
if(arr[i] - arr[j] < 0.1){
n = j;
}else{
break;
}
}
if(n - m > 50){ //Found a line with range greater than 50, and store the starting point to line array
line[i] = m
}
i = n //Start new search from n
}
}
を与えるあなたが達成しようとしているものの意図を提供する場合、それははるかに参考になります。 Enumeratorクラスには、次の反復( 'feed')の値を設定し、次の値(' peek')を見るための便利なメソッドがいくつかあります。また、forループを使用することもできますルビー。私はこれを書くためのクリーナーな方法があると確信しています、私はそれが何をしようとしているのか分かりません。 – coreyward
あなたはC言語で配列の終わりをインデックスするつもりですが、おそらく 'arr.Length-50'にバインドを変更したいと思っています。これは、値が初期値のイプシロンである50以上のランを見つけるためにやや複雑な方法のようです。 – dbenhur
大きなインデックスの値は、より低いインデックスの値より小さくなることはないと思われます。これは本当ですか? – dbenhur