print N
return N, K
+def printValidationStatus(problem):
+ if validateSolution(problem):
+ print "***CORRECT***"
+ else:
+ print "***WRONG*****"
+
+def validateSolution(problem):
+ global N
+ for row in problem:
+ for i in range(1, N):
+ if row.count(i) >1:
+ return False
+ for col in range(1,N):
+ for i in range(1, N):
+ if [problem[k][col] for k in range(N) ].count(i) >1:
+ return False
+ root = int(N**(0.5))
+ for i in range( root):
+ for j in range(root):
+ cube = [ problem[i*root + k % root][ j*root + k // root] for k in range(N)]
+ for num in range( N):
+ if cube.count(num) >1:
+ return False
+ return True
+
def generate_problem_csolver(N,K):
problem = cs.generateProblem(N)
pprint(problem)
+ printValidationStatus(problem)
np.savetxt('solved/'+str(N) + 'x' + str(N) + '.sol',problem)
removeKDigits(problem, N, K)
# np.savetxt('problems/'+str(N) + 'x' + str(N) + '-' + str(K) + '.problem',problem)
def generate_problem(N, K):
problem = [[0 for i in range(N)] for i in range(N)]
solve(problem)
- np.savetxt('solved/'+str(N) + 'x' + str(N) + '.sol',problem)
+ np.savetxt('solved/'+str(N) + 'x' + str(N) + '.sol',problem)
+ printValidationStatus(problem)
removeKDigits(problem, N, K)
pprint(problem)
np.savetxt('problems/'+str(N) + 'x' + str(N) + '-' + str(K) + '.problem',problem)
else:
solve(problemset)
print('Answer:')
- pprint(problemset)
+ pprint(problemset)
+ printValidationStatus(problemset)
def v(i, j, d):
return N**2 * (i - 1) + N * (j - 1) + d