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) { } } }
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); }