如何在n行和长度的目标c中生成棋盘矩阵? (使用NSLOG打印下面显示的输出)
示例:
输入n = 5
输出
[1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1]
我在下面尝试了这种方法并且它已经接近了。任何帮助将不胜感激!
-(void)checkerboardOne:(int)length {
NSMutableArray *squares = [NSMutableArray arrayWithObjects: nil];
for (int y = 1 ; y <= length; y++) {
if (y % 2) {
for (int x = 0 ; x < length; x++) {
if (x % 2 ) {
[squares addObject:[NSString stringWithFormat:@"0"]];
} else {
[squares addObject:[NSString stringWithFormat:@"1"]];
}
} //end row 0
} else {
for (int x = 0 ; x < length; x++) {
if (x % 2 ) {
[squares addObject:[NSString stringWithFormat:@"1"]];
} else {
[squares addObject:[NSString stringWithFormat:@"0"]];
}
} //end row 1
}
NSLog(@"==========\n%@", squares);
[squares removeAllObjects];
}
}
答案 0 :(得分:1)
查看您的代码,看起来输出更像是:
[0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0]
只需将外部循环更改为:
for (int y = 0 ; y < length; y++) {
获得理想的结果。
但是有一个更简单的方法:
- (void)checkerboardOne:(int)length {
NSMutableArray *squares = [NSMutableArray arrayWithCapacity:length * length];
for (int r = 0; r < length; r++) {
for (int c = 0; c < length; c++) {
BOOL isEven = ((r + c) % 2) == 0;
NSString *result = isEven ? @"1" : @"0";
[squares addObject:result];
}
}
NSLog(@"==========\n%@", squares);
}