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(); }
// Day 4a currently does the work for both steps. I was iterating through data when I completed 'a' and realized 'b' could be done manually quicker than changing code (the values were already there). static public void Day4a() { List <Day4aSchedule> schedule = new List <Day4aSchedule>(); List <Day4aGuard> guards = new List <Day4aGuard>(); using (Stream stream = thisExe.GetManifestResourceStream("AdventOfCode2018._data.AdventOfCode_Day4.txt")) using (StreamReader reader = new StreamReader(stream)) { schedule = EnumerateSchedule(reader).OrderBy(a => a.timestamp).ToList(); } string dayInfo = ""; foreach (Day4aSchedule d4as in schedule) { dayInfo += d4as.timestamp.ToString("yyyy-MM-dd hh:mm"); dayInfo += " "; dayInfo += d4as.entry; dayInfo += Environment.NewLine; } GridDisplayDay3a window = new GridDisplayDay3a(dayInfo, 0); if (window.ShowDialog() == DialogResult.OK) { } string id = ""; foreach (Day4aSchedule d4as in schedule) { if (d4as.entry.StartsWith("Guard #")) { string[] s = d4as.entry.Split(' '); string _id = s[1].Remove(0, 1); if (_id != id) { id = _id; } } d4as.id = id; } dayInfo = ""; foreach (Day4aSchedule d4as in schedule) { dayInfo += d4as.timestamp.ToString("yyyy-MM-dd hh:mm"); dayInfo += " "; dayInfo += d4as.id; dayInfo += " "; dayInfo += d4as.entry; dayInfo += Environment.NewLine; } GridDisplayDay3a window2 = new GridDisplayDay3a(dayInfo, 0); if (window2.ShowDialog() == DialogResult.OK) { } ParseGuards(ref guards, schedule); dayInfo = ""; foreach (Day4aGuard guard in guards) { dayInfo += guard.id.PadLeft(6); dayInfo += " Total Sleeps: " + guard.numSleeps; dayInfo += " Total Minutes Sleeping: " + guard.minutesSleeping; dayInfo += Environment.NewLine; for (int i = 0; i < 60; i++) { dayInfo += guard[i].ToString().PadLeft(3); } dayInfo += Environment.NewLine; dayInfo += Environment.NewLine; } GridDisplayDay3a window3 = new GridDisplayDay3a(dayInfo, 0); if (window3.ShowDialog() == DialogResult.OK) { } }
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); * } */ }