Esempio n. 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();
        }
Esempio n. 2
0
        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);
             * }
             */
        }