docs: def getSolution(self):
          """
          Find and return a solution to the problem
  
          Example:
  
          >>> problem = Problem()
          >>> problem.getSolution() is None
          True
          >>> problem.addVariables(["a"], [42])
          >>> problem.getSolution()
          {'a': 42}
  
          @return: Solution for the problem
          @rtype: dictionary mapping variables to values
          """
          domains, constraints, vconstraints = self._getArgs()
          if not domains:
              return None
          return self._solver.getSolution(domains, constraints, vconstraints)