Пример #1
0
        public KnockoutCalculationOutput Calculate(int playersCount, int qualifyingPlayersCount, int actualPlayersCount)
        {
            var mainDrawPlayersCount       = playersCount - qualifyingPlayersCount;
            var qualifyingDrawPlayersCount = 0;

            if (qualifyingPlayersCount > 0)
            {
                if (actualPlayersCount > mainDrawPlayersCount)
                {
                    qualifyingDrawPlayersCount = actualPlayersCount - mainDrawPlayersCount;
                }
                if (qualifyingDrawPlayersCount <= qualifyingPlayersCount)
                {
                    mainDrawPlayersCount      += qualifyingDrawPlayersCount;
                    qualifyingDrawPlayersCount = 0;
                }
            }
            mainDrawPlayersCount = Math.Min(mainDrawPlayersCount, actualPlayersCount - qualifyingDrawPlayersCount);
            var mainDrawActualPlayersCount       = CalculatePlayersCount(mainDrawPlayersCount + (qualifyingDrawPlayersCount > 0?qualifyingPlayersCount:0));
            var qualifyingDrawActualPlayersCount = CalculatePlayersCount(qualifyingDrawPlayersCount);

            var output = new KnockoutCalculationOutput()
            {
                MainDrawMatchesCount       = mainDrawActualPlayersCount,
                QualifyingDrawMatchesCount = CalcMatchesCount(qualifyingDrawActualPlayersCount, qualifyingPlayersCount),
                ActualMainDrawPlayers      = mainDrawPlayersCount,
                ActualQualifyingPlayers    = qualifyingDrawPlayersCount,
                TotalMainDrawPlayers       = mainDrawActualPlayersCount,
                TotalQualifyingPlayers     = qualifyingDrawActualPlayersCount
            };

            return(output);
        }
        public KnockoutCalculationOutput Calculate(int playersCount, int qualifyingPlayersCount, int actualPlayersCount)
        {
            var mainDrawPlayersCount = playersCount - qualifyingPlayersCount;
            var qualifyingDrawPlayersCount = 0;
            if (qualifyingPlayersCount > 0)
            {
                if (actualPlayersCount > mainDrawPlayersCount)
                {
                    qualifyingDrawPlayersCount = actualPlayersCount - mainDrawPlayersCount;
                }
                if (qualifyingDrawPlayersCount <= qualifyingPlayersCount)
                {
                    mainDrawPlayersCount += qualifyingDrawPlayersCount;
                    qualifyingDrawPlayersCount = 0;
                    
                }
            }
            mainDrawPlayersCount = Math.Min(mainDrawPlayersCount, actualPlayersCount - qualifyingDrawPlayersCount);
            var mainDrawActualPlayersCount = CalculatePlayersCount(mainDrawPlayersCount + (qualifyingDrawPlayersCount>0?qualifyingPlayersCount:0));
            var qualifyingDrawActualPlayersCount = CalculatePlayersCount(qualifyingDrawPlayersCount);

            var output = new KnockoutCalculationOutput()
            {
                MainDrawMatchesCount = mainDrawActualPlayersCount,
                QualifyingDrawMatchesCount = CalcMatchesCount(qualifyingDrawActualPlayersCount, qualifyingPlayersCount),
                ActualMainDrawPlayers = mainDrawPlayersCount,
                ActualQualifyingPlayers = qualifyingDrawPlayersCount,
                TotalMainDrawPlayers = mainDrawActualPlayersCount,
                TotalQualifyingPlayers = qualifyingDrawActualPlayersCount
            };

            return output;
        }