Peter Norvig 通过结合确定性逻辑运算和可能解决方案的智能遍历,撰写了一篇描述解决数独难题的程序的文章,即使是最困难的难题.后者是递归完成的; 这是该功能(来源):
def search(values):
"Using depth-first search and propagation, try all possible values."
if values is False:
return False ## Failed earlier
if all( len( values[s]) == 1 for s in squares):
return values ## Solved!
## Chose the unfilled square s with the fewest possibilities
_,s = min( (len( values[s]), s)
for s in squares
if len(values[s]) > 1
)
return some( search( assign( values.copy(), s, d))
for d …Run Code Online (Sandbox Code Playgroud) 在Python中,有没有办法在没有"x in"变量的情况下编写这个列表理解(因为它完全没用)?同样适用于生成器表达式.我怀疑这种情况经常发生,但我偶然发现了几次,很想知道.
这是一个例子:
week_array = ['']*7
four_weeks = [week_array[:] for x in range(4)]
Run Code Online (Sandbox Code Playgroud)
(也许,是否有更优雅的方式来构建它?)