WaveFunctionCollapse and You
I recently put together a zine explaining how WaveFunctionCollapse works. It’s a very high level overview, so you’ll probably need a little more information to actually implement it, but I think the explanation has helped people understand it a bit better.
The basic metaphor for how the observation and propagation work is that each tile in your input image is a puzzle piece. (The first tricky step: figuring out which pieces can fit together.) You stack a complete set of possible puzzle pieces on each square on a chess board. Then you pick a square and toss out all pieces from these except one. Now the neighboring cells have pieces that can’t possibly fit with the remaining piece, so go through those and toss them out. (Second tricky step: this is tedious unless you’ve got a computer to do the number crunching.)
If you’d like a more in-depth look at how WFC is implemented, I’d recommend reading the paper I co-wrote about WFC, or browsing the many examples found on @ExUtumno’s GitHub page.