在 4x4 网格中查找与某个框相邻的框
Find adjacent boxes to a box in a 4x4 grid
我有一个包含 1 到 16 个数字的数组 self.gridArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16", nil];
我正在使用此函数随机化或随机排列数组项
-(void)randomizeArray:(NSMutableArray *)myArray{
NSUInteger count = [myArray count];
for (NSUInteger i = 0; i < count; ++i)
{
unsigned long int nElements = count - i;
unsigned long int n = (arc4random() % nElements) + i;
[myArray exchangeObjectAtIndex:i withObjectAtIndex:n];
}
NSLog(@"%@",myArray);
}
此功能运行良好。我的问题是,假设它给了我 (9,15,3,5,1,6,7,8,14,13,12,2,16,10,4,11)
的混洗数组,我将它放在 4x4
网格中。现在我想找到相邻的数字让我们说 7
它们将是 6,3,8,12
。 如何找到它们?
另一个例子,如果我想找到 11
的相邻数字,它们将是 2,4
。
试试这个:
NSInteger idx = (NSInteger)[myArray indexOfObject:@"11"]; //obtain the index of the target number
NSMutableArray *adjacentNumbers = [[NSMutableArray alloc] init];
if ( idx+4 < 16 ) { [adjacentNumbers addObject:[myArray objectAtIndex:(NSUInteger)(idx+4)]]; } //number below
if ( idx+1 < 16 && (idx%4 != 3) ) { [adjacentNumbers addObject:[myArray objectAtIndex:(NSUInteger)(idx+1)]]; } //number on the right
if ( idx-4 >= 0 ) { [adjacentNumbers addObject:[myArray objectAtIndex:(NSUInteger)(idx-4)]]; } //number above
if ( idx-1 >= 0 && (idx%4 != 0) ) { [adjacentNumbers addObject:[myArray objectAtIndex:(NSUInteger)(idx-1)]]; } //number on the left
我有一个包含 1 到 16 个数字的数组 self.gridArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16", nil];
我正在使用此函数随机化或随机排列数组项
-(void)randomizeArray:(NSMutableArray *)myArray{
NSUInteger count = [myArray count];
for (NSUInteger i = 0; i < count; ++i)
{
unsigned long int nElements = count - i;
unsigned long int n = (arc4random() % nElements) + i;
[myArray exchangeObjectAtIndex:i withObjectAtIndex:n];
}
NSLog(@"%@",myArray);
}
此功能运行良好。我的问题是,假设它给了我 (9,15,3,5,1,6,7,8,14,13,12,2,16,10,4,11)
的混洗数组,我将它放在 4x4
网格中。现在我想找到相邻的数字让我们说 7
它们将是 6,3,8,12
。 如何找到它们?
另一个例子,如果我想找到 11
的相邻数字,它们将是 2,4
。
试试这个:
NSInteger idx = (NSInteger)[myArray indexOfObject:@"11"]; //obtain the index of the target number
NSMutableArray *adjacentNumbers = [[NSMutableArray alloc] init];
if ( idx+4 < 16 ) { [adjacentNumbers addObject:[myArray objectAtIndex:(NSUInteger)(idx+4)]]; } //number below
if ( idx+1 < 16 && (idx%4 != 3) ) { [adjacentNumbers addObject:[myArray objectAtIndex:(NSUInteger)(idx+1)]]; } //number on the right
if ( idx-4 >= 0 ) { [adjacentNumbers addObject:[myArray objectAtIndex:(NSUInteger)(idx-4)]]; } //number above
if ( idx-1 >= 0 && (idx%4 != 0) ) { [adjacentNumbers addObject:[myArray objectAtIndex:(NSUInteger)(idx-1)]]; } //number on the left