背景突然迷上了数独。不是喜欢求解,而是喜欢出题——一套题能让孩子做好半天。用Excel一秒出一套,这事半功倍的带娃技能要不要? 过程数独的规则就是每行每列每个宫都由不重复的1~9组成。网上不少编程算法还有源码,但编程对于大多数网友来说还是有些门槛的。我们看看用Excel怎么实现他。注:步骤1~5全在Sheet2中,步骤6才回到Sheet1。 1. 预置在Sheet2中预置一个完整的数独,百度搜一套就行。 2. 生成辅助列A用rand()生成9个随机数(列A)。
3. 生成辅助列B再用rank()排序就能生成1~9的随机序列(列B)。
4. 生成辅助列C在序列B的基础上生成一个“下一个数字”的序列C。
5. 数字替换预置数独中的每一个数n,在序列B中找到n(如B18),则序列C中相同位置的数(如C18)就是生成新数独的值。对预置数独所有数字替换一遍就可以生成一个新的数独。
用格式刷刷一下,再按F9刷新,是不是有点儿样子啦?别急,在A1格输入5作为遮蔽比例的控制变量(大体精度10%,B1可以填入文字注释以免以后忘记怎么用)。经过试验,感觉显示四、五成的数效果还可以(也就是参数选择5或者6比较合适)。至此,Sheet2的工作完毕。 6. 遮蔽最后一步,将新数独的部分数字遮蔽就大功告成了。下列操作切换回Sheet1。
调整一下边框样式,接下来就可以按F9爽啦!如果打印出来,一页可以放好几个(就像题图一样),够娃做会儿的了。 后记本方法仅供消遣,并不能确保解的唯一性。欢迎探讨。 |
|