미로 해결자를 만들려고합니다.
두 개의 알려진 좌표를 연결하는 도미노와 비슷하거나 덜한 [x, y] 좌표 목록을 정렬 및 필터링 할 수 있습니까?
# [2, 2] is start
# [6, 2] is end
[[2, 2], [4, 2], [5, 2], [2, 3], [4, 3], [2, 4], [3, 4], [4, 4], [2, 5], [4, 5], [5, 5], [6, 2]]
# Shortest path from Start to End
[[2, 2], [2, 3], [2, 4], [3, 4], [4, 4], [4, 3], [4, 2], [5, 2], [6, 2]]
현재 내 문제를 해결하는 가장 좋은 방법은이 게시물에서 발견 되었습니다. 2d 배열 파이썬에서 셀에 대한 최단 경로 가져 오기
다음은 주어진 코드를 사용한 방법입니다. 완벽하게 작동합니다.
import collections
start = (2, 2)
end = (6, 2)
grid = [(2, 2), (4, 2), (5, 2), (2, 3), (4, 3), (2, 4), (3, 4), (4, 4), (2, 5), (4, 5), (5, 5), (6, 2)]
queue = collections.deque([[start]])
seen = set(start)
while queue:
path = queue.popleft()
(x, y) = path[-1]
if (x, y) == end:
return path
for x2, y2 in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)):
if (x2, y2) not in seen and (x2, y2) in grid:
queue.append(path + [(x2, y2)])
seen.add((x2, y2))
print(path)
# path is [(2, 2), (2, 3), (2, 4), (3, 4), (4, 4), (4, 3), (4, 2), (5, 2), (6, 2)]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다