如何创建一个矩阵与移动元素?



我试图为一个8x8矩阵创建一个代码,该矩阵除了[1,1]和[8,8]之外全是零。这些值等于1。然后我想让每个角上的1可以上下左右移动,只要它在矩阵内。我希望能够找出在1相互交叉之前移动了多少次

我知道我需要做2个数组,但真的不确定如何编码。

您可以使用for循环来创建这样的矩阵:

matrix = []
for x in range(8):
matrix.append([])
for y in range(8):
matrix[x].append(0)

则可以将矩阵[1][1]和矩阵[8][8]更改为1。然而,我很确定你指的是矩阵[0][0]和矩阵[7][7],因为列表索引从[0]开始。

matrix[0][0] = 1
matrix[7][7] = 1

要在矩阵中移动1,可以创建一个名为move()的函数,然后记住变量

中1的位置
posX = [0, 7]
posY = [0, 7]
#argument dirn, 0 = right, 1 = left, 2 = up, 3 = down
#argument one, gives which one you want to move
def move(dirn, one):
if dirn == 0 and posX[one] < 7:
matrix[posX[one]][posY[one]] = 0
matrix[posX[one] + 1][posY[one]] = 1
posX[one] = posX[one] + 1
if dirn == 1 and posX[one] > 0:
matrix[posX[one]][posY[one]] = 0
matrix[posX[one] - 1][posY[one]] = 1
posX[one] = posX[one] - 1
if dirn == 2 and posY[one] < 7:
matrix[posX[one]][posY[one]] = 0
matrix[posX[one]][posY[one] + 1] = 1
posY[one] = posY[one] + 1
if dirn == 3 and posY[one] > 0:
matrix[posX[one]][posY[one]] = 0
matrix[posX[one]][posY[one] - 1] = 1
posY[one] = posY[one] - 1

你可以通过在每次移动时给变量加1来找出移动了多少步,直到1相互交叉。然后检查它们是否相互交叉。

moves = 0
while not [posX[0], posY[0]] == [posX[1], posY[1]]:
#make a move
moves += 1

进程结束后的总移动将是移动变量。在while循环之后打印moves变量的值。

print(moves)

最新更新