static void BuildGridDisplay(int[,] grid) { int countOver1 = 0; string s = String.Empty; for (int x = 0; x < grid.GetUpperBound(0); x++) { for (int y = 0; y < grid.GetUpperBound(1); y++) { s += grid[x, y] + " "; } s += Environment.NewLine; } foreach (int i in grid) { if (i > 1) { countOver1++; } } //MessageBox.Show(s); GridDisplayDay3a gridDisplay = new GridDisplayDay3a(s, countOver1); gridDisplay.Show(); }
public static void Day7b() { EnglishAlphabetProvider provider = new EnglishAlphabetProvider(); Day7aPackage d7ap = Day7a(); Day7WorkManager _mgr = Day7WorkManager.Instance; HashSet <Tuple <char, char> > hash = d7ap.hash; HashSet <char> chash = d7ap.chash; List <List <char> > result; List <char> done = new List <char>(); int second = 0; int maxWorkers = 5; int timebase = 60; int totalTime = 0; /* * result = Sorting.TopologicalSortGroups( * chash, * hash, * true); * * foreach (var v in result) * { * char c = Convert.ToChar(0); * * foreach (var _c in v) * { * if (_c > c) * c = _c; * } * * totalTime += 60 + provider.CharValue(c); * } */ Dictionary <char, string> dependencies = new Dictionary <char, string>(); foreach (var v in chash) { dependencies.Add(v, String.Empty); } foreach (var v in hash) { dependencies[v.Item2] += v.Item1.ToString(); } Dictionary <int, List <Day7Worker> > workList; StringBuilder sb = new StringBuilder(); foreach (var v in dependencies) { sb.Append(v.Key.ToString() + " " + v.Value + Environment.NewLine); } Form messagedep = new GridDisplayDay3a(sb.ToString(), 0); messagedep.Show(); _mgr.Setup(maxWorkers, timebase); _mgr.Dependencies = dependencies; _mgr.Chash = chash; totalTime = _mgr.RunWork(out workList); sb = new StringBuilder(); sb.Append("Second |"); for (int i = 1; i <= _mgr.MaxWorkers; i++) { sb.Append(" Worker " + i + " |"); } int headerLength = sb.Length; sb.Append(Environment.NewLine); sb.Append(new string('-', headerLength)); sb.Append(Environment.NewLine); foreach (var v in workList) { sb.Append(v.Key.ToString().PadLeft(6)); foreach (var vv in v.Value) { sb.Append(" | "); sb.Append(vv.WorkingOnChar.ToString().PadCenter(8)); } sb.Append(" |"); sb.Append(Environment.NewLine); } //Incorrect Answer: 1070 (too high) //Incorrect Answer: 1041 (too high) //Incorrect Answer: 1027 (too low) //MessageBox.Show(totalTime.ToString()); Form message = new GridDisplayDay3a(sb.ToString(), totalTime); message.Show(); /* * DataTable dt = new DataTable("Assembly Order and Time"); * DataColumn c; * DataRow r; * * c = new DataColumn(); * c.DataType = System.Type.GetType("System.Int32"); * c.ColumnName = "Second"; * c.ReadOnly = false; * c.Unique = false; * dt.Columns.Add(c); * * for (int i = 1; i <= maxWorkers; i++) * { * c = new DataColumn(); * c.DataType = System.Type.GetType("System.Char"); * c.ColumnName = "Worker " + i; * c.ReadOnly = false; * c.Unique = false; * dt.Columns.Add(c); * } * * DataSet dataSet = new DataSet(); * dataSet.Tables.Add(dt); * * HashSet<char> S = new HashSet<char>(chash.Where(n => hash.All(e => e.Item2.Equals(n) == false))); * * Day7Worker[] workers = new Day7Worker[maxWorkers]; * * for (int i = 1; i <= maxWorkers; i++) * { * workers[i] = new Day7Worker(i); * } * * while (done.Count < 26) * { * ProcessWorkers(workers, ref S, timebase); * } */ }