问题标签 [latin-square]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
631 浏览

python - 如何在 Python 中生成所有不同的 3x3 拉丁方的列表

拉丁方是一个 nxn 数组,其中包含 n 个不同的符号,每个符号在每一行中恰好出现一次,在每列中恰好出现一次(如数独)。拉丁方的例子:

这是我尝试过的,但它仍然不是完全不同的

输出是:

结果应该是这样的(顺序无关紧要):拉丁方

0 投票
1 回答
146 浏览

algorithm - 一种将摩天大楼(带有高度线索的拉丁正方形)还原为SAT的方法

我正在尝试将摩天大楼拉丁方问题减少到 SAT。

摩天大楼问题与拉丁广场相同,但此外,摩天大楼难题要求玩家将不同高度的建筑物放置在网格上,以满足网格边缘给出的线索。这些“边缘线索”告诉玩家从给定线索沿棋盘边缘的位置可以看到多少建筑物。(完整解释

因此,为了使用 SAT 求解器来解决这个问题,我尝试了一种类似的方法来使用 SAT 来解决 suduko(我已经这样做了)。所以首先我定义了 n^3 个二进制变量 X_i,j,k 这表明在 i,j 单元格中 k 值为真(所以在 i,j 单元格中我们有一个高度为 k 的摩天大楼)

我以 CNF 的形式添加了以下约束:

  1. 每个单元格仅包含 1 个真正的 var
  2. 每行恰好包含每个值的 1
  3. 每列包含每个值的恰好 1

现在我很难弄清楚我应该为线索和高度添加哪些约束。首先,我考虑了为给定的每个线索添加每个可能的顺序的选项,例如如果从左边我可以看到 3 个摩天大楼(n = 4),那么可能性是:[[2 ,3 ,4,1],[1 ,3,4,2]] 但我认为总共是 O(n!) ......

我使用 ILP 实现了 Suduko 求解器,因此我阅读了有关使用 ILP(整数线性规划)解决此问题的信息。我发现这个链接描述了如何做到这一点。但是我仍然找不到他们在 ILP 情况下添加的适合 SAT 求解器的高度约束的等价物。

非常感谢!

0 投票
0 回答
26 浏览

python - 在 Python 中为拉丁方创建高效的局部搜索技术

我基本上需要使用成本函数创建本地搜索技术。我需要创建一个新函数,随机交换拉丁方中的原始解决方案,然后计算成本,如果它比原始解决方案更好,则交换两者。这需要在成本函数为 0 或完成足够的迭代之前完成。任何帮助都将不胜感激。谢谢!!

0 投票
1 回答
40 浏览

java - 需要帮助在 Java 中移动拉丁方

我目前正在制作一个以用户设置的数字开头的拉丁方格,但为简单起见,我将排除扫描仪代码。

打印出来:

它是如此接近,考虑到它确实以我预先确定的第一个数字开头并且它只打印 4 个整数。我遇到的问题是它比我的订单整数更进一步,并且它打印了两倍的行。知道我能做些什么来解决这个问题吗?

作为参考,这就是我想要它打印的内容: