예제 #1
0
        private (Yaku, int) Flags()
        {
            var bestHan = 0;
            var bestFu  = 0;
            var results = new HashSet <Yaku>();

            foreach (var arrangement in _arrangements)
            {
                var(yaku, fu) = YakuForArrangement(arrangement);
                var han = Han.Calculate(yaku);

                if (han > bestHan || han == bestHan && fu > bestFu)
                {
                    results.Clear();
                    bestHan = han;
                    bestFu  = fu;
                }

                if (han == bestHan && fu == bestFu)
                {
                    results.Add(yaku);
                }
            }

            return(results.OrderByDescending(x => x).First(), bestFu);
        }
예제 #2
0
        public static (int, int) Chankan(ProgressiveScoringData data, WindScoringData wind, TileType winningTile)
        {
            var(yaku, fu) = data.YakuAndFu(wind, winningTile, true);
            var han = Han.CalculateScoringField(yaku);

            return(han, fu);
        }