- using System; 
- using System.Collections.Generic; 
- using System.Linq; 
-   
- public class Test 
- { 
- 	public static void Main() 
- 	{ 
- 		var fixture = ComputeFixtures(new List<string> {"A", "B", "C", "D", "E", "F"}); 
-   
- 		fixture.ForEach(Console.WriteLine);		 
- 	} 
-   
- 	public static List<Round> ComputeFixtures(List<string> listTeam) 
- 	{ 
- 		var result = new List<Round>(); 
-   
- 		var numberOfRounds = (listTeam.Count - 1); 
- 		var numberOfMatchesInARound = listTeam.Count / 2; 
-   
- 		var teams = new List<string>(); 
-   
- 		teams.AddRange(listTeam.Skip(numberOfMatchesInARound).Take(numberOfMatchesInARound)); 
- 		teams.AddRange(listTeam.Skip(1).Take(numberOfMatchesInARound - 1).ToArray().Reverse()); 
-   
- 		var numberOfTeams = teams.Count; 
-   
- 		for (var roundNumber = 0; roundNumber < numberOfRounds; roundNumber++) 
- 		{ 
- 			var round = new Round(); 
- 			var teamIdx = roundNumber % numberOfTeams; 
-   
- 			round.Matches.Add(new Match(teams[teamIdx], listTeam[0])); 
-   
- 			for (var idx = 1; idx < numberOfMatchesInARound; idx++) 
- 			{ 
- 				var firstTeamIndex = (roundNumber + idx) % numberOfTeams; 
- 				var secondTeamIndex = (roundNumber + numberOfTeams - idx) % numberOfTeams; 
-   
- 				round.Matches.Add(new Match(teams[firstTeamIndex], teams[secondTeamIndex])); 
- 			} 
-   
- 			result.Add(round); 
- 		} 
-   
- 		return result; 
- 	} 
- } 
-   
- public class Match 
- { 
- 	public string Team1 { get; set; } 
- 	public string Team2 { get; set; } 
-   
- 	public Match(string team1, string team2) 
- 	{ 
- 		Team1 = team1; 
- 		Team2 = team2; 
- 	} 
-   
- 	public override string ToString() 
- 	{ 
- 		return string.Format("{0} vs {1}", Team1, Team2); 
- 	} 
- } 
-   
- public class Round 
- { 
- 	public List<Match> Matches { get; private set; } 
-   
- 	public Round() 
- 	{ 
- 		Matches = new List<Match>(); 
- 	} 
-   
- 	public override string ToString() 
- 	{ 
- 		return String.Join(Environment.NewLine,  
- 			Matches.Select(m => m.ToString()).ToArray()) 
- 			+ Environment.NewLine; 
- 	} 
- }