- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚在 Python 中创建了一个简单的函数,用于检查数独板(输入以列表形式给出)是否有效。我的做法非常简单:
检查数独板是否为 9x9
检查每个数字每行仅出现一次
现在,一旦我开始这样做,我就想利用并学习一些有关 Python 线程的知识。我阅读了文档,还阅读了一些很棒的通用多线程相关帖子,但我只是想不出在我的检查器中实现它们的方法。
现在,我希望线程工作的方式(正如我所想的)是一个线程检查每一列是否包含 1-9 位数字,另一个线程检查同一事物的行,另外九个线程检查每个 3x3 子网格。你们能告诉我(最后加上一些解释)我如何才能实现这一目标吗?谢谢
最佳答案
因此,在不消除任何挑战的情况下,就如何实现这一目标给出一些一般性指导。让我们从导入 Threading 开始:
import threading
这将让我们使用线程对象!另外,为了知道数独网格在事后是否有效,我们需要一个变量来存储真/假条件。您可以选择单个变量,并使用线程锁来确保没有其他线程访问它同时,或者三个单独去。为简单起见,我将在此示例中使用三个单独的变量
LinesValid = False
ColumnsValid = False
GridsValid = False
然后,由于线程需要一个函数或另一个可调用函数作为其目标来运行,并且您需要一个用于列、行和每个 3x3 网格的线程,因此我们为每个线程需要三个函数。然而,由于有 9 列、9 行和 9 个网格,我相信只为网格执行一个线程会好得多,但出于练习的目的,我认为为网格执行一个线程就可以了。每个。
def CheckLines():
# Line Checking Code
def CheckColumns():
# ColumnCheckingCode
def CheckGrid(UpperLeft, BottomRight):
# GridCheckingCode
无论如何,这里我们定义了三个函数,以及它们适当的行检查代码。就像行会检查 X 轴,列会检查 Y 轴一样,但想法是将其分开。对于 CheckGrid,如果您希望每个图 block 都有一个线程,则需要指定角点,或者如果您决定使用单个线程,则只需将其定义为:
def CheckGrid():
# GridCheckingCode
之后我们需要创建线程:
LineThread = threading.Thread(target=CheckLines)
ColumnThread = threading.Thread(target=CheckLines)
GridThread = threading.Thread(target=CheckLines, args=([0, 0], [2, 2]))
如果不需要网格,可以忽略 GridThread 中的参数。否则,您需要指定角点,并找到一种方法来循环指定的图 block 。
之后,需要启动线程并将它们与主线程连接起来,然后再向用户显示数据:
LineThread.start()
ColumnThread.start()
GridThread.start()
LineThread.join()
ColumnThread.join()
GridThread.join()
if sum(LinesValid, ColumnsValid, GridsValid) == 3:
print("The grid is valid!")
else:
print("The grid is invalid!")
这里我们检查所有的 Bool 是否都为 True:如果是,则 ( 1 + 1 + 1 ) == 3
,并据此向用户打印数据。这些 bool 值将在各自的 Check** 函数中设置为 True/False!
如果您想要一些更直接的解决方案,而不是带有解释的一般方向,请告诉我,我会拼凑一些东西!最后一段代码看起来像这样:
import threading
def CheckLines(self):
# Line Checking Code
def CheckColumns(self):
# ColumnCheckingCode
def CheckGrid(self, UpperLeft, BottomRight):
# GridCheckingCode
LinesValid = False
ColumnsValid = False
GridsValid = False
LineThread = threading.Thread(target=CheckLines)
ColumnThread = threading.Thread(target=CheckLines)
GridThread = threading.Thread(target=CheckLines, args=([0, 0], [2, 2]))
LineThread.start()
ColumnThread.start()
GridThread.start()
LineThread.join()
ColumnThread.join()
GridThread.join()
if sum(LinesValid, ColumnsValid, GridsValid) == 3:
print("The grid is valid!")
else:
print("The grid is invalid!")
关于python - 将线程添加到数独检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840676/
我的填充数独板的代码如下所示: public class SudokuBoard { static int N = 9; static int[][] grid = new int[N
我正在使用“强力”随机方法创建一个数独生成器。我已经能够使用以下代码检查 x/y 轴是否有重复数字: for(l=0; l<9; l++){//Makes all vertical work.
我有一个数独谜题求解器,需要我们使用递归。问题是我检查可用空间的 boolean 值应该通过引用更新当前位置,但事实并非如此。什么会导致这个? public boolean solve() {
我正在尝试为我的项目制作一个数独游戏,但如果我增加数独Grid中的空白空间数量,代码只会抛出异常arrayoutofbounds但是无法弄清楚它来自哪里。 k 是网格中空白空间的数量。 我没有尝试过任
当我尝试编写一个解决数独问题的程序时,我的代码中有一个错误。 我的程序可以运行,但运行效果不佳。它只解决程序中的第一行。 我认为我在那行代码上犯了错误: int ft_rezolva(int **t)
这是我的。该方法应输出该空间中所有可用数字的数组。出于某种原因,这不会过滤掉相同的框/行/列。应该如何正确编码? public int[] getAllowedValues(int row, in
我遇到了一个问题。我是 Java 的新手,正在尝试尝试比以前更复杂的东西。这是我自己的个人文件输入和主要方法与其他方法的一些蚕食源的组合。我对递归仍然很生疏。出于某种原因,更改二维数组“板”中值的分配
嘿,我无法让代码比较给定行或列和 block 的整数,以确保这些参数中没有重复项。我不知道用 3 种不同的方法分离这三个约束是否是一个好主意,或者只是尝试一次完成所有的操作。 public stati
我正在研究 javascript 数独游戏,就输入验证而言,我很困惑。当每个值都输入到数独表中时,我有一个 onkeyup 触发一个函数,我试图用它来确保没有值进入已经存在这样一个值的行/列/框。这是
我正在研究一个小的个人数独游戏并试图扩展它。 到目前为止,我使用递归回溯方法使“求解”部分正常工作,该方法在设法求解递归时返回 true。 现在我正在尝试构建一个独特的解决方案板生成器,并且我在网上找
数独回溯法 int xx = (pos.getX() / 3) * 3; int yy = (pos.getY() / 3) * 3; for (int y =
我是 c++ 的新手,在做作业(数独)时遇到了问题。 说明说:“你必须创建一个新板作为当前板的拷贝(使用复制构造函数并使用 new) 从堆中分配板。” 我试过了(写在board.cc中): #incl
我目前正在使用 java 制作数独游戏,但我似乎无法弄清楚如何正确地循环我的扫描仪。到目前为止,它打印了这个: . 1 . | 3 . . | 8 . . 5 . 9 | 6 . . | 7 . .
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 12 个月前关闭。 Improve
我正在一个由随机生成的数字(从 1 到 4)填充的多维数组中创建一个 4x4 数独游戏。现在我必须搜索重复项并用其他随机数替换它们,直到单行、单列和四个 2x2 子矩阵上都有唯一的数字。我怎样才能做到
我正在制作一个数独板 GUI,它应该看起来像这样 http://www.sudoku.4thewww.com/Grids/grid.jpg 由于某种原因,它只显示最后一个 3*3 板。如果有人能告诉我
嘿,我写了这个程序来解决数独问题,但它只适用于数独矩阵的几个单元格,而其他单元格则返回 0 。你能明白这有什么问题吗?我是 Java 编码新手,无法编写简单的程序真的很痛苦。 public class
这里是 Stack Overflow 的第一个定时器! 首先,我正在使用 JavaFX 创建一个数独求解器。我一切正常,但是,我遇到的唯一问题是创建粗体 3x3 大块,每个大块内有 3x3 单元格。我
我的逻辑求解算法有问题。它很好地解决了具有大量提示的谜题,它只是解决了少于 45 条线索的谜题。 这是求解的算法。 Immutable 是一个 boolean 值,用于确定该值是否可以更改。 cell
我正在尝试使用 Python 线性优化库 Pulp 来解决 killer 数独问题。 https://en.wikipedia.org/wiki/Killer_sudoku 这是我迄今为止的尝试,添加
我是一名优秀的程序员,十分优秀!