コード例 #1
0
def test_greedy_dfs(weights):
    def compare(original, final, moves, row, column, assert_error_message):
        for delta_r, delta_c in moves:
            original.swap(row, column, row + delta_r, column + delta_c)
            row += delta_r
            column += delta_c

        for r in range(original.rows):
            for c in range(original.columns):
                assert isinstance(original.cell(r, c),
                                  type(final.cell(r, c))), assert_error_message

    # solution should contain move list that gets you to the final board state starting from original board state
    original = Board.create_randomized_board(5, 6)
    _, moves, final_board = GreedyDfs(weights).solve(original, 20)
    compare(original, final_board, moves[1:], moves[0][0], moves[0][1],
            "Greedy DFS yielded an incorrect 4-way move list!")

    # same with diagonals enabled
    original = Board.create_randomized_board(5, 6)
    h = GreedyDfs(weights)
    h.diagonals = True
    _, moves, final_board = h.solve(original, 20)
    compare(original, final_board, moves[1:], moves[0][0], moves[0][1],
            "Greedy DFS yielded an incorrect 8-way move list!")
コード例 #2
0
    def run(rows, columns, depth, weights):
        def update_board_with_matches(board, matches):
            for piece, clusters in matches:
                for r, c in clusters:
                    board.update(r, c, type(piece))

        b = Board.create_randomized_board(5, 6)
        # b = Board([Fire,  Wood,  Water, Dark,  Light, Light,
        #           Water, Fire, Water, Light, Heart, Light,
        #           Fire,  Water, Dark,  Heart, Heart, Wood,
        #           Light, Water, Light, Fire,  Wood,  Wood,
        #           Dark,  Heart, Dark,  Light, Heart, Light], 5, 6)

        m = Board.create_empty_board(rows, columns)
        update_board_with_matches(m, b.get_matches())

        h = GreedyDfs(weights) if False else PrunedBfs(weights)
        h.diagonals = True
        start = time.time()
        moves = h.solve(b, depth)
        performance = time.time() - start

        print('---------------------------------------------')
        print(b)
        print(m)
        print('run time : ' + str(performance))
        print('best move score : ' + str(moves[0]))
        print('start : ' + str(moves[1][0]))
        print('moves : ' + str(moves[1][1:]))
        print(moves[2])

        m = Board.create_empty_board(rows, columns)
        update_board_with_matches(m, moves[2].get_matches())

        print(m)
コード例 #3
0
def test_greedy_dfs(weights):
    def compare(original, final, moves, row, column, assert_error_message):
        for delta_r, delta_c in moves:
            original.swap(row, column, row + delta_r, column + delta_c)
            row += delta_r
            column += delta_c

        for r in range(original.rows):
            for c in range(original.columns):
                assert isinstance(original.cell(r, c), type(final.cell(r, c))), assert_error_message

    # solution should contain move list that gets you to the final board state starting from original board state
    original = Board.create_randomized_board(5, 6)
    _, moves, final_board = GreedyDfs(weights).solve(original, 20)
    compare(original, final_board, moves[1:], moves[0][0], moves[0][1], "Greedy DFS yielded an incorrect 4-way move list!")

    # same with diagonals enabled
    original = Board.create_randomized_board(5, 6)
    h = GreedyDfs(weights)
    h.diagonals = True
    _, moves, final_board = h.solve(original, 20)
    compare(original, final_board, moves[1:], moves[0][0], moves[0][1], "Greedy DFS yielded an incorrect 8-way move list!")
コード例 #4
0
ファイル: test.py プロジェクト: kanoni4567/pad-auto
from pazudorasolver.heuristics.pruned_bfs import PrunedBfs

weights = {
    Fire.symbol: 1.0,
    Wood.symbol: 1.0,
    Water.symbol: 1.0,
    Dark.symbol: 1.0,
    Light.symbol: 1.0,
    Heart.symbol: 1.0,
    Poison.symbol: 0.5,
    Jammer.symbol: 0.5,
    Unknown.symbol: 0.0
}

board = Board.create_randomized_board(5, 6)
matches = board.get_matches()

print(board)
print(matches)

# try GreedyDfs heuristic
solver1 = GreedyDfs(weights)
solution = solver1.solve(board, 50)

print(solution)

# try PrunedBfs heuristic
solver2 = PrunedBfs(weights)
solution = solver2.solve(board, 50)

print(solution)
コード例 #5
0
ファイル: test1.py プロジェクト: xhy12a/Pyquino
    Heart.symbol: 1.0,
    Poison.symbol: 0.5,
    Jammer.symbol: 0.5,
    Unknown.symbol: 0.0
}

#board = Board.create_randomized_board(5, 6)

piece_list = [
    Fire, Wood, Water, Dark, Light, Heart, Fire, Water, Dark, Light, Heart,
    Fire, Fire, Water, Dark, Heart, Heart, Wood, Light, Water, Light, Fire,
    Wood, Wood, Dark, Water, Dark, Light, Light, Light
]
number_of_rows = 5
number_of_columns = 6
board = Board(piece_list, number_of_rows, number_of_columns)
matches = board.get_matches()

print(board)
print(matches)

solver1 = GreedyDfs(weights)
solution = solver1.solve(board, 100)

print(solution)

solver2 = PrunedBfs(weights)
solution = solver2.solve(board, 100)

print(solution)