当前位置:首页 > 实用技巧 >

空白数独表格制作(如何在excel中制作数独)

来源:原点资讯(www.yd166.com)时间:2023-11-11 23:02:59作者:YD166手机阅读>>

大家好,我是公众号3分钟学堂的郭立员,今天继续我们的按键精灵安卓版学习。

前些天下载了一个数独的游戏,简单的难度玩起来还行,稍微难点的解起来就比较费劲了。

于是决定写个脚本来替我完成。

空白数独表格制作,如何在excel中制作数独(1)

可能有些朋友没玩过数独游戏,我简单说一下它的规则,如上图: 它是一个9*9的格子,分别用1-9数字填入空白格中。

规则:

① 每一行9个数字不重复

② 每一列9个数字不重复

③ 分成九宫,每一宫的9个数字也不重复

空白数独表格制作,如何在excel中制作数独(2)

在空白格中填写数字使其同时满足上面3个规则,就可以得到一个唯一的数独表格了。

我去写脚本也是围绕着这3个规则去写。

说一下我的思路,拿好小本子记一下。

第一步:把每一个空格用0代替

第二步:从左上角开始,按行去把每一个0用数字1-9替换,替换的数字满足上面说的3个规则。

从第一个0(空格)开始试着填,填写的数字从1开始,如果1不满足规则,填2,以此类推,直到有满足规则的数字,填上临时保存。

第三步:当填到某一空格的时候,发现1到9都不能满足规则,那么说明前面有填错的地方,这时要回溯到上一个空格,然后把之前填的数字加上1再去尝试,如果能继续填下去,就接着填,如果不能了就继续再回溯一个空格,重复这个操作,知道所有的空格都填完。

看一下我做的效果:

空白数独表格制作,如何在excel中制作数独(3)

代码如下:

Dim arr={_ {0,0,5,0,4,0,0,3,0},_ {8,4,2,0,0,0,0,9,0},_ {0,0,0,9,6,0,0,5,4},_ {0,0,0,6,0,4,8,0,0},_ {6,0,3,0,0,0,7,0,9},_ {0,0,4,3,0,7,0,0,0},_ {4,2,0,0,3,1,0,0,0},_ {0,5,0,0,0,0,3,6,1},_ {0,9,0,0,7,0,4,0,0}_ } file.Write ("/sdcard/pictures/shudu.txt") Dim arrshu,shu,k=0 For 200 If k=0 Then If writeshu(1, 1) Then shu=File.ReadLine("/sdcard/pictures/shudu.txt",1) TracePrint shu TracePrint "清除"&shu file.DeleteLine "/sdcard/pictures/shudu.txt", 1 TracePrint "在",shu,"基础上 1" arrshu=split(shu,",") TracePrint "坐标",arrshu(0),arrshu(1) TracePrint "数",arrshu(2) 1 If arrshu(2) = 9 Then TracePrint "已经是9了,无法继续加" arr[CInt(arrshu(0))][CInt(arrshu(1))] = 0 TracePrint arrshu(0),arrshu(1),"归零" k=1 Else TracePrint "开始加1" For i = arrshu(2) 1 To 9 If CheckUp(arr, i, CInt(arrshu(0)), CInt(arrshu(1))) Then TracePrint "添加新的数字",arrshu(0),arrshu(1),i arr[CInt(arrshu(0))][CInt(arrshu(1))] = i TracePrint arrshu(0)&","&arrshu(1)&","&i file.WriteLine "/sdcard/pictures/shudu.txt", 1, arrshu(0) & "," & arrshu(1) & "," & i Exit For End If If i = 9 Then TracePrint "9个数字都不满足" arr[CInt(arrshu(0))][CInt(arrshu(1))] = 0 TracePrint arrshu(0),arrshu(1),"归零" k=1 End If Next End If End If Else TracePrint "再次打开" shu = File.ReadLine("/sdcard/pictures/shudu.txt", 1) file.DeleteLine "/sdcard/pictures/shudu.txt", 1 TracePrint shu arrshu = Split(shu, ",") arr[CInt(arrshu(0))][CInt(arrshu(1))] = 0 If arrshu(2) = 9 Then TracePrint "已经是9了,无法继续加" arr[CInt(arrshu(0))][CInt(arrshu(1))] = 0 TracePrint arrshu(0),arrshu(1),"归零" Else TracePrint "开始加1" For i = arrshu(2) 1 To 9 If CheckUp(arr, i, CInt(arrshu(0)), CInt(arrshu(1))) Then TracePrint "添加新的数字",arrshu(0),arrshu(1),i arr[CInt(arrshu(0))][CInt(arrshu(1))] = i TracePrint arrshu(0)&","&arrshu(1)&","&i file.WriteLine "/sdcard/pictures/shudu.txt", 1, arrshu(0) & "," & arrshu(1) & "," & i k=0 Exit For End If If i = 9 Then TracePrint "9个数字都不满足" TracePrint arrshu(0),arrshu(1),"归零" arr[CInt(arrshu(0))][CInt(arrshu(1))] =0 End If Next End If End If Next For i = 1 To 9 Dim q="" For j = 1 To 9 q=q&arr[i][j]&" ," Next TracePrint q Next Function writeshu(a,b) For i = 1 To 9 For j = 1 To 9 If arr[i][j] = 0 Then traceprint "["&i,j&"]", arr[i][j] For num = 1 To 9 If CheckUp(arr, num, i, j) Then arr[i][j] = num traceprint "修改后["&i,j&"]", arr[i][j] file.WriteLine("/sdcard/pictures/shudu.txt",1,i&","&j&","&num) Exit For End If If num = 9 Then TracePrint "没有符合要求的" writeshu=true Exit Function End If Next End If If i = 9 and j = 9 Then For i = 1 To 9 q="" For j = 1 To 9 q=q&arr[i][j]&" ," Next TracePrint q Next EndScript End If Next Next End Function Function CheckUp(arr,num,row,col) dim row3= int((row-1)/3)*3 1 dim col3= int((col-1)/3)*3 1 For i = 1 To 9 If arr[row][i] = num Then CheckUp=False Exit Function End If If i = 9 Then TracePrint "第"&row&"行没有数字"&num For j = 1 To 9 If arr[j][col] = num Then CheckUp=False Exit Function End If If j = 9 Then TracePrint "第"&col&"列没有数字"&num For s = row3 To row3 2 For t = col3 To col3 2 If arr[s][t] = num Then CheckUp=False Exit Function End If If s = row3 2 and t = col3 2 Then CheckUp=true TracePrint "九宫格内没有重复的" End If Next Next End If Next End If Next End Function

这个代码写了一个上午,写的我头都大了,反反复复测试了好多遍,目前中等难度的数独都可以解出来。

因为没有做大量的测试,肯定会有bug,懒得弄了,就这样了。

好了今天的内容就这些,觉得还行,点个赞吧,更多内容查看历史文章。

栏目热文

word表格数字计算方法(word表格里数字怎么计算)

word表格数字计算方法(word表格里数字怎么计算)

Hello大家好,我是帮帮。今天跟大家分享一下word计算技巧,简单易学。有个好消息!为了方便大家更快的掌握技巧,寻找捷...

2023-11-11 23:10:40查看全文 >>

表格自动生成数独(excel一键生成数独表格)

表格自动生成数独(excel一键生成数独表格)

以下是一些使用Excel制作的小游戏,可以在闲暇时间放松一下:1. 扫雷游戏:可以创建一个Excel表格,隐藏一些单元格...

2023-11-11 22:51:46查看全文 >>

幸福一家人高清完整版(幸福一家人在线观看完整版)

幸福一家人高清完整版(幸福一家人在线观看完整版)

"陆毅的家庭幸福:两位可爱小公主的快乐成长"陆毅,中国内地著名演员,以其英俊的外表和出色的演技而备受观众...

2023-11-11 22:59:15查看全文 >>

幸福一家人房永福告子女第几集(幸福一家人房永福打官司是哪集)

幸福一家人房永福告子女第几集(幸福一家人房永福打官司是哪集)

这部剧的名字是《幸福一家人》,看到现在才知道原来幸福只是房永福的终极想像。老话说多子多福。可是在这部剧中,三个已经成年的...

2023-11-11 23:26:24查看全文 >>

幸福一家人父亲打官司大结局(幸福一家人法院打官司全集)

幸福一家人父亲打官司大结局(幸福一家人法院打官司全集)

《幸福一家人》这个剧里的父亲太像我们真实的生活中父亲的写照——勤劳、隐忍、为子女默默付出不求回报,但却疏于跟子女沟通导致...

2023-11-11 23:00:07查看全文 >>

空白的数独表格怎么制作(excel怎么制作数独)

空白的数独表格怎么制作(excel怎么制作数独)

空白四宫数独四宫格如上图,有四行四列,四个小正方形是四个宫,即为四宫数独名称的由来。完整的四宫数独上图就是一个填写完整的...

2023-11-11 22:55:52查看全文 >>

excel怎么做一个数独表格(excel中一键生成数独)

excel怎么做一个数独表格(excel中一键生成数独)

各位朋友,你们好。我最近分享了一些关于条件格式应用的例子,而且这些应用还不是常规的用法,我是想通过这些创意分享,让大家知...

2023-11-11 23:19:50查看全文 >>

手机表格怎么制作数独(excel怎么自动做数独)

手机表格怎么制作数独(excel怎么自动做数独)

随着教育双减改革的推进,校外培训机构的缩减,职业教育的分流,家庭教育将被推到前所未有的重要高度,如何培养孩子的各科学习兴...

2023-11-11 23:02:16查看全文 >>

用excel表格做数独(excel怎么制作数独)

用excel表格做数独(excel怎么制作数独)

需要解释的是,我个人很喜欢数独,很多技巧是在玩的时候慢慢悟的,网上也有看到过一些技巧,但似乎没有什么标准的命名方法,因...

2023-11-11 22:55:05查看全文 >>

word表格怎么求差数(word里的表格怎么求差)

word表格怎么求差数(word里的表格怎么求差)

(一)常规的估算测试工作量的方法作为一个管理者,你是否被询问到某个项目要花多少时间,多少人力测试;或是作为一个普通的测试...

2023-11-11 23:13:30查看全文 >>

文档排行