带娃小妙招 篇五:一秒出一套数独题?Excel六步就搞定
创作立场声明:本文系作者实践总结,欢迎交流。
背景
突然迷上了数独。不是喜欢求解,而是喜欢出题——一套题能让孩子做好半天。用Excel一秒出一套,这事半功倍的带娃技能要不要?
过程
数独的规则就是每行每列每个宫都由不重复的1~9组成。网上不少编程算法还有源码,但编程对于大多数网友来说还是有些门槛的。经过一翻搜索,我找到了一个另类的算法(链接在此,感谢原作者)!我们看看用Excel怎么实现他。注:步骤1~5全在Sheet2中,步骤6才回到Sheet1。
1. 预置
在Sheet2中预置一个完整的数独,百度搜一套就行。
2. 生成辅助列A
用rand()生成9个随机数(列A)。
A12输入公式:=RAND()
拖拽至A20
3. 生成辅助列B
再用rank()排序就能生成1~9的随机序列(列B)。
B12输入公式:=RANK.EQ(A12,$A$12:$A$20)
拖拽至B20
4. 生成辅助列C
在序列B的基础上生成一个“下一个数字”的序列C。
C12输入公式:=B13
拖拽至C19
C20输入公式:=B12
5. 数字替换
预置数独中的每一个数n,在序列B中找到n(如B18),则序列C中相同位置的数(如C18)就是生成新数独的值。对预置数独所有数字替换一遍就可以生成一个新的数独。
在L2输入公式:=VLOOKUP(A2,$B$12:$C$20,2,0)
拖拽至L10
拖拽至T10
用格式刷刷一下,再按F9刷新,是不是有点儿样子啦?别急,在A1格输入5作为遮蔽比例的控制变量(大体精度10%,B1可以填入文字注释以免以后忘记怎么用)。经过试验,感觉显示四、五成的数效果还可以(也就是参数选择5或者6比较合适)。至此,Sheet2的工作完毕。
6. 遮蔽
最后一步,将新数独的部分数字遮蔽就大功告成了。下列操作切换回Sheet1。
在A1输入公式:=IF(RAND()*10>Sheet2!$A$1,Sheet2!L2,"")
拖拽至A9
拖拽至I9
调整一下边框样式,接下来就可以按F9爽啦!如果打印出来,一页可以放好几个(就像题图一样),够娃做会儿的了。
后记
本方法仅供消遣,并不能确保解的唯一性。欢迎探讨。
qiuyue77
校验提示文案
五泡哥哥
校验提示文案
Woodrow
校验提示文案
五泡哥哥
校验提示文案
PeanutThink
校验提示文案
PeanutThink
校验提示文案
Woodrow
校验提示文案
五泡哥哥
校验提示文案
五泡哥哥
校验提示文案
qiuyue77
校验提示文案