问题标签 [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 投票
2 回答
2076 浏览

language-agnostic - 拉丁方阵生成器?(类数独约束问题)

目的

我们正在为需要遵循以下约束的实验设计设计一个拉丁方格(类似数独的序列):

  • 值不能连续重复
  • 值不能在列中重复
  • 任何两行中的值不能成对重复

前 3 个约束的示例:

在这里,我们选择了素数,但值是任意的(只要有 6 个不同的值)。请注意,它与 6 x 6 网格中的数独相同,但额外的约束是行间没有重复的对(又名二元组)。也就是说,2 3只出现在第一行,而没有出现在其他行中,以此类推。

  • 值应与符合这些约束的另外 6 个值配对:
    • 第二组值不能连续重复
    • 第二组值不能在列中重复
    • 与第 1 组数值配对时,第 2 组数值不能重复。

也就是说,我们需要另外六个与前六个配对的值(同样是任意的——它们可以是“a、b、c、d、e、f”)。最后一个约束意味着如果你在任何地方2使用 ( , a) ,你就不能再次使用它。

最后的第二组约束是问题所在。对于 n = 6 的 nxn 网格没有解决方案。这就是工作中的活动扳手。我们希望尽量减少重复次数,以制作一对“有点像”的正交拉丁方格。

问题

你以前遇到过这个问题吗?(如果有一种工具可以生成解决方案,那就太好了。)我们只需要一个这样的例子就可以了。我们已经尝试了几种不同的构建策略。

我们正在考虑为其编写求解器的想法,但如果某些东西已经存在,我们希望避免这样做。

0 投票
3 回答
381 浏览

c - 理解这个 C 函数

我试图了解这个函数是如何工作的,我研究了几种算法来生成数独谜题并找到了这个。

测试了该功能,它确实生成了一个有效的 9x9 拉丁方(数独)网格。我的问题是我不明白这个函数是如何工作的,我知道结构是由 ints、p 和 b 组成的,p 将保存表格中单元格的数字,但之后我不明白为什么它创建了更多数组(选项卡 1 和选项卡 2)以及它如何检查拉丁方 =/ 等,总而言之,我完全迷失了。

我不是要求逐行解释,这个函数背后的一般概念。对我有很大帮助!

再次感谢<3

编辑 太好了,我现在了解结构了,谢谢李杰的回答。我仍然不明白的是以随机顺序尝试值的部分)。我不明白它如何检查随机值放置是否有效而不调用检查移动是否合法的代码部分,此外,在放置随机数之后是否有必要再次检查网格是否有效?——</p>

0 投票
1 回答
183 浏览

html - 对单选按钮实施“数独式”(拉丁方)约束

在我的 GUI 中,我需要一个 3x3 的单选按钮数组,限制为每行只能选择一个,每列只能选择一个。

这是否可能是没有 Javascript 的客户端(我很高兴使用 javascript,但希望在 JavaScript 关闭时回退)?还是我唯一的选择 Javascript 和服务器端执行?

0 投票
2 回答
914 浏览

java - Java:多维数组中的连续区域,用于实现拉丁方

我正在编写一个程序,它读取一个潜在的拉丁方格并判断它是否是一个有效的拉丁方格。现在我正在尝试判断所选区域是否是连续的。

同时读取潜在的拉丁广场和该区域的位置。该区域[0,1][0,2][1,1][1,2]将是有效区域,因为它是连续的; [0,0][0,2][1,1][1,2]不会是连续的或有效的,因为[0,0]无法到达。我如何判断它们是否连续?

0 投票
4 回答
2860 浏览

c# - 生成随机拉丁方连续循环

我正在开发一个生成随机网格、拉丁方格和数独的程序。我正在研究拉丁方格,除了我处于连续循环中之外,几乎所有这些都可以正常工作。如果我把它们分开,它们就可以正常工作。可能有一些小事情我做错了,我找不到它。你能看出哪里不对吗?

编辑:对于那些不知道拉丁方是什么的人(如果有人不知道),它通常是一个 9x9 网格,在行和列中都没有重复。

更新:我在 if(notSame) 语句之前发现了 notSame 等于 true 的问题。它总是等于 true,所以不会完成检查行。现在,当我运行时,它不再处于连续循环中,而是行没有重复,但列仍然存在。

更新#2:我现在重做了很多列的编码。我的教授要求我改变一些事情,但它仍然让我陷入一个连续的循环。

我正在使用一个称为网格的二维数组。

0 投票
2 回答
3294 浏览

r - 使用方差分析在 R 语言中复制拉丁方分析

我正在执行一个包含 2 个处理和 2 个块变量(参与者和过程)的 1 个因素(工具)实验。换句话说,一个 2x2 的拉丁方格。

块变量之一是参与者。由于我的样本有 8 个参与者,因此我有 4 个 2x2 拉丁方格。

为了对 1 个拉丁方格进行分析,我通过 R 中的以下命令使用 ANOVA:

我的问题是:如何在 R 中使用复制的拉丁方格执行 ANOVA 测试?

0 投票
4 回答
1224 浏览

java - 用随机数填充二维数组

我开始了一个项目,试图创建一个 Ken Ken 拼图。如果您不确定 Ken Ken 是什么,它与 Sudoku 的相似之处在于行或列中不能有重复的整数值。

我正在尝试使用为每个新行创建的数组列表中的数字填充二维数组。我检查从数组列表中获取的数字是否与它自己的行和列中的任何数字不匹配。

当我运行我的代码时,当我尝试从列表中删除整数值时,我得到一个“索引超出范围”异常。我不确定为什么会发生这种情况,因为我认为我得到了正确的元素。

这是我的代码:

int GRID_SIZE = 4; int[][] grid = new int[GRID_SIZE][GRID_SIZE]; List<Integer> nums = new ArrayList<Integer>();

我对此有几个问题:

首先,为什么我会收到我的错误

其次,有什么比 2D Array 更好的用于网格和放置数字的方式

最后,我是否正确使用了休息

提前感谢您的回答。

0 投票
3 回答
1457 浏览

prolog - Prolog - 拉丁方解

我正在尝试在 Prolog 中编写一个程序来找到一个大小为 N 的拉丁方。

我现在有这个:

0 投票
1 回答
617 浏览

c++ - 如何判断三维正方形是否是拉丁正方形

我需要设计一种算法来判断给定的整数矩阵是否是有效的拉丁方。我以前从未与拉丁方合作过,所以我不知道从哪里开始。经过一番研究,我只发现了写拉丁方格的算法。我唯一想到的是所有列和行的总和应该是相同的,但是我必须检查每个数字是否在同一行和列中重复。这样做,该程序将花费大量时间。我正在使用 C++。

0 投票
1 回答
497 浏览

matrix - 创建一个矩阵并排列每一行

我可以创建一个从 0 到 N 的列表并对其进行排列。但是我怎样才能把它变成矩阵并排列每一行matrix(2,L)