本文整理汇总了Python中Solver.is_valid方法的典型用法代码示例。如果您正苦于以下问题:Python Solver.is_valid方法的具体用法?Python Solver.is_valid怎么用?Python Solver.is_valid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Solver
的用法示例。
在下文中一共展示了Solver.is_valid方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: reduce_via_random
# 需要导入模块: import Solver [as 别名]
# 或者: from Solver import is_valid [as 别名]
def reduce_via_random(self, cutoff=81):
temp = self.board
existing = temp.get_used_cells()
# sorting used cells by density heuristic, highest to lowest
new_set = [(x,self.board.get_density(x)) for x in existing]
elements= [x[0] for x in sorted(new_set, key=lambda x: x[1], reverse=True)]
# for each cell in sorted list
for cell in elements:
original = cell.value
# get list of other values to try in its place
complement = [x for x in range(1,10) if x != original]
ambiguous = False
# check each value in list of other possibilities to try
for x in complement:
# set cell to value
cell.value = x
# create instance of solver
s = Solver(temp)
# if solver can fill every box and the solution is valid then
# puzzle becomes ambiguous after removing particular cell, so we can break out
if s.solve() and s.is_valid():
cell.value = original
ambiguous = True
break
# if every value was checked and puzzle remains unique, we can remove it
if not ambiguous:
cell.value = 0
cutoff -= 1
# if we ever meet the cutoff limit we can break out
if cutoff == 0:
break