I think it is. So far as solvers you can make one pretty simply by trying combinations exhaustively. The trick is that you have to start with the ones that have a low number of possibilities (ideally just one) I think you could also hack a solver into being a generator. See also
https://en.wikipedia.org/wiki/Satisfiability_modulo_theories
an SMT solver is a generalized solver and it is designed to make this kind of thing easy.
It is a super-valuable skill to be able to look something up in the literature and implement so you can learn from other people's experience. If somebody studied computer science in school that would be the most valuable skill they could get, I think.
The last problem in the Python course for Hackerrank for instance involves a string search problem that has to be completed with impossible speed. The solution I know is to use
https://en.wikipedia.org/wiki/Suffix_tree
which looks like a magic trick. There are several things you need to pay attention to to get it to run in O(N), if you knew it was possible you might figure it out after a lot of work but if you look in the literature you'll find exactly what those are. In the case of chess I didn't really understand the importance of different things and how they fit together until I tried it. Book learning + practical experience = usable knowledge.