2013-04-05 3 views
-1

이 작품은 과제물입니다. 나는 2 차원 어레이로 작업 중이며 지금까지 배열을 통해 가져 가고 싶은 경로를 발견했다. 배열에 다른 경로가 있고 그 경로도 통과 할 수 있기를 원하지만 경로를 다시 사용할 수 없습니다. 가 근처 이웃을 찾는목록에 좌표가 이미 있는지 파이썬 확인

0,2,4,1,6,0,0 
2,0,0,0,5,0,0 
4,0,0,0,5,5,0 
1,0,0,0,1,1,0 
6,5,0,1,0,5,5 
0,0,5,1,5,0,0 
0,0,0,0,5,0,0 

내 코드 :처럼 내 배열을 보이는

def check_neighbours(Alist, node): 
     nodes = [] 
     for i in range(0,2): 
       for j in range(0,2): 
         x = node[0]+i 
         y = node[1]+j 
         if x>=0 and y>=0 and (i!=0 or j!=0) and Alist[x][y]>0: 
           nodes.append([x, y]) 

나는 각 촬영의 전체 경로를 빌드 목록에 Y X를 좌표 방문 추가하고있다. 때문에 현재 해당 좌표 여부 테스트하는 방법을 생각할 수없는 I 이웃 (분리 갖는 x 및 y)를 검색하고 방해

inside pathing function 
path taken is ['[0, 1]', '[0, 2]', '[0, 3]', '[0, 4]', '[1, 4]', '[2, 4]', '[2, 5]', '[3, 5]', '[4, 5]', '[4, 6]'] 

가 구축된다

된다 : 여기서 출력의 예는 이미 목록 안에 있습니다. 나는 귀하의 질문에 정말 명확하지 않다

if x>=0 and y>=0 and (i!=0 or j!=0) and Alist[x][y]>0: 
            nodes.append([x, y]) 
+1

조건이 구성되는 방식 (즉, 'i! = 0 or j! = 0')에 따라 변수'nodes'는 절대로 동일한 좌표를 포함하지 않습니다. 물론'check_neighbours' 스코프 내에서'nodes' 변수에 대해서 이야기하는 한. –

답변

0

무엇

nodes = [] 
nodes.append([1,1]) 
nodes.append([2,2]) 
nodes.append([3,3]) 

[1,1] in nodes 
# True 

[1,3] in nodes 
# False 

에 대해, 그래서이 꺼져있을 수 있습니다 : 나는 코드는 다음 두 줄 사이에 맞는 것이라고 생각합니다.

즉, nodes 목록에 추가하려면 이전 노드의 오른쪽 열, 아래 열 또는 두 열 중 하나이어야합니다. 그리고 오른쪽 및 아래 노드 만 고려하고 있기 때문에 (range(0,2)) 결코 중복 목록을 얻을 수 없습니다.

+0

설명 할 필요가없는 드라이브 바이 downvotes가 있어야합니다. – jedwards

관련 문제