-(BOOL)isInArray:(CGPoint)point{
if ([valid count]==0) {
return NO;
}
for (NSValue *value in valid) {
CGPoint er=[value CGPointValue];
if(CGPointEqualToPoint(point,er)) return NO;
}
return YES;
}
-(void)check:(CGPoint)next{
if (!next.y==0) {
int ics=(int) next.x;
int igrec=(int)next.y;
if (mat[ics][igrec]==mat[ics-1][igrec]){
if (![self isInArray:next]) {
[valid addObject:[NSValue valueWithCGPoint:next]];
NSLog(@"valid y!=0 : %@",valid);
[self check:CGPointMake(ics-1, igrec)];
}
}
}
のy列、xは、行されている、マットは、私がここで何をしようとしているC行列
であるが、これは次のとおりです。私は取得します私はそれが最初の行にあるかどうかを確認し、それがiでない場合はチェックします(私は構造体を使用しますが、テストの範囲はCGPoint.itの基本的なものと同じです)。値が上記の行の値と等しいかどうかをチェックします。そうであれば、ポイントの座標を配列に追加し、上の値に(再帰的に)移動します。私は左、右、下にもifを持っていますが、アイデアは同じです。
私の問題:それも1つの値
- がnull(注常にあることNSLogが呼び出されて既にオブジェクトが追加されているはずです)
- 再帰はメソッドで動作しますか?あなたがこれを行うにはどのように良いアイデアを持っている場合は
- は...私はあなたがそれを割り当てられていないため、「有効」配列がnilである
まあNSSetを使用しています。いくつかのものを動かしました。それは動作しますが、それはうまくいきません。私はそれを修正しようとしますが、うまくいけば、ここでコードを...おそらくあなたが私をいくつかより助けることができます:) – skytz
私は '[自己チェック:CGPointMake(ics-1、igrec)];' ...任意のアイデアを呼び出さないと結論づけましたか? (もしそうなら、それは再帰的には働かない) – skytz
それは自分のミスであるように見えますが、小さなものですが、今は完璧に働いています。ありがとうございます – skytz