Advertisement
Guest User

Untitled

a guest
Apr 26th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.55 KB | None | 0 0
  1. def backtrack(self, row, col):
  2.         if self.map[row][col].type == "v" and self.map[row][col].value[0] == 0:
  3.             for i in range(1,10):
  4.                 if (not self.finished) and self.possibleValue(row, col, i):
  5.                     self.map[row][col].value[0] = i
  6.                     print(str(row) + "," + str(col) + ": ")
  7.                     print(self.map[row][col].value[0])
  8.                     if col == len(self.map[row]) - 1:
  9.                         if row < len(self.map) - 1:
  10.                             self.backtrack(row + 1, 0)
  11.                         else:
  12.                             self.finished = True    
  13.                     else:
  14.                         self.backtrack(row, col + 1)
  15.                     if not self.finished:
  16.                         self.map[row][col].value[0] = 0
  17.         else:
  18.             if col == len(self.map[row]) - 1:
  19.                 if (not self.isFinalRowNonV(row)) or self.possibleValue(row, col, self.map[row][col].value[0]):
  20.                     if row < len(self.map) - 1:
  21.                         self.backtrack(row + 1, 0)
  22.                     else:
  23.                         self.finished = True
  24.             else:
  25.                 if (not self.isFinalColNonV(row, col)) or self.possibleValue(row, col, self.map[row][col].value[0]):
  26.                     self.backtrack(row, col + 1)
  27.         return
  28.  
  29.     def possibleValue(self, row, col, value):
  30.         possible = True
  31.         i = row-1
  32.         rowValue = value
  33.         while self.map[i][col].type == "v":
  34.             rowValue += self.map[i][col].value[0]
  35.             if self.map[i][col].value[0] == value:
  36.                 possible = False
  37.             i -= 1
  38.         if self.map[i][col].type == "b":
  39.             maxRowValue = self.map[i][col].value[0]
  40.         elif self.map[i][col].type == "d":
  41.             maxRowValue = self.map[i][col].value[0]
  42.         if rowValue > maxRowValue or (rowValue != maxRowValue and self.isFinalRowV(row, col)):
  43.             possible = False
  44.        
  45.         j = col-1
  46.         colValue = value
  47.         while self.map[row][j].type == "v":
  48.             colValue += self.map[row][j].value[0]
  49.             if self.map[row][j].value[0] == value:
  50.                 possible = False
  51.             j -= 1
  52.         if self.map[row][j].type == "b":
  53.             maxColValue = self.map[row][j].value[1]
  54.         elif self.map[row][j].type == "r":
  55.             maxColValue = self.map[row][j].value[0]
  56.         if colValue > maxColValue or (colValue != maxColValue and self.isFinalColV(row, col)):
  57.             possible = False
  58.  
  59.         return possible
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement