Experiment inspired by this video.
Each pixel corresponds to a cell. Red eats blue, blue eats green, green eats red. Black is assimilated randomly by one of its neighbors. Each cell begins with a certain number of points. At each iteration, it ages, losing one point. For one cell to eat another, it needs to have a higher level than its prey. Whenever a cell is eaten, its points are restored to the original value. Finally, young cells are not edible, meaning their predators will have to wait for it to age.
The "edible level" is important to thicken the waves, making them prettier.