Board logo

标题: [原创代码] [Perl]生成随机数独矩阵 [打印本页]

作者: 523066680    时间: 2017-9-5 18:38     标题: [Perl]生成随机数独矩阵

本帖最后由 523066680 于 2017-9-5 18:46 编辑

[Finished in 0.1s]

遇到过的问题:
像这样的前面5行,都是符合要求的,但是第六行的前三个数字无解。因为剩下395可选,c无论如何都会和第三列其他元素冲突。
1,2,3,4,5,6,7,8,9
4,8,9,2,3,7,6,1,5
6,7,5,1,9,8,3,4,2
8,1,2,5,7,9,4,3,6
7,6,4,3,1,2,9,5,8
a,b,c

所以对第五行和第八行做了针对性处理,测试能否生成完整的下一行。

随机性质:
首行是随机的,后面8行的生成其实有一定规律,但是因为Perl的hash键本来就是随机的,所以我也没有特地做随机处理。

效率:
在我的电脑上产生1000个数独需要0.9秒

有空再想下其他思路~
作者: avgBullsCows    时间: 2017-9-5 19:30

  1. 1 2 3 4 5 6 7 8 9
  2. 4 5 6 7 8 9 1 2 3
  3. 7 8 9 1 2 3 4 5 6
  4. 2 3 1 5 6 4 8 9 7
  5. 5 6 4 8 9 7 2 3 1
  6. 8 9 7 2 3 1 5 6 4
  7. 3 1 2 6 4 5 9 7 8
  8. 6 4 5 9 7 8 3 1 2
  9. 9 7 8 3 1 2 6 4 5
  10. 再做置换
复制代码

作者: 523066680    时间: 2017-9-5 20:32

本帖最后由 523066680 于 2017-9-5 21:16 编辑

回复 2# avgBullsCows

知道,在做不同的尝试。
    http://www.bathome.net/thread-5358-1-1.html

以前的置换方案感觉有些局限,比如还是能看出原来分段放置的规律。但如果是更详细的置换,写法又未必比递归选取简单。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2