Beispiel #1
0
 public static bool Build(List <CycleElement> cycle, List <EngagedElement> plan)
 {
     _plan  = plan;
     _cycle = cycle.First();
     while (true)
     {
         // using try, catch to leave recursion
         try
         {
             cycle.Clear();
             cycle.Add(_cycle);
             if (CycleBuilder.BuildCycle(cycle))
             {
                 return(true);
             }
         }
         catch (Exception)
         {
         }
     }
 }
Beispiel #2
0
        public List <CycleBuilder.CycleElement> BuildCycle(Point maxDelta)
        {
            var enagaged = new List <CycleBuilder.EngagedElement>();

            for (int i = 0; i < NumberOfRows; i++)
            {
                for (int j = 0; j < NumberOfCollumns; j++)
                {
                    if (ExtraValues[i][j] != -1)
                    {
                        enagaged.Add(new CycleBuilder.EngagedElement(MainArray[i][j], i, j));
                    }
                }
            }
            enagaged.Add(new CycleBuilder.EngagedElement(0, maxDelta.X, maxDelta.Y));//головний елемент

            var cycle = new List <CycleBuilder.CycleElement>();

            cycle.Add(new CycleBuilder.CycleElement(maxDelta.X, maxDelta.Y, +1));//початковий елемент циклу

            CycleBuilder.Build(cycle, enagaged);

            return(cycle);
        }