コード例 #1
0
        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();
        }
コード例 #2
0
ファイル: Day4.cs プロジェクト: xepherys/AdventOfCode
        // 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)
            {
            }
        }
コード例 #3
0
ファイル: Day7.cs プロジェクト: xepherys/AdventOfCode
        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);
             * }
             */
        }