On the Subject of Simon Shuffles

What's that? This isn't physically possible? Sit down and have some hyper-dimensional stew.

This module presents a 3×3 array of coloured buttons, with some occasionally flashing in a sequence. The goal of this module is to submit the flashing sequence over three stages. Pressing an incorrect button will cause a strike and reset your input. It is also useful to note that waiting three seconds after pressing a correct button will reset your input and start flashing the colour sequence again, without causing a strike.

After successfully inputting a sequence of flashing colours, the colours of the buttons will change, such that every button has a unique colour. Every time this occurs, an extra colour is added to the sequence of flashing colours.

There's a catch to entering the sequence of colours, however. Each button "refers" to another button [including itself], meaning that if the red button refers to orange, pressing red would input orange.

Finding Which Button Refers to Which

First, make a list of colours comprising of the colours of each button in reading order. Name this X. Also, make an empty list and name it Y. Then, for each element in list X, look up its corresponding cell in Table A. Shift the obtained colour forwards through the colour list until it is not in list Y, then add it to list Y. Each colour in list X refers to the colour in the same position in list Y.

The colour list is as follows: Red, Orange, Yellow, Green, Cyan, Blue, Purple, Magenta, White.

Table A

Position (Reading Order)
1 2 3 4 5 6 7 8 9
Colour R M B P O G Y C R W
O W Y G P R C B O M
Y C O R B W M P G Y
G O P W C Y B R M G
C Y G B M P R O W C
B R M C W O G Y P B
P B W O G C P M Y R
M G R M Y B O W C P
W P C Y R M W G B O