深度搜索解数独
发布时间:2020-12-17 17:27:10 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 def guess(ku,i,v,b = 1): affects = [] for j in range(b,81): if (i / 9 == j / 9 or i % 9 == j % 9 or (i / 9 / 3 * 3 == j / 9 / 3 * 3 an
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 def guess(ku,i,v,b = 1): affects = [] for j in range(b,81): if (i / 9 == j / 9 or i % 9 == j % 9 or (i / 9 / 3 * 3 == j / 9 / 3 * 3 and i % 9 / 3 * 3 == j % 9 / 3 * 3)) and v in ku[j]: ku[j].remove(v) affects.append(j) ku[i].clear() ku[i].add(v) return affects def bfs(ku,i): clone = ku[i].copy() for v in clone: affects = guess(ku,i + 1) if all([len(c) == 1 for c in ku]) or all(ku) and i < 81 and bfs(ku,i + 1): return True else: for j in affects: ku[j].add(v) ku[i] = clone ku = [set(range(1,10)) for i in range(81)] s = '040300000010608000050000007065910872090070003002084601906735018503400029174890365' for i in range(81): v = int(s[i]) if 1 <= v <= 9: guess(ku,v) for i in range(81): if len(ku[i]) > 1: bfs(ku,i) break print ''.join(str(next(iter(c)) if len(c) == 1 else 0) for c in ku) # => 249357186317628954658149237465913872891276543732584691926735418583461729174892365 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |