Ejemplo n.º 1
0
 def testAssignNakedSingles(self):
     board = Board();
     board.boardFromString(self.NAKED_SINGLES)
     
     # Create a copy of the original board
     originalBoard = Board(board)
     
     easySolver = EasySolver(board)
     result = easySolver.assignNakedSingles()
     
     # Make sure all were assigned
     assert(result == 4)
     
     # Make sure that the board now has the naked singles assigned
     assert(board.getPosition(0, 8) == '3')
     assert(board.getPosition(0, 7) == '5')
     assert(board.getPosition(4, 3) == '6')
     assert(board.getPosition(6, 6) == '2')
     
     # Ensure the only changes to the board are the assigned singles
     assert(board != originalBoard)
     for y in xrange(board.getDimensions()):
         for x in xrange(board.getDimensions()):
             # Don't bother checking fields we know have changed
             if not (x, y) in [(0, 8), (0, 7), (4, 3), (6, 6)]:                         
                 assert(board.getPosition(x, y) ==
                    originalBoard.getPosition(x, y))
Ejemplo n.º 2
0
EASY_STRING = '79....3.......69..8...3..76.....5..2..54187..4..7.....61..9...8..23.......9....54'

logger = logging.getLogger('sudoku')
logging.basicConfig(level=logging.INFO)

board = Board()
board.boardFromString(HARD_STRING)
logger.info('\n' + boardToString(board))
easySolver = EasySolver(board)

assigned = -1
while assigned != 0:
    if easySolver.getAvailableMap().getUnassigned() == 0:
        break
    
    assigned = 0
    assignedNakedSingles = 0
    assignedHiddenSingles = 0
        
    assignedNakedSingles += easySolver.assignNakedSingles()
    logger.info('Found ' + str(assignedNakedSingles) + ' naked singles')
    assignedHiddenSingles = easySolver.assignHiddenSingles()
    logger.info('Found ' + str(assignedNakedSingles) + ' hidden singles')
    assignedLockedCandidates1 = easySolver.assignLockedCandidates1()
    logger.info('Found ' + str(assignedLockedCandidates1) + ' locked candidates')
    
    assigned += assignedNakedSingles
    assigned += assignedHiddenSingles
    assigned += assignedLockedCandidates1
    
logger.info('\n' + boardToString(easySolver.getBoard()))