# Ensure there's no undefined element (for each cell we have a rule)
validateElements(problem)
# ensure each cell at least has one value!
- for i,row in enumerate(problem):
- for j, elem in enumerate(row):
- constr = []
- for econst in elemConsts:
- s1 = csolverlb.getElementRange(solver, elem)
- sconst = csolverlb.getElementRange(solver,econst)
- d = [s1,sconst]
- domain = (c_void_p *len(d))(*d)
- equals = csolverlb.createPredicateOperator(solver, c_uint(ps.CompOp.SATC_EQUALS))
- inp = [elem,econst]
- inputs = (c_void_p*len(inp))(*inp)
- constr.append( csolverlb.applyPredicate(solver,equals, inputs, c_uint(2)))
- b = (c_void_p*len(constr))(*constr)
- b = csolverlb.applyLogicalOperation(solver, ps.LogicOps.SATC_OR, b, len(constr))
- csolverlb.addConstraint(solver,b);
+# for i,row in enumerate(problem):
+# for j, elem in enumerate(row):
+# constr = []
+# for econst in elemConsts:
+# s1 = csolverlb.getElementRange(solver, elem)
+# sconst = csolverlb.getElementRange(solver,econst)
+# d = [s1,sconst]
+# domain = (c_void_p *len(d))(*d)
+# equals = csolverlb.createPredicateOperator(solver, c_uint(ps.CompOp.SATC_EQUALS))
+# inp = [elem,econst]
+# inputs = (c_void_p*len(inp))(*inp)
+# constr.append( csolverlb.applyPredicate(solver,equals, inputs, c_uint(2)))
+# b = (c_void_p*len(constr))(*constr)
+# b = csolverlb.applyLogicalOperation(solver, ps.LogicOps.SATC_OR, b, len(constr))
+# csolverlb.addConstraint(solver,b);
#ensure each cell at least has one value
-# for i,row in enumerate(problem):
-# for j, elem in enumerate(row):
-# csolverlb.mustHaveValue(solver, elem)
+ for i,row in enumerate(problem):
+ for j, elem in enumerate(row):
+ csolverlb.mustHaveValue(solver, elem)
# ensure rows have distinct values
for i in range( N):