  The paper describes a number of simple but quite effective methods for
constructing exact solutions of PDEs, that involve a relatively small amount of
intermediate calculations. The methods employ two main ideas: (i) simple exact
solutions can serve to construct more complex solutions of the equations under
consideration and (ii) exact solutions of some equations can serve to construct
solutions of other, more complex equations. In particular, we propose a method
for constructing complex solutions from simple solutions using translation and
scaling. We show that in some cases, rather complex solutions can be obtained
by adding one or more terms to simpler solutions. There are situations where
nonlinear superposition allows us to construct a complex composite solution
using similar simple solutions. We also propose a few methods for constructing
complex exact solutions to linear and nonlinear PDEs by introducing
complex-valued parameters into simpler solutions. The effectiveness of the
methods is illustrated by a large number of specific examples (over 30 in
total). These include nonlinear heat/diffusion equations, wave type equations,
Klein--Gordon type equations, hydrodynamic boundary layer equations,
Navier--Stokes equations, and some other PDEs. Apart from exact solutions to
`ordinary' PDEs, we also describe some exact solutions to more complex
nonlinear delay PDEs. Along with the unknown function at the current time,
$u=u(x,t)$, these equations contain the same function at a past time,
$w=u(x,t-\tau)$, where $\tau>0$ is the delay time. Furthermore, we look at
nonlinear partial functional-differential equations of the pantograph type,
which in addition to the unknown $u=u(x,t)$, also contain the same functions
with dilated or contracted arguments, $w=u(px,qt)$, where $p$ and $q$ are
scaling parameters.
