|
|
1
1
这其实很有趣。问题不在于返回值,而在于找到解决方案后停止函数。 这个项目似乎找到了所有可能的解决方案,而不仅仅是它遇到的第一个。对于您给出的Sodoku板示例,只有一种解决方案,因此此功能并不明显。 为了让sodoku board退出函数,我们有一些选择:过早地停止函数,只获得第一个结果有点棘手,但只获取所有结果很容易,我甚至不必完全理解函数的流程。我会有一个列表,每次找到一个解决方案时,我都会将当前网格数组的一个副本添加到解决方案集中(从技术上讲,它是一个列表,因为np.array显然是不可散列的)。找出代码中的列表的附加位置很容易,这就是print语句的位置。我只是让列表在旧的返回点返回,而隐式返回在函数的末尾。 唯一值得注意的变化是solve_网格函数。好的,下面是代码:
你也可以做一些事情,让它只找到第一个x的解决方案,这可能会很有趣。最好不要使用全局数组,而是将电路板传递给函数。 |
|
|
2
0
我认为这段代码背后的想法是对网格进行一些操作,但使全局网格不可更改。通过使用copy()方法,您仍然可以获得非None值:
|