I mapped the symbols to $\{0,1,2\}$, so we get:
011 | 221 | 022
001 | 120 | 011
222 | 001 | 120
-----------------
210 | 210 | 210
212 | 201 | 122
001 | 120 | 010
-----------------
020 | 012 |
121 | 020 | ?
210 | 211 |
I found this quite simple algorithm (which has two cases, either it is a row change [type2] or not [type1]):
Type 1:
* we (+1 mod 3) every element
* rotate columns left one step
* rotate last row up
Type 2, row change:
* rotate the matrix 90 degrees
Since the final step is type 1, we get
120 120 120
200 -> 200 -> 202
112 112 110
and then +1 and translate back to cardsymbols.
120 201 ♥♦♣
202 --> 010 --> ♦♣♦
110 221 ♥♥♣
I don't know about the discrepancy. The first and wrong matrix does not make sense to me.
Edit: The solution at @Daedric's link seems to be unnessarily complex...