gpt4 book ai didi

python - 使用 Python 约束解析器求解 N-Queens

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

以下是 N-queens problem 的解决方案使用 Python-Constraint来自 Labix 的解析器.有人可以向我解释一下,或者让我引用任何解释此代码最后 3 行含义的网页吗?

此外,我如何使用 AllDifferentConstraint 约束来缩短下面的代码?

from constraint import *

problem = Problem()
size = 8
cols = range(size)
rows = range(size)
problem.addVariables(cols, rows)
for col1 in cols:
for col2 in cols:
if col1 < col2:
problem.addConstraint(lambda row1, row2, col1=col1, col2=col2:
abs(row1-row2) != abs(col1-col2) and
row1 != row2, (col1, col2))

最佳答案

problem.addConstraint(lambda row1, row2, col1=col1, col2=col2:
abs(row1-row2) != abs(col1-col2) and
row1 != row2, (col1, col2))

这大致等同于:

def constraintFunction (col1, col2):
def innerFunction (row1, row2):
return abs(row1 - row2) != abs(col1 - col2) and row1 != row2
return innerFunction

problem.addConstraint(constraintFunction(col1, col2), (col1, col2))

最后一行等同于:

func = constraintFunction(col1, col2)
problem.addConstraint(func, (col1, col2))

关于python - 使用 Python 约束解析器求解 N-Queens,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29795516/

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