算法X Python实现

我在一个未维护的旧网页上找到了算法X的python实现。它工作得很漂亮。该代码非常简洁,没有注释。我没有抓住一件。我知道它有效,但是我不知道如何或为什么。希望python程序员比我自己更先进。

在下面的代码中,“ select”被调用,但是返回值发生了什么。此外,“选择”是否会更改X中的值(即X.pop(j))? “选择”不是传递给X的副本吗?

此代码:

X,Y = exact_cover(X,Y)
    for i,row in enumerate(grid):
        for j,n in enumerate(row):
            if n:
                select(X,Y,(i,j,n))
    for solution in solve(X,[]):
        for (r,c,n) in solution:
            grid[r][c] = n
        yield grid

调用此函数:

def select(X,r):
    cols = []
    for j in Y[r]:
        for i in X[j]:
            for k in Y[i]:
                if k != j:
                    X[k].remove(i)
        cols.append(X.pop(j))
    return cols

来源:https://www.cs.mcgill.ca/~aassaf9/python/algorithm_x.html

Autor:Ali Assaf

相关文章

Python中的函数(二) 在上一篇文章中提到了Python中函数的定...
Python中的字符串 可能大多数人在学习C语言的时候,最先接触...
Python 面向对象编程(一) 虽然Python是解释性语言,但是它...
Python面向对象编程(二) 在前面一篇文章中谈到了类的基本定...
Python中的函数(一) 接触过C语言的朋友对函数这个词肯定非...
在windows下如何快速搭建web.py开发框架 用Python进行web开发...