Programming

CheckIO - Snake

Sep 12, 2013
CHECKIO, PYTHON, Programming

http://www.checkio.org/mission/task/info/snake/python-27/ 呀〜贪吃蛇啊…… 和其他的task不同的是,这个是一次multicall。不过我其实完全可以不考虑这点,每次给出当前map,然后程序给出走法。而寻路的方式,我还是选用A*。虽然每次都会完整的计算一次完整路径,不过我到认为这是免得撞车的好方法。 首先还是需要实现puzzle,不过还是很简单啦。 class AnagramsPuzzle(AStar): """ description """ def __init__(self, goal): super(AnagramsPuzzle, self).__init__(goal) def heuristic(self, node): return abs(self.goal[0]-node.status[0]) + abs(self.goal[1]-node.status[1]) def get_result(self, node): #only care about the first step return node.comment 而且我们还只关心第一步,后面的都不用管,交给下个call来就行。现在到了node了。 class AnagramsPuzzleNode(AStarNode): """ description """ def __init__(self, status, G, parent): super(AnagramsPuzzleNode, self).__init__(status, G, parent) def possible_next_nodes(self): result = [] # get current position position_zero = divmod([j for i in self.status for j in i].index('0'), len(self.status[0])) position_one = divmod([j for i in self. ...