  In this work we present a general and versatile algorithmic framework for
exhaustively generating a large variety of different combinatorial objects,
based on encoding them as permutations. This approach provides a unified view
on many known results and allows us to prove many new ones. In particular, we
obtain four classical Gray codes for permutations, bitstrings, binary trees and
set partitions as special cases. We present two distinct applications for our
new framework: The first main application is the generation of pattern-avoiding
permutations, yielding new Gray codes for different families of permutations
that are characterized by the avoidance of certain classical patterns,
(bi)vincular patterns, barred patterns, boxed patterns, Bruhat-restricted
patterns, mesh patterns, monotone and geometric grid classes, and many others.
We also obtain new Gray codes for all the combinatorial objects that are in
bijection to these permutations, in particular for five different types of
geometric rectangulations, also known as floorplans, which are divisions of a
square into $n$ rectangles subject to certain restrictions. The second main
application of our framework are lattice congruences of the weak order on the
symmetric group $S_n$. Recently, Pilaud and Santos realized all those lattice
congruences as $(n-1)$-dimensional polytopes, called quotientopes, which
generalize hypercubes, associahedra, permutahedra etc. Our algorithm generates
the equivalence classes of each of those lattice congruences, by producing a
Hamilton path on the skeleton of the corresponding quotientope, yielding a
constructive proof that each of these highly symmetric graphs is Hamiltonian.
We thus also obtain a provable notion of optimality for the Gray codes obtained
from our framework: They translate into walks along the edges of a polytope.
