Example #1
0
        // --------------------------------------------------------------------
        public string PuzzleB(StepRules rules, int availableWorkers, int timeAdder = 0)
        {
            int seconds = 0;
            var wp      = new WorkProcessor(availableWorkers);

            wp.TimeAdder = timeAdder;

            List <string> ready;

            while (true)
            {
                ready = rules.GetReadySteps();
                wp.LoadWorkQueue(ref ready);

                if (wp.IsTaskQueueEmpty())
                {
                    break;
                }

                var completed = wp.ProcessQueue();
                seconds++;

                rules.RemoveDependencies(completed);
            }

            return(seconds.ToString());
        }