12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #!/usr/bin/env python3
- from sudoku import Game
- MAX_V = 9
- class State:
- """Represents a state of the environment"""
- def __init__(self):
- elements = [x for x in range(MAX_SIZE**2)]
- shuffle(elements)
- self.matrix = [[elements[x+(y*MAX_SIZE)] for x in range(MAX_SIZE)] for y in range(MAX_SIZE)]
- def __iter__(self):
- self.row = 0
- self.col = 0
- return self
- def __next__(self):
- if self.row == MAX_SIZE:
- self.row = 0
- self.col = self.col+1
- if self.col == MAX_SIZE:
- raise StopIteration
- elem = self.matrix[self.col][self.row]
- self.row = self.row + 1
- return elem
- def printState(self):
- for i in range(MAX_SIZE):
- print(self.matrix[i])
- print("\n")
-
- class Solver:
- def __init__(self):
- self.tree = {}
- numbers = set()
- choicesboard = []
- # Populate the numbers vector with values from 0 to MAX_V-1
- for x in range(MAX_V):
- numbers.add(str(x))
- # choicesboard is a bidimensional list with numbers for every element
- for x in range(MAX_V):
- row = []
- for y in range(MAX_V):
- row.append(numbers)
- choicesboard.append(row)
- self.choicesboard = choicesboard
- result = getBoard()
- def actions(state):
- actions = []
- return actions
- #def result(state,action):
- #def goalTest(state):
- def eliminateIllValues(state):
- for row in range(MAX_V):
- for col in range(MAX_V):
- if result[col][row] != 0:
- # Eliminate duplicates numbers in a row
- for x in range(MAX_V):
- choicesboard[x][row].remove(result[col][row])
- # Eliminate duplicates numbers in a column
- for y in range(MAX_V):
- choicesboard[col][y].remove(result[col][row])
- # Eliminate duplicates in block (working only for 9x9 cells)
- #for y in range(MAX_V)
- # choicesboard[col][y].del(result[col][row])
- #if __name__ == "__main__":
- # while not goalTest(state):
- # for action in actions(node):
|