Reveal the clues below only as a last resort.
See the code you are entering below or at this link.
Do not hypothesize on the button's color/meaning but make hypothesis on the digit the user might have in mind.
Use the following reasoning: “if the user is trying to type a 0, then when s/he pressed this button, s/he meant that this button was of the color of the digit 0”. By repeating this process for all digits [0 to 9], you can build 10 different hypothetic button-color configurations. Through iterations, some inconsistencies will appear.
The only reliable information is the consistency of the user. The user is assumed to always use the same button to mean the same thing. In other words, a button can only be used to mean yellow or grey, but never both.
The interface adapts to the user. Every users can use the interface differently. The same user can use the same interface differently each time.