算法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

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...