我正在寻找一种算法来确定当前的麻将手是否是赢家。如果你不熟悉游戏,这里是基本的想法(简化):
- 共有三组瓷砖,每组包含排名 1-9 的瓷砖。还有特殊的瓷砖,共有七种。每张牌有四个副本,因此每种花色有 36 张牌和 28 种特殊牌。
- 一只手有 14 张牌。
- chow是一组三个连续等级的单一花色的牌。
- 乒乓球是一组三个相同的瓷砖。
- 杠是一组四张相同的牌。
- 一对是一组两个相同的瓷砖。
- 获胜手牌是其中的牌形成任意数量的 chow、pongs 和/或 kongs 和一对。
手按花色排序,然后按等级排序。我的想法是这样的:
- 将所有图块标记为未访问且未中奖。
- 访问第一个未访问的图块。
- 检查随后的牌,直到遇到吃、碰或杠,或者直到没有可能。如果组合完成,将所有参与的瓷砖标记为已访问并获胜
- 如果所有的牌都被访问过,检查它们是否都赢了。如果不是所有的图块都被访问过,请转到 2。
问题是,一旦牌是组合的一部分,就不能成为任何其他组合的成员,这可能会使这手牌成为赢家。
关于工作算法的任何想法?