【发布时间】:2014-06-22 18:51:17
【问题描述】:
过去几周我一直在开发数独游戏。 游戏作为很多功能,如:玩游戏,打印数独,解决数独。
求解函数使用传统的回溯,但这不是问题,问题是我需要游戏能够产生人道可解的数独,因为我需要一种能够像人类一样解决数独的方法会做的。
如果有人能帮我弄清楚如何做到这一点,我将不胜感激。
【问题讨论】:
-
如果我们知道您的代码是什么,那将会很有用。您是使用纯回溯(通常称为蛮力)还是有一个逻辑求解算法仅将回溯用作最后手段?
-
如果数独(所有人都应该)有一个独特的解决方案,则该解决方案可以通过纯逻辑解决,也可以由人类解决。那么你真正在寻找什么?
-
你不能只创建一个遵循数独规则的随机矩阵,然后随机删除一个数字,使用回溯器解决它以确保存在一个解决方案并且它是唯一的,如果它是可解决的然后你删除另一个并重复,直到没有解决方案或解决方案不是唯一的,然后你只保留以前的数独。我认为这将是 O(n^3)?
-
@k_g 我有一个使用标准回溯(蛮力)的求解方法,但我需要的是一种使用你提到的逻辑求解算法的方法。
-
@DonRoby Don Roby,是的,普通数独是可以解决的,但如果您随机删除错误的数字,则无法使用通用逻辑解决。