Прочитайте это
http://homepage.mac.com/s_lott/books/python/html/p05/p05c05_mahjongg.html
Это может помочь.
"определить, какую плитку выбросить" на самом деле довольно просто.С учетом сбросов и характера раздачи, определение «готовой» раздачи является вопросом определения того, какие потенциальные наборы имеют самые доступные (не сброшенные, не в игре) плитки.
Каждая плитка принадлежитодин из нескольких возможных паттернов (пара, до 3 чау-чау, панг, конг).Легко вычислить плитки, необходимые для заполнения шаблона.Легко уменьшить количество возможных плиток в зависимости от того, что сыграно и что выставлено.Получающиеся возможные образцы могут быть ранжированы.Выбросы отбираются из самых трудных для заполнения комбинаций.
[см. http://www.amazon.com/Mah-Jong-Handbook-Play-Score/dp/0804838747]