随机数独生成器


13

我想生成一个完全随机的数独

将Sudoku网格定义为19之间整数的网格,其中一些元素可以省略。如果有一种独特的方法可以完成网格以匹配Sudoku约束(每行,每列和对齐的3 × 3正方形都没有重复的元素),并且在这方面是最小的(即,如果您省略了更多的话),则网格是一个有效的难题。元素拼图有多种解决方案)。9×9193×3

如何生成随机数独谜题,以使所有数独谜题都具有等价性?


这似乎是一个可行的解决方案:dryicons.com/blog/2009/08/14/…– 2012

1
现在有一个关于这个的元问题。请在那里讨论或聊天。
凯文

Answers:


15

可以通过这种方式生成所有数独谜题的精确均匀分布:您可以随机生成9x9网格,然后仅在它是正确的数独网格时才保留它,否则请重试。

917

[1,2,..9]9!

也许您知道我要去的地方:以一种聪明的方式回答这个问题可能会使您想知道数独网格的基本对称性。在这个方向上做了很多工作,以证明17是数独的线索的最小数目(请参见本文),您可以在这里看到5,472,730,538类的精确枚举,包括3,359,232个类似的网格,使用了这些网格对称性:

  1. 数字排列
  2. 行的排列(带和每个带内的行)
  3. 列也一样
  4. 换位

9!,64,64,2

编辑:为了使它适应不完整的难题,您可以随机选择网格的一个子集,用数独求解器检查解决方案是否唯一,如果不是,请重试。这不是均匀分布,因为对于两个网格,具有唯一解决方案的不完整难题的数量可能会有所不同。(否则我会很惊讶)


但贾斯汀(Justin)要求一种产生不完整谜题的方法,以便有一种独特的方法来完成它。即使生成满足Sudoku约束的9x9网格,也不清楚为什么删除单元格的特定子集会给您带来难题,而难题可以通过独特的方式完成。
Janoma 2012年

1
@Janoma:哦,我不好,我会编辑。但是,如果没有定义什么是正确的难题,那并不是很有意义。(只有一个空单元格的网格是一个难题吗?)。我们是否需要一个最小的网格(即,如果删除数字,解决方案就不再是唯一的了吗?)这是一个有趣的问题。
jmad 2012年

“某些元素可以省略”足够精确(即可以删除“一个或多个”元素)。例如,一个有一个空单元格的有效拼图可以用一种独特的方式完成,而一个空拼图则不能完成,因为有多个有效拼图。同样,可以以唯一(平凡​​,空洞)的方式完成已完成的有效拼图。关于最小网格的问题也很有趣,但是与此不同。
Janoma 2012年

@Janoma,jmad:一个有效的难题通常很小,我忘了提。
吉尔(Gilles)'所以

@Gilles这是一个定义吗?我想知道这是否确实是《 OP》的预期含义。这使问题变得更加困难:-)
Janoma 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.