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]
from readPuzzle import readPuzz from backtracker import backtracker import numpy as np grid, val = np.array(readPuzz()) if val: backtracker(grid) else: print("Exited")