def test_safely_put_one_more_queen_on_a_board_with_knight_pattern_starting_from_a1(self):
     board = get_board(["a1", "b3", "c5", "d7"])
     column_e = ["e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8"]
     board, queen_position = safely_put_one_more_queen(board, column_e)
     self.assertEquals(5, count_queen(board))
     self.assertTrue(validate_board(board))
     self.assertTrue(is_queen(board, "e2"))
 def test_safely_put_one_more_queen_on_a_board_with_knight_pattern_starting_from_h8(self):
     board = get_board(["h8", "g6", "f4", "e2"])
     column_d = ["d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8"]
     board, queen_position = safely_put_one_more_queen(board, column_d)
     self.assertEquals(5, count_queen(board))
     self.assertTrue(validate_board(board))
     self.assertTrue(is_queen(board, "d7"))
 def test_board_with_2_queens_at_a1_and_h8_should_not_valid(self):
     board = u"""
       a b c d e f g h
     8 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ♛
     7 ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     6 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     5 ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     4 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     3 ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     2 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     1 ♛ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     """
     valid = validate_board(board)
     self.assertFalse(valid)
 def test_board_with_2_queens_in_column_a_should_not_valid(self):
     board = u"""
       a b c d e f g h
     8 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     7 ♛ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     6 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     5 ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     4 ♛ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     3 ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     2 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     1 ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     """
     valid = validate_board(board)
     self.assertFalse(valid)
 def test_board_with_2_queens_in_row_1_should_not_valid(self):
     board = u"""
       a b c d e f g h
     8 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     7 ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     6 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     5 ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     4 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     3 ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     2 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     1 ♛ ◻ ◼ ◻ ◼ ◻ ♛ ◻
     """
     valid = validate_board(board)
     self.assertFalse(valid)
 def test_board_with_queens_at_a2_b4_c1_d3_e5_should_valid(self):
     board = u"""
       a b c d e f g h
     8 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     7 ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
     6 ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     5 ◼ ◻ ◼ ◻ ♛ ◻ ◼ ◻
     4 ◻ ♛ ◻ ◼ ◻ ◼ ◻ ◼
     3 ◼ ◻ ◼ ♛ ◼ ◻ ◼ ◻
     2 ♛ ◼ ◻ ◼ ◻ ◼ ◻ ◼
     1 ◼ ◻ ♛ ◻ ◼ ◻ ◼ ◻
     """
     valid = validate_board(board)
     self.assertTrue(valid)
Exemple #7
0
def safely_put_one_more_queen(board, positions=None):
    positions = positions or all_positions
    safe_positions_left = -1 
    best_position = None
    for position in positions:
        result_board = put_queen(board, position)
        board_is_still_valid = validate_board(result_board) 
        more_queen_was_added = count_queen(result_board) > count_queen(board)
        if board_is_still_valid and more_queen_was_added:
            queen_positions = find_queen_positions(result_board)
            safe_positions = find_safe_positions(queen_positions, positions)
            if len(safe_positions) > safe_positions_left:
                safe_positions_left = len(safe_positions) 
                best_position = position
                best_result = result_board
    if best_position == None:
        raise CannotPutMoreQueenException('Not expected here')
    print '%s' % best_position
    return best_result, best_position
 def test_safely_put_one_more_queen_on_empty_board(self):
     board = get_board([])
     board, queen_position = safely_put_one_more_queen(board)
     self.assertEquals(1, count_queen(board))
     self.assertTrue(validate_board(board))
 def test_solve_puzzle_starting_at_middle_of_the_board(self):
     starting_point = "d5"
     board = solve_puzzle(starting_point)
     self.assertTrue(is_queen(board, "d5"))
     self.assertTrue(validate_board(board))
     self.assertEquals(8, count_queen(board))
 def test_solve_puzzle_starting_at_top_left_corner(self):
     starting_point = "a8"
     board = solve_puzzle(starting_point)
     self.assertTrue(is_queen(board, "a8"))
     self.assertTrue(validate_board(board))
     self.assertEquals(8, count_queen(board))
 def test_solve_puzzle_starting_at_bottom_right_corner(self):
     starting_point = "h1"
     board = solve_puzzle(starting_point)
     self.assertTrue(is_queen(board, "h1"))
     self.assertTrue(validate_board(board))
     self.assertEquals(8, count_queen(board))
 def test_safely_put_one_more_queen_on_a_board_with_queen_at_a1_and_b3(self):
     board_with_queen_at_a1_and_b3 = put_queen(board_with_queen_at_a1, "b3")
     board, queen_position = safely_put_one_more_queen(board_with_queen_at_a1_and_b3)
     self.assertEquals(3, count_queen(board))
     self.assertTrue(validate_board(board))
 def test_safely_put_one_more_queen_on_a_board_with_queen_at_a1(self):
     board, queen_position = safely_put_one_more_queen(board_with_queen_at_a1)
     self.assertEquals(2, count_queen(board))
     self.assertTrue(validate_board(board))
 def test_empty_board_should_valid(self):
     valid = validate_board(empty_board)
     self.assertTrue(valid)