This stackoverflow question asks about coloring a hex grid[1]. You can define a function color(hex) = (hex.q - hex.r) mod 3
to get three colors: 0, 1, and 2. Hover or tap on a hex to see the calculation:
Note that % is not the mod operator in some languages. You'll need ((q-r) % 3 + 3) % 3
to calculate mod 3. Further reading: mod and remainder are not the same[2].
One thing we can do with a three-color assignment is assign a rock-scissors-paper style winner/loser to each hexagon edge. In this diagram, red→blue, blue→green, and green→red:
Hexagon H beats neighbor N when color(H) = (color(N) + 1) mod 3
. Thanks to Sagie Levy[3] for pointing out this use of hexagon coloring.