This is very neat! Indeed a perfect application of graph coloring. Very nicely explained, very pedagogical. Now the world has 3 ways of solving them. This one is probably the fastest since the Mathematica function FindVertexColoring does all the heavy-lifting, and it is probably some nice fast library. I'm curious if it also implements a depth-first recursive method or a more intelligent way?
It is good to see as well that now you can just upload a notebook, i had to make all the code blocks and images and so on by hand.
Thanks a lot for sharing!!