最强大脑中的盲填数独,用程序有没有可能实现?
上个周五的最强大脑,有个盲填数独的选手,着实让人震惊,9*9=81个空格内,填入9个不同的数字,并且对应9种不同的颜色,拿3*3来说,数字:1,2,3;颜色:红黄绿
生成的数独应该是这样
1红 2黄 3绿
2绿 3红 1黄
3黄 1绿 2红
9*9就是9个数字啦 1,2,3,4,5,6,7,8,9
颜色:ABCDEFGHI
这个要怎么实现呢,当然预先会填好两个空格,比如第7行第7列是7,第8行第8列是H
想了半天还是没想起来
------解决方案--------------------没看懂,填出来的东西要符合什么条件
------解决方案--------------------暴力
------解决方案--------------------节目我看了 太牛逼了
------解决方案--------------------如果什么条件都没有的话,这个九宫格是非常容易填的,只要第1行填写
1A, 2B, 3C, 4D, 5E, 6F, 7G, 8H, 9I,
然后下面每一行都是在上面一行的基础上,数字循环左移一位,颜色循环右移一位(当然反过来,数字循环右移,颜色循环左移也可以),这样排出来的肯定可以。
1A 2B 3C 4D 5E 6F 7G 8H 9I
2B 3C 4D 5E 6F 7G 8H 9I 1A
3C 4D 5E 6F 7G 8H 9I 1A 2B
4D 5E 6F 7G 8H 9I 1A 2B 3C
5E 6F 7G 8H 9I 1A 2B 3C 4D
6F 7G 8H 9I 1A 2B 3C 4D 5E
7G 8H 9I 1A 2B 3C 4D 5E 6F
8H 9I 1A 2B 3C 4D 5E 6F 7G
9I 1A 2B 3C 4D 5E 6F 7G 8H
如果只是这样没有什么难度。
然后如果考虑到有部分单元格已经填满了,所以需要有一个对照表(相当于是一个编码解码的过程)
把模型里头的数字i对应到现实题目中的数字X[i],模型里头的颜色j对应到题目中的颜色Y[j],。。。如果只是这样,依然没有什么难度。
最后,由于模型中不同的行对换后,仍然是一个符合条件的模型,因此还需要一个行序的对应关系,
把模型里头的第k行对应到题目中的第Z[k]行。
作为一个程序,只需要考虑数字循环左移而颜色循环右移的情况,数字循环右移颜色循环左移可以通过将行序更改为9,8,7,6,5,4,3,2,1得到。
所以在我看来,只需要找出满足题目条件的这3个对照关系(一共是27维),题目自然解出。
当然,作为人,要能算出并记住这个27维向量,需要一个非常棒的大脑,其难度应该和有一集里头的通过孩子照片反查父母亲照片类似。
------解决方案--------------------
犀利,不过你答案弄反了,数字跟颜色移动方向一样
1A 2B 3C 4D 5E 6F 7G 8H 9I
2I 3A 4B 5C 6D 7E 8F 9G 1H
3H 4I 5A 6B 7C 8D 9E 1F 2G
4G 5H 6I 7A 8B 9C 1D 2E 3F
5F 6G 7H 8I 8A 1B 2C 3D 4E
6E 7F 8G 9H 1I 2A 3B 4C 5D
7D 8E 9F 1G 2H 3I 4A 5B 6C
8C 9D 1E 2F 3G 4H 5I 6A 7B
9B 1C 2D 3E 4F 5G 6H 7I 8A
------解决方案--------------------汗一个先,的确弄错了。。。
如果规定了某行某列的数字或颜色,那么就需要做编码转换了,将那些行、列映射到9L兄弟提供的模型矩阵中。