Пример #1
0
def backtracker(toTest, possibleElements, solutionSize, isCorrect):
	if not isCorrect(toTest):
		return
	elif solutionSize == len(toTest):
		return toTest
	else:
		#print(toTest)
		start = determine_first_to_test(toTest, len(toTest))
		end = determine_last_to_test(toTest, len(toTest))
		#print(end)
		toTest += [start]
		cur_poss_idx = possibleElements.index(start)
		end_idx = possibleElements.index(end)
		current_branch_idx = len(toTest) - 1
		while True:
			toReturn = backtracker(toTest, possibleElements, solutionSize, isCorrect)
			if toReturn:
				return toReturn #return if toReturn is not None
			if cur_poss_idx == end_idx or cur_poss_idx == len(possibleElements) - 1:
				break
			cur_poss_idx += 1
			#print("cur", cur_poss_idx)
			toTest[current_branch_idx] = possibleElements[cur_poss_idx] #set current branch to next element in possibleElements
			toTest = toTest[:current_branch_idx + 1]
Пример #2
0
from readPuzzle import readPuzz
from backtracker import backtracker
import numpy as np
grid, val = np.array(readPuzz())
if val:
    backtracker(grid)
else:
    print("Exited")