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; }