Making benchmarks as similar as possible to the original encoding
authorHamed Gorjiara <hgorjiar@uci.edu>
Fri, 7 Sep 2018 20:26:09 +0000 (13:26 -0700)
committerHamed Gorjiara <hgorjiar@uci.edu>
Fri, 7 Sep 2018 20:26:09 +0000 (13:26 -0700)
killerSudoku/csolversudoku.py
killerSudoku/killerSolver.py

index 960fa7f872b327d9d3afb9ce1f4c3df3d858af4d..6e60ea2962d08e2dff8682c5abce5c624c3b7d40 100644 (file)
@@ -130,9 +130,12 @@ def generateKillerSudokuConstraints(N, killerRules, serialize):
 #              for j, elem in enumerate(row):
 #                      csolverlb.mustHaveValue(solver, elem)
 
-       # ensure rows and columns have distinct values
+       # ensure rows have distinct values
        for i in range( N):
                valid(problem[:,i])
+               
+       # ensure columns have distinct values
+       for i in range( N):
                valid(problem[i,:])
        
        # ensure each block has distinct values
index a6241477126de66fdd7d40e6660b4bbea9f53850..c4775044ee5f4fa17e4b85d4c8f7ed769589f0b4 100644 (file)
@@ -247,6 +247,7 @@ def encode_to_cnf(killerRules): #encode a problem (stored in matrix) as cnf
             for j in range(N):
                 temp.append(getIndex(i,j,k))
             cnf = cnf + exactly_one(temp)
+            
         #exactly once in each block
         sqrRootN = int(N**(0.5))
         for block_i in range(sqrRootN):