自己实现的就是成就感满满
python吧
全部回复
仅看楼主
level 12
继标准数独的随机生成和求解攻克后,花了四天时间,搞了五百行左右有效代码,总算把异形数独也搞定了,撒花
写完总结下来,异形数独推理逻辑比标准数独复杂一点,相对有难度的是随机生成异形9宫格框架,要保证9个异形9宫格内部不存在断开且刚好填满9乘9的格子
最让我抓狂的,反而是随机生成有效解的部分,因为9宫格的形状,用回溯每猜一个数字都要受到更多的掣肘,这就导致暴力搜索不管用了,用一个随机框架从头开始猜,随随便便都要跑两三分钟,绕了一大圈把并发、协程这些听着高大上的手段都试了也一样不管用,结果解决办法意想不到的简单,随机生成三行初始值,根据这三行初始值用推理部分的逻辑强推,再套个装饰器,推完结果不对就重新调用,反而因为推理部分速度极快,使得多次尝试也能控制在一秒左右,总算成了,开心[你懂的]
2024年07月22日 05点07分 1
吧务
level 12
[真棒]
2024年07月22日 09点07分 2
level 7
太强了
2024年07月22日 10点07分 3
level 11
[真棒]
2024年07月22日 14点07分 4
level 1
你这光输出就得琢磨好久吧[啊]牛逼了
2024年07月22日 15点07分 5
输出这个函数其实逻辑不难,我的主函数返回的是两个9乘9的二维数组,第一个是函数解,第二个是9个异形9宫格的框架,拿到这两个数组就能拿到这个数独的所有信息,再去输出就都是指针操作了,还是有点复杂,要用到好多个if判断
2024年07月23日 00点07分
level 11
nb
2024年07月22日 16点07分 6
level 1
字词
2024年07月23日 00点07分 7
level 11
大佬[真棒]
2024年07月23日 01点07分 8
level 1
666
2024年07月23日 04点07分 9
level 1
难点还是在于怎么控制生成的数独谜题只有唯一解
2024年07月23日 10点07分 11
这个倒是不难,我分了两套逻辑,一套是给定初始值的逻辑,如果给定的初始值能推出唯一解那就一定能推出,如果给定的初始值不能推出唯一解,那么推理过程最后会留下空位,此时就会进入第二套逻辑开始暴力搜索
2024年07月23日 10点07分
如果暴力搜索也无法获取有效解,则说明给定的初始值是有冲突的,这个时候会返回带空位的结果,就能被外层的装饰器捕获
2024年07月23日 10点07分
我这里说的可以推出唯一解的初始值,也包括那种推到后面必须要靠猜来完成剩余空格的场景,因为我在推理过程中有维护几个用于协助推理的数组,所以进入第二套逻辑时,就能大幅缩小暴力搜索范围
2024年07月23日 10点07分
这只是说明存在解,不代表解唯一
2024年07月23日 10点07分
level 1
牛啊[真棒]之前我看到回溯解决数独也是楼主吧。最近为了准备找实习刷leetcode真的被折磨死了
2024年07月24日 07点07分 13
确实是我,你如果和我一样也是一个喜欢数独的玩家,相信你也能设计出一个自己的解数独算法
2024年07月24日 07点07分
@攒银子的但丁 哈哈谢谢,我找的主要算法岗还是,但为了面试也要刷力扣这种题[泪]
2024年07月24日 09点07分
level 1
有兴趣可以去搜一下dancing-links-X,利用十字链表建模精确覆盖问题,可以秒算16×16的任何数独
2024年07月24日 18点07分 14
1