This function returns the seven pseudo-random colors that make up each of the 50 Marilyns on each Diptych:
1. Background
1. Dark eye shadow (same as background always)
1. Hair
1. Skin
1. Light eye shadow
1. Mole
1. Lipstick
Because it is called 50 times, this function must be snappy in order to not run out of gas.
To ensure this, I used what's called a "greedy algorithm." Here's how it works:
1. Pick a Punk color, assign that to the background.
1. Next, pick a new Punk color that is "visibly different from" the first, and assign that to Marilyn's hair.
1. Do the same thing for the skin etc.
This is fast. But what if, given the choice of BG and hair, there is no suitable skin color? You are stuck. The algorithm never "backtracks" and changes the background after it is set.
Algorithms that backtrack (like [simulated annealing](https://en.wikipedia.org/wiki/Simulated_annealing)) are too expensive, so I just tested a lot and hoped for the best!