我正在为具有5x5孔的XY表创建代码(见图)。它有两个电机,一个用于X位置,一个用于Y位置。我知道每个洞的确切位置,并创建了两个函数:
NextHoleX(布尔前进) NextHoleY()
NextHoleX将根据布尔值向左或向右移动到下一个洞。
NextHoleY会向下移动到下一个洞,它不能向上移动。
你能想到的最有效的伪代码是什么直到你到达终点(右下方)?
详情请参见图片:

发布于 2020-07-25 20:15:01
因为你只能往下走,而不能往上走,所以图中所示的方法是最有效的策略。
假设NextHoleX(1)表示右,NextHoleX(0)表示左。
int matrix[25], j;
size_t len = sizeof(matrix) / sizeof(matrix[0]), i;
_Bool flag = 1;
for (i = 0, j = 0; i < len; i++, j++)
{
j == 5 ? NextHoleY(), flag = !flag, j = -1 : 0;
NextHoleX(flag);
}#include <stdio.h>
void NextHoleX(_Bool b) {} // foo for the sake of the experiment.
void NextHoleY(void) {} // foo for the sake of the experiment.
int main (void)
{
int matrix[25], j;
size_t len = sizeof(matrix) / sizeof(matrix[0]), i;
_Bool flag = 1;
for (i = 0, j = 0; i < len; i++, j++)
{
j == 5 ? NextHoleY(), flag = !flag, j = -1 : 0;
NextHoleX(flag);
}
}注意,这个问题在这里更合适:https://codegolf.stackexchange.com/
https://stackoverflow.com/questions/63087135
复制相似问题