Нашёл интересный
сайт с исходниками, полезными для своего маджонга =D
Кроме того там на японском описаны алгоритмы, как я понял.
- Построение стены (это просто);
- Посчёт шантен (ууу);
- Подсчёт количества полезных для руки тайлов (уке-ире);
- Определение возможности объявления кана в риичи;
- Подсчёт стоимости руки;
- Определение якуманов (в темпае);
- Определение яку;
- Алгоритмы AI (не описаны, но всё же есть некоторые материалы);
читать дальше
Например,код для расчёта шантен: syanten.h, syanten.cpp. Я проверял этот алгоритм на C#, он работает, там главное в исходном массиве не накосячить. Используется какой-то рекурсивный алгоритм, вырезающий при подсчёте сеты, менцу и пары.
Для подсчёта уке-ире, кажись: yuukouhai.h, yuukouhai.cpp. Суть проста: считаем число шантен для текущей руки, затем по очереди добавляем один тайл в руку (их становится 15), все подряд, и если число шантен получившейся руки меньше, значит этот тайл входит в список уке-ире.
Таблица совместимости яку.
Математика по маджонгу.
Ссылки на сайты с теорией.
А также там есть куча ссылок на библиотечки и материалы по всему этому делу.