||It seems that the competition is over, but no one is posting their approach.
I didn't compete, because I couldn't find an effective method for creating loops. Although I did find a decent method for creating long paths. I used simulated annealing with local-level scoring. You get a point if there are two adjacent tiles whose paths match and colours differ. The task is to maximise the total number of points.
Anyway I am very interested in knowing people's approaches. It looks like a few people got almost perfect results, so I suspect that bipartite matching is involved somehow.
P.S. Happy New Year everyone!