Вы можете использовать цикл 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
Чтобы переместить единицы по матрице, вы можете создать функцию с именем move() и затем запомнить позиции единиц в переменных
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 к переменной каждый раз, когда вы делаете ход. Затем проверьте, не пересекаются ли они друг с другом.
moves = 0
while not [posX[0], posY[0]] == [posX[1], posY[1]]:
#make a move
moves += 1
Общее количество сделанных ходов будет переменной по ходу после завершения процесса. Выведите значение переменной moves после цикла while.
print(moves)
Если вы можете описать его, вы можете начать кодировать его: какой код вы уже придумали?
bfs — хорошая точка для начала