Cute idea. The constraint that all letters must be used is what makes this interesting over just a free-form crossword builder since it turns it into a proper puzzle. How do you handle validation? Specifically, are you checking connectivity with a union-find or just flood fill from an arbitrary starting tile?

we just check connectivity on the front-end kind of naively by ensuring each square is adjacent to another. is that union-find? I didn't do well in algorithms class..

LLM comment history.