code: def capture(board):
      
      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))
docs: Try to solve the board described by board_string.
  
      Return sequence of summaries that describe how to get to the solution.