我经常遇到循环中重复相同代码的问题,但需要几个循环。一个简单的例子是围绕一个正方形的边缘移动。
IEnumerable
但是,通常你需要反复对方块的坐标做一些事情。这意味着制作4个独立的范围,每个范围都重复相同的代码。是否有一些代码允许您使用多个顺序循环条件?该代码可能如下所示:
ToList
我知道有迭代器,但我认为与能够连接循环相比,它们很麻烦。有没有像这样的重复循环结构的语言?
答案 0 :(得分:1)
至于你的具体问题 - 没有任何东西可以直接实现AFAIK但是..我在大学里为这个问题写了一些代码,也许你可以用它作为基础
基本上你可以从单个迭代器计算坐标 - 这是一个讨厌的代码,但也许它会对你的问题有所帮助
它将打印出10x10平方(1个索引)的方形坐标
#define WIDTH 10
int main()
{
int iter = 0;
int x = 0,y = 0;
while ( iter < (WIDTH*4) ) {
if ( iter < WIDTH ) {
x = iter;
y = 0;
} else if ( iter >= WIDTH && iter < ( 2 * WIDTH ) ) {
x = WIDTH -1;
y = (iter % WIDTH) ;
} else if ( iter >= (2 * WIDTH) && iter < ( 3 * WIDTH ) ) {
x = (WIDTH) - (iter - (2 * WIDTH)) - 1;
y = WIDTH - 1;
} else {
x = 0;
y = (4 * WIDTH) - iter - 1;
}
printf("(%d, %d) ", x+1 ,y+1 );
iter++;
}
printf("\n");
return 0;
}
注意:角点坐标重复