Validation 不跨越矩阵边界的验证函数(迷宫)

Validation 不跨越矩阵边界的验证函数(迷宫),validation,matrix,maze,Validation,Matrix,Maze,假设您已经用Python编程了一个m x n矩阵。矩阵之外不可能有值。假设你是在矩阵中移动的东西(比如在迷宫中),你不能跨越边界。当你在迷宫中移动时,你不断地思考你的选择,你可以走哪条路。因此,对于每一步,你都需要检查你是否可以朝每个方向走,或者是否有你无法跨越的边界 考虑一个需要检查下一步的输入是否可能的函数。如果输入是矩阵(x,y)中的位置,则需要检查它是否可以在不跨越矩阵边界的情况下向每个方向移动。因此需要检查位置(x+1,y)、(x-1,y)、(x,y-1)、(x,y+1)是否仍在矩阵中

假设您已经用Python编程了一个m x n矩阵。矩阵之外不可能有值。假设你是在矩阵中移动的东西(比如在迷宫中),你不能跨越边界。当你在迷宫中移动时,你不断地思考你的选择,你可以走哪条路。因此,对于每一步,你都需要检查你是否可以朝每个方向走,或者是否有你无法跨越的边界

考虑一个需要检查下一步的输入是否可能的函数。如果输入是矩阵

(x,y)
中的位置,则需要检查它是否可以在不跨越矩阵边界的情况下向每个方向移动。因此需要检查位置
(x+1,y)、(x-1,y)、(x,y-1)、(x,y+1)
是否仍在矩阵中

您可以使用许多if语句来实现此函数,如
如果x-1<0:
返回False

elif y+1>len(矩阵):
返回False


您可以在每个方向上使用这些if语句,但在我看来,仅仅检查输入就需要做很多工作。是否有内置函数或矩阵属性或更简单的if语句,以便您可以更轻松地检查输入?

这取决于您使用的语言,但大多数情况下,我编写代码来检查类似这样的相邻位置(如果我们不将对角线计算为相邻位置):

//给定x和y中的当前位置。。。
int dx=1,dy=0//先向右检查
对于(int i=0;i=0&&testx=0&&testy)
//given current position in x and y...

int dx=1, dy=0; //first check to the right
for (int i=0; i<4; i++)
{
    int testx = dx, testy = dy; //remember current direction
    dx = -testy; dy = testx;    //next direction is rotated 90 degrees
    testx += x; testy += y;     //new position to test
    if (testx>=0 && testx<width && testy>=0 && testy<height)
    {
        //this position is within the matrix.  do other checks and stuff
    }
}
//given current position in x and y...

for (int dy=-1; dy<=1; ++dy)
{
    for(int dx=-1; dx<=1; dx+=(dy==0?2:1))
    {
        int testx = x+dx, testy = y+dy; //new position to test
        if (testx>=0 && testx<width && testy>=0 && testy<height)
        {
            //this position is within the matrix.  do other checks and stuff
        }
    }
}
//given current position in x and y...

for (int i=0; i<4; ++i)
{
    int dse = (i>>i)&1;
    int dsw = (i^dse)&1;
    int testx = x+dsw-dse, testy = y+1-dsw-dse; //new position to test
    if (testx>=0 && testx<width && testy>=0 && testy<height)
    {
        //this position is within the matrix.  do other checks and stuff
    }
}