gpt4 book ai didi

python - 选择行和列唯一的列表元素列表(N Queens)

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:48 27 4
gpt4 key购买 nike

我有一个 - 字符列表列表,它充当一个网格。

我想将每个列和行的一个 - 更改为 Q

这是我到目前为止所得到的:

   import pprint 
import random # I import these classes
grid = [['-'] for n in range(8)]
for i in range (8):
for j in range(8):
inserPoint = random.randrange(8,8)
if (j == inserPoint or i == inserPoint) and (grid[j] != 'Q' or grid[i] != 'Q'):
grid[i][j] = ('Q')
pprint.pprint(grid) #/ how to print one queen per line

这是我的输出。如您所见,网格上的 Q 太多了:

[['-','-','-','-','-','-','Q','-'],
['-','-','-','-','Q','Q','-','-']
['-','-','-','-','Q','-','-','-']
['Q','Q','-','-','-','Q','Q','-']
['-','-','Q','-','Q','-','-','-'].

最佳答案

一些事情:

  1. 你的循环太多了。您可以遍历第一个索引 i,然后只需在 randrange 告诉您的位置插入 Q
  2. 你的 randrange调用错误。它应该有开始和结束。事实上,如果您希望您的Q在行列中是唯一的,那么rangerange 不是合适的工具。
  3. 您的网格设置实际上并没有产生您显示的结果。

这是固定的所有三件事:

In [34]: size = 8
In [35]: grid = [['-' for m in range(size)] for n in range(size)]
In [36]: insertPoints = range(size) # = list(range(size)) in Python 3
In [37]: random.shuffle(insertPoints)
In [38]: for i in range(size):
....: grid[i][insertPoints[i]] = "Q"

给出:

In [39]: grid
Out[39]:
[['-', '-', '-', 'Q', '-', '-', '-', '-'],
['-', 'Q', '-', '-', '-', '-', '-', '-'],
['-', '-', '-', '-', '-', '-', 'Q', '-'],
['-', '-', '-', '-', '-', 'Q', '-', '-'],
['Q', '-', '-', '-', '-', '-', '-', '-'],
['-', '-', '-', '-', 'Q', '-', '-', '-'],
['-', '-', '-', '-', '-', '-', '-', 'Q'],
['-', '-', 'Q', '-', '-', '-', '-', '-']]

(请参阅 this 了解为什么打乱范围在 Python 3 中不起作用)

关于python - 选择行和列唯一的列表元素列表(N Queens),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955560/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com