【发布时间】:2015-04-22 11:03:52
【问题描述】:
以下是使用来自Labix 的Python-Constraint 解析器的N-queens problem 解决方案。有人可以向我解释一下,或者让我参考任何解释此代码最后 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))
【问题讨论】:
-
@Bhargav 如果 OP 不理解代码,那么为他们审查它真的没有意义。
-
@Bhargav 代码解释与Code Review 无关。在提出建议之前,请阅读他们的帮助中心。此外,如果您觉得这个问题不适合 Stack Overflow,请考虑解释原因并提出可以使这个问题更适合的建议。
-
在不知道
Problem类的定义或它定义在什么模块中的情况下,无法解释该代码 sn-p 正在做什么。我猜测它正在使用python-constraint。所以你需要阅读他们的文档和相关文献;恕我直言,目前形式的这个问题不适合 Stackoverflow。 -
那个 lambda 函数描述了防止皇后互相攻击的约束。你知道它是如何工作的吗?
-
看来我猜对了模块,因为您已经接受了 Poke 的回答。 :) 我已将相关信息添加到您的问题中,但以后请在您提出问题时提供此类信息。
标签: python constraint-programming n-queens