#!/usr/bin/python # TYPE:default # DESC:A simple pathfinding algorithm. class Node: def __init__(self, name, conns=[]): self.name = str(name) self.conns = list(conns) def connect(self, node): if node not in self.conns: self.conns.append(node) node.connect(self) def __repr__(self): return self.name def findPaths(start, end, progress=[]): progress.append(start) # print "\t"*len(progress), "Start:", start, "End:", end, "Progress:", progress paths = [] # print "\t"*len(progress), "nodes:", str(start.conns) for node in start.conns: # print "\t"*len(progress), progress, "try", node if not (node in progress): if node == end: paths.append(progress + [node]) # print "\t"*len(progress), "end:", str(progress + [node]) else: paths += findPaths(node, end, progress[:]) else: # print "\t"*len(progress), "\tdead" # print "\t"*len(progress), "returning" return paths nodes = [] for nodeNumber in range(7): nodes.append(Node(nodeNumber)) connections = [(1,2),(2,4),(2,3),(3,5),(5,4),(5,6),(6,4),(4,0)] for connection in connections: nodes[connection[0]].connect(nodes[connection[1]])