Ejemplo n.º 1
0
def sudokuSetup():

	# Setup the initial domain for a standard sudoku game
	sudokuDomain = [1,2,3,4,5,6,7,8,9]
	startDomain = 1
	endDomain = 9
	# Lists to store all of our variables and constraints in
	variables = []
	constraints = []

	# Create all of the variables (from 1 to 81)
	for i in range(1, 81+1):
		variables.append(variable(i, copy.deepcopy(sudokuDomain)))

	constraintValue = combinationsNotEqual(startDomain, endDomain)

	# Add in constraints for each variable
	# Row constraints
	for j in range(startDomain-1, endDomain):
		for k in range(startDomain, endDomain+1):
			for m in range(startDomain, endDomain+1):
				if not alreadyInConstraints(constraints, k+(j*9), m+(j*9), "!=", constraintValue) and k != m:
					constraints.append(binaryConstraint(k+(j*9), m+(j*9), "!=", constraintValue))

	# Column constraints
	for j in range(startDomain, endDomain+1):
		for k in range(startDomain-1, endDomain):
			for m in range(startDomain-1, endDomain):
				if not alreadyInConstraints(constraints, j+(k*9), j+(m*9), "!=", constraintValue) and k != m:
					constraints.append(binaryConstraint(j+(k*9), j+(m*9), "!=", constraintValue))
		
	# Grid constraints
	for h in range(0,9,3):
		for p in range(0, 9, 3):
			for i in range(3):						
				for j in range(1, 4):
					for k in range(3):						
						for m in range(1, 4):
							if not alreadyInConstraints(constraints, (h*9)+p+(i*9)+j,(h*9)+p+(k*9)+m, "!=", constraintValue) and (h*9)+p+(i*9)+j != (h*9)+p+(k*9)+m:
								constraints.append(binaryConstraint((h*9)+p+(i*9)+j,(h*9)+p+(k*9)+m, "!=", constraintValue))

	return variables, constraints
Ejemplo n.º 2
0
def alreadyInConstraints(constraints, left, right, op, constraintValue):
	
	check = binaryConstraint(left, right, op, constraintValue)

	if check in constraints:
		result = True
	else:
		result = False

	del check
	return result