- def conflict(state,nextX):
- nextY=len(state)
- for i in range(nextY):
- if abs(state[i]-nextX) in (0,nextY-i):
- return True
- return False
- def 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,)+result
- def 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))))
- #该片段来自于http://www.codesnippet.cn/detail/1612201411265.html
来源: http://www.codesnippet.cn/detail/1612201411265.html