public void TestBuildAllAndCompare() { var minCars = 4; var maxCars = 50; var minRounds = 1; var maxRounds = 2; var builder = new PartialPerfectNGenerator(); for (var rounds = minRounds; rounds <= maxRounds; rounds++) { for (var cars = minCars; cars <= maxCars; cars++) { try { var races = builder.Build(cars, rounds); if (cars == 23 && rounds == 2) { Console.Write(""); } var raceList = GetRaceList(cars); foreach (var race in races) { for (int i = 0; i < race.Length; i++) { for (int j = 0; j < race.Length; j++) { if (i != j) { var key = Key(race[i], race[j]); if (!raceList.ContainsKey(key)) { Console.Write(""); } raceList[key]++; } } } } var min = raceList.MinR(l => l.Value); var max = raceList.MaxR(l => l.Value); if (max.Value - min.Value > 1) { Console.WriteLine("Race {0}x{1} has a min|max of {2}|{3}", cars, rounds, string.Join("-", min.Key, min.Value), string.Join("-", max.Key, max.Value)); } } catch (Exception e) { Console.WriteLine("Error building {0}x{1}\n{2}", cars, rounds, e); } } } }
private void BuildAndWrite(int cars, int rounds) { var builder = new PartialPerfectNGenerator(); var races = builder.Build(cars, rounds); var ints = 1.To(cars); foreach (var r in races) { Console.WriteLine(string.Join("\t", r)); } Console.WriteLine("\t" + string.Join("\t", ints)); foreach (var i in ints) { var racesWithI = races.Where(r => r.Contains(i)); Console.WriteLine(i + "\t" + string.Join("\t", ints.Select(r1 => racesWithI.Count(r => r.Contains(r1))))); } }
private void BuildAndWrite(int cars, int rounds) { var builder = new PartialPerfectNGenerator(); var races = builder.Build(cars, rounds); var ints = 1.To(cars); foreach (var r in races) { Console.WriteLine(string.Join("\t", r)); } Console.WriteLine("\t"+string.Join("\t", ints)); foreach (var i in ints) { var racesWithI = races.Where(r => r.Contains(i)); Console.WriteLine(i+"\t"+string.Join("\t", ints.Select(r1 => racesWithI.Count(r => r.Contains(r1))))); } }