Try to solve the board described by board_string.

    Return sequence of summaries that describe how to get to the solution.

def capture(board):
    """Try to solve the board described by board_string.

    Return sequence of summaries that describe how to get to the solution.
    """
    game = Game()
    v = (0, 0)
    stub_actor = base.Actor('capture', v, v, v, v, v, v, v, v, v)
    root = base.State(board, stub_actor, stub_actor,
                      turn=1, actions_remaining=1)
    solution_node = None
    for eot in game.all_ends_of_turn(root):
        # check for a solution
        if eot.is_mana_drain:  # quick check before checking whole board
            if eot.parent.board.is_empty():
                solution_node = eot
                break
    # if solution found, build the list of swaps
    solution_sequence = list()  # empty sequence (no solution) by default
    if solution_node:
        node = solution_node
        while node:
            # record each swap in the path to the root
            if not isinstance(node, base.Swap):
                node = node.parent
                continue
            summary = base.Summary(node.parent.board, node.position_pair,
                                   None, None, None)
            solution_sequence.append(summary)
            node = node.parent
    return tuple(reversed(solution_sequence))