internal string GetGameChangersTable() { if (!Matchups.Any(x => string.IsNullOrEmpty(x.Winner))) return string.Empty; Console.Write("Building Game Changers"); gameChangers = new List<GameChangerLine>(); StringBuilder buf = new StringBuilder(); buf.AppendLine("WIN PERCENTAGES BASED ON SINGLE GAME OUTCOMES"); buf.AppendLine("ENTRY NAME " + string.Join("|", Matchups.Where(x => String.IsNullOrEmpty(x.Winner)) .Select(x => string.Format("{0} {1} ", x.Away.PadLeft(5), x.Home.PadLeft(4))).ToArray())); buf.AppendLine(new string('-', 20 + 14*Matchups.Count(x => String.IsNullOrEmpty(x.Winner)))); foreach (Matchup m in Matchups.Where(x => String.IsNullOrEmpty(x.Winner))) { Console.Write('.'); m.Winner = m.Away; m.Recalc(); BuildWeekPossibilities(); CalculateOutcomes(); foreach (PlayerEntry e in PlayerEntries) { GameChangerLine line = gameChangers.FirstOrDefault(x => x.EntryName == e.Name); if (line == null) { line = new GameChangerLine(e.Name); gameChangers.Add(line); } line.Winners[m.Winner] = 100*GetOverallWinProbability(line.EntryName); } m.Winner = m.Home; m.Recalc(); BuildWeekPossibilities(); CalculateOutcomes(); foreach (PlayerEntry e in PlayerEntries) { GameChangerLine line = gameChangers.FirstOrDefault(x => x.EntryName == e.Name); if (line == null) { line = new GameChangerLine(e.Name); gameChangers.Add(line); } line.Winners[m.Winner] = 100*GetOverallWinProbability(line.EntryName); } m.Winner = String.Empty; m.Recalc(); } foreach (GameChangerLine line in gameChangers.OrderBy(x => x.EntryName)) { buf.Append(line.EntryName.PadRight(20)); foreach (Matchup mm in Matchups.Where(x => String.IsNullOrEmpty(x.Winner))) { buf.Append(Math.Round(line.Winners[mm.Away], 2).ToString("0.00").PadLeft(6) + ' ' + Math.Round(line.Winners[mm.Home], 2).ToString("0.00").PadLeft(6) + '|'); } buf.Remove(buf.Length - 1, 1); buf.AppendLine(); } BuildWeekPossibilities(); CalculateOutcomes(); Console.WriteLine("done."); return buf.ToString(); }
internal string GetGameChangersTable() { if (!Matchups.Any(x => string.IsNullOrEmpty(x.Winner))) { return(string.Empty); } Console.Write("Building Game Changers"); gameChangers = new List <GameChangerLine>(); StringBuilder buf = new StringBuilder(); buf.AppendLine("WIN PERCENTAGES BASED ON SINGLE GAME OUTCOMES"); buf.AppendLine("ENTRY NAME " + string.Join("|", Matchups.Where(x => String.IsNullOrEmpty(x.Winner)) .Select(x => string.Format("{0} {1} ", x.Away.PadLeft(5), x.Home.PadLeft(4))).ToArray())); buf.AppendLine(new string('-', 20 + 14 * Matchups.Count(x => String.IsNullOrEmpty(x.Winner)))); foreach (Matchup m in Matchups.Where(x => String.IsNullOrEmpty(x.Winner))) { Console.Write('.'); m.Winner = m.Away; m.Recalc(); BuildWeekPossibilities(); CalculateOutcomes(); foreach (PlayerEntry e in PlayerEntries) { GameChangerLine line = gameChangers.FirstOrDefault(x => x.EntryName == e.Name); if (line == null) { line = new GameChangerLine(e.Name); gameChangers.Add(line); } line.Winners[m.Winner] = 100 * GetOverallWinProbability(line.EntryName); } m.Winner = m.Home; m.Recalc(); BuildWeekPossibilities(); CalculateOutcomes(); foreach (PlayerEntry e in PlayerEntries) { GameChangerLine line = gameChangers.FirstOrDefault(x => x.EntryName == e.Name); if (line == null) { line = new GameChangerLine(e.Name); gameChangers.Add(line); } line.Winners[m.Winner] = 100 * GetOverallWinProbability(line.EntryName); } m.Winner = String.Empty; m.Recalc(); } foreach (GameChangerLine line in gameChangers.OrderBy(x => x.EntryName)) { buf.Append(line.EntryName.PadRight(20)); foreach (Matchup mm in Matchups.Where(x => String.IsNullOrEmpty(x.Winner))) { buf.Append(Math.Round(line.Winners[mm.Away], 2).ToString("0.00").PadLeft(6) + ' ' + Math.Round(line.Winners[mm.Home], 2).ToString("0.00").PadLeft(6) + '|'); } buf.Remove(buf.Length - 1, 1); buf.AppendLine(); } BuildWeekPossibilities(); CalculateOutcomes(); Console.WriteLine("done."); return(buf.ToString()); }