生成器应用,,def conflict


def conflict(state,nextX):    nextY=len(state)    for i in range(nextY):        if abs(state[i]-nextX) in (0,nextY-i):            return True    return Falsedef queues(num=8,state=()):    for pos in range(num):        if not conflict(state,pos):            if len(state)==num-1:                yield (pos,)            else:                for result in queues(num,state+(pos,)):                    yield (pos,)+resultdef preatprint(solution):    def lines(pos,length=len(solution)):        return '. '*(pos)+'x '+'. '*(length-pos-1)    for pos in solution:        print lines(pos)if __name__=='__main__':     import random     preatprint(random.choice(list(queues(8))))

评论关闭