Я не новичок в python, но я столкнулся с этой проблемой, которая только что озадачила меня.
Итак, я решал проблему с бегуном по лабиринту, используя A *, а затем находил самый сложный лабиринт дляданное измерение.Для этой цели я создал функцию generateHardMaze (), которая вызывается из основной функции и принимает атрибут newMaze.
Теперь вот где все становится странным, когда я изменяю значение newMaze в условии if внутри цикла while, значение hardMaze изменяется без ввода кода во второе условие if. I 'Я не совсем уверен, почему это произошло, надеясь, что кто-то может мне помочь.
Я использую pycharm в качестве своей IDE и python3.6. * если это что-то меняет.
Я уверенэто не то, как работает упс, но я думаю, что это вещь Python.Кто-нибудь когда-нибудь сталкивался с чем-то подобным?Если да, пожалуйста, посочувствуйте.
Заранее спасибо.
def solveMazeAManH(newMaze,rows,cols):
startTime = time.time()
backTrackPriority = []
setup_cells(rows, cols)
# start and end points of the maze
start = (0, 0)
end = (rows - 1, cols - 1)
current = start
print("The path to be take is: ")
print(current)
frinLength = 0
# traversing the neighbours
while current != end:
unvisited.remove(current)
neighboursDFSandA(newMaze, current, rows, cols)
heuristic = calManhattanDis(current, end) # finding the heuristic for every traversal
try:
if not currentNeighbours:
if not backTrackPriority:
print("No path available!")
return 0
else:
while not currentNeighbours:
current = nextPopMan(backTrackPriority, end)
backTrackPriority.remove(current)
neighboursDFSandA(newMaze, current, rows, cols)
neighbor = leastPathChildMan(heuristic, current, end)
backTrackPriority.append(current)
current = neighbor
print(current)
frinLength += 1
except:
print("No path Found!")
return 0
return frinLength
endTime = time.time()
print("The time taken to solve the maze using A* with manhattan distance: ")
print(startTime - endTime)
def generateHardMaze(newMazes):
rows = len(newMazes)
cols = len(newMazes[0])
hardMaze = newMaze
print("Solving the original maze!")
fringLength = solveMazeAManH(newMazes, rows, cols)
print("Creating new harder Maze:")
pFlag = True
pCout = 0
while pFlag:
count = 0
flag = True
while flag:
point = choice(setup_cells(rows, cols))
if (newMazes[point[0]][point[1]] == 1):
newMazes[point[0]][point[1]] = 0
else:
newMazes[point[0]][point[1]] = 1
if (fringLength < solveMazeAManH(newMazes, rows, cols)):
print("Harder Maze--------------------")
hardMaze = newMaze
fringLength = solveMazeAManH(newMazes, rows, cols)
count = 0
else:
count += 1
if count >= 10:
flag = False
print("one")
newMazes = creatMaze(rows)
pCout += 1
if pCout >= 100:
pFlag = False
print(hardMaze)