- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在用 python 编写一个数独解决程序,只是为了好玩。这是我目前拥有的:
#!/usr/bin/env python
"""Reads in a file formatted with nine lines each of which has nine characters
corresponding to a sudoku puzzle. A blank is indicated by the value '0'
Eventually should output a solution to the input puzzle"""
import sys
class cell:
value = 0
"""Value of 0 means it is undetermined"""
def __init__(self, number):
self.value = number
self.possible = [2, 2, 2, 2, 2, 2, 2, 2, 2]
"""Possibility a given value can be the number. 0 is impossible, 1 is definite, 2 is maybe"""
def selfCheck(self):
"""Checks if the cell has only one possible value, changes the value to that number"""
if self.value == 0:
if self.possible.count(2) == 1:
"""If there's only one possible, change the value to that number"""
i = 1
for item in self.possible:
if item == 2:
self.value = i
self.possible[i-1] = 1
i+=1
def checkSection(section):
"""For any solved cells in a section, marks other cells as not being that value"""
for cell in section:
if cell.value != 0:
for otherCell in section:
otherCell.possible[cell.value-1] = 0
def checkChunk(chunk):
"""Checks a chunk, the set of rows, columns, or squares, and marks any values that are impossible for cells based on that
chunk's information"""
for section in chunk:
checkSection(section)
def selfCheckAll(chunk):
for section in chunk:
for cell in section:
cell.selfCheck()
cellRows = [[],[],[],[],[],[],[],[],[]]
cellColumns = [[],[],[],[],[],[],[],[],[]]
cellSquares = [[],[],[],[],[],[],[],[],[]]
infile = open(sys.argv[1], 'r')
"""Reads the file specified on the command line"""
i = 0
for line in infile:
"""Reads in the values, saves them as cells in 2d arrays"""
line = line.rstrip('\n')
for char in line:
row = i/9
column = i%9
newcell = cell(int(char))
cellRows[row].append(newcell)
cellColumns[column].append(newcell)
row = (row/3)*3
column = column/3
square = row+column
cellSquares[square].append(newcell)
i+=1
i = 0
while i<50:
checkChunk(cellRows)
checkChunk(cellColumns)
checkChunk(cellSquares)
selfCheckAll(cellRows)
i+=1
displayRow = []
for row in cellRows:
for cell in row:
displayRow.append(str(cell.value))
i = 0
while i < 9:
output1 = ''.join(displayRow[9*i:9*i+3])
output2 = ''.join(displayRow[9*i+3:9*i+6])
output3 = ''.join(displayRow[9*i+6:9*i+9])
print output1 + ' ' + output2 + ' ' + output3
if i%3 == 2:
print
i+=1
我的问题是:
i = 0
while i<50:
checkChunk(cellRows)
checkChunk(cellColumns)
checkChunk(cellSquares)
selfCheckAll(cellRows)
i+=1
我想运行代码,直到它检测到与之前的迭代相比没有变化,而不是当前硬编码的 50 次。这可能是因为不再有合乎逻辑的下一步(需要开始暴力破解值),或者难题已完全解决。无论哪种方式,我都需要一个当前数据集的深拷贝(比如 cellRows)来比较实际副本在通过我的 checkChunk 函数时可能发生的变化。
在 Python 中有这样的东西吗? (如果有更好的方法来检查我是否完成,那也可以,尽管此时我更感兴趣的是我是否可以进行深入比较。)
编辑 - 我尝试使用 copy.deepcopy。虽然这创建了一个很好的深拷贝,但使用“==”检查两者之间的相等性总是返回 false。
最佳答案
可以通过比较str()
来进行非常粗略的比较。这当然不是最好的方法,但考虑到列表的复杂性,这可能没问题。
如果你想要更可靠的东西,你可以写一个递归函数来处理它。
关于Python 深度列表比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16799962/
我正在使用python 2.7 当我尝试在其上运行epsilon操作时出现此错误, 这是我的代码 import cv2 import numpy as np img = cv2.imread('img
1 很多程序员对互联网行业中广泛讨论的“35岁危机”表示不满,似乎所有的程序员都有着35岁的职业保质期。然而,随着AI技术的兴起,这场翻天覆地的技术革命正以更加残酷且直接的方式渗透到各行各业。程序员
我有一个包含多个子模块的项目,我想列出每个子模块的相对深度 该项目: main_project submodule1 submodule1\submodule1_1 submo
我有一张彩色图像及其深度图,它们都是由 Kinect 捕获的。我想将它投影到另一个位置(以查看它在另一个视角下的样子)。由于我没有 Kinect 的内在参数(相机参数);我该如何实现? P.S:我正在
给出了这三个网址: 1) https://example.com 2) https://example.com/app 3) https://example.com/app?param=hello 假
这个着色器(最后的代码)使用 raymarching 来渲染程序几何: 但是,在图像(上图)中,背景中的立方体应该部分遮挡粉红色实体;不是因为这个: struct fragmentOutput {
我希望能够在 ThreeJS 中创建一个房间。这是我到目前为止所拥有的: http://jsfiddle.net/7oyq4yqz/ var camera, scene, renderer, geom
我正在尝试通过编写小程序来学习 Haskell...所以我目前正在为简单表达式编写一个词法分析器/解析器。 (是的,我可以使用 Alex/Happy...但我想先学习核心语言)。 我的解析器本质上是一
我想使用像 [parse_ini_file][1] 这样的东西。 例如,我有一个 boot.ini 文件,我将加载该文件以进行进一步的处理: ;database connection sett
我正在使用 Mockito 来测试我的类(class)。我正在尝试使用深度 stub ,因为我没有办法在 Mockito 中的另一个模拟对象中注入(inject) Mock。 class MyServ
我试图在调整设备屏幕大小时重新排列布局,所以我这样做: if(screenOrientation == SCREEN_ORIENTATION_LANDSCAPE) { document
我正在 Ubuntu 上编写一个简单的 OpenGL 程序,它使用顶点数组绘制两个正方形(一个在另一个前面)。由于某种原因,GL_DEPTH_TEST 似乎不起作用。后面的物体出现在前面的物体前面
static FAST_FUNC int fileAction(const char *pathname, struct stat *sb UNUSED_PARAM, void *mo
我有这样的层次结构: namespace MyService{ class IBase { public: virtual ~IBase(){} protected: IPointer
我正在制作一个图片库,需要一些循环类别方面的帮助。下一个深度是图库配置文件中的已知设置,因此这不是关于无限深度循环的问题,而是循环已知深度并输出所有结果的最有效方法。 本质上,我想创建一个 包含系统中
如何以编程方式在树状结构上获取 n 深度迭代器?在根目录中我有 List 每个节点有 Map> n+1 深度。 我已修复 1 个深度: // DEPTH 1 nodeData.forEach(base
我正在构建一个包含大量自定义元素的 Polymer 单页界面。 现在我希望我的元素具有某种主样式,我可以在 index.html 或我的主要内容元素中定义它。可以这样想: index.html
我正在尝试每 25 秒连接到配对的蓝牙设备,通过 AlarmManager 安排,它会触发 WakefulBroadcastReceiver 以启动服务以进行连接。设备进入休眠状态后,前几个小时一切正
假设有一个有默认值的函数: int foo(int x=42); 如果这被其他人这样调用: int bar(int x=42) { return foo(x); } int moo(int x=42)
是否可以使用 Javascript 获取 url 深度(级别)? 如果我有这个网址:www.website.com/site/product/category/item -> depth=4www.w
我是一名优秀的程序员,十分优秀!