We present a method that outputs a sequence of simple unitary operations to prepare a given quantum state that is a generalized coherent state. Our method takes as inputs the expectation values of some relevant observables on the state to be prepared. Such expectation values can be estimated by performing projective measurements on $O(M^3 log(M/delta)/epsilon^2)$ copies of the state, where $M$ is the dimension of an associated Lie algebra, $epsilon$ is a precision parameter, and $1-delta$ is the required confidence level. The method can be implemented on a classical computer and runs in time $O(M^4 log(M/epsilon))$. It provides $O(M log(M/epsilon))$ simple unitaries that form the sequence. The number of all computational resources is then polynomial in $M$, making the whole procedure very efficient in those cases where $M$ is significantly smaller than the Hilbert space dimension. When the algebra of relevant observables is determined by some Pauli matrices, each simple unitary may be easily decomposed into two-qubit gates. We discuss applications to quantum state tomography and classical simulations of quantum circuits.