def AlgoFullRandom(cls, debug=False): import random agent = Minesweeper(1, 1, cls.size) while len(agent): if debug: print agent agent.step(*random.choice(agent.safeStep))
def AlgoSimpleStrategy(cls, debug=False, default=0.3): def ratio(cls, x, y): fn = lambda x, y: cls[x, y]/float(cls.empty(x, y)) nr = [[_x, _y] for _x in range(x-1, x+2) for _y in (y-1, y+1) if 0 < cls[_x, _y]] nr += [[_x, y] for _x in (x-1, x+1) if 0 < cls[_x, y]] if nr: return max([fn(*_) for _ in nr]) else: return default agent = Minesweeper(1, 1, cls.size, debug=debug) while len(agent): if debug: print agent, len(agent) steps = [[_, ratio(agent, *_)] for _ in agent.safeStep] steps = sorted(steps, key=lambda x: x[1]) agent.step(*steps[0][0])