private bool GenerujNowaLinie() { List <Stacja> petle = Model.GetPetle(); // Losowanie pętli startowej. Line.Add(petle[Random.Next(petle.Count)]); int i = 0; while (i == 0 || !((Stacja)Line[i]).IsPetla) { // Losowanie stacji. List <Stacja> sasiednieElementy = ((Stacja)Line[i]).GetSasiednieStacje(); Stacja wylosowanaStacja = sasiednieElementy[Random.Next(sasiednieElementy.Count)]; int loopGuard = 0; while (Line.Contains(wylosowanaStacja)) { loopGuard++; if (loopGuard > 5) { Line = new List <ElementModelu>(); return(false); } wylosowanaStacja = sasiednieElementy[Random.Next(sasiednieElementy.Count)]; } Krawedz wylosowanaKrawedz = wylosowanaStacja.GetIncydentneKrawedzie() .Where(x => x.Stacja1.Id == Line[i].Id || x.Stacja2.Id == Line[i].Id).First(); Line.Add(wylosowanaKrawedz); Line.Add(wylosowanaStacja); i = i + 2; } return(true); }
private static void WritePetle(Model m) { List <Stacja> petle = m.GetPetle(); Console.WriteLine("\nPetle w modelu m:"); foreach (Stacja pe in petle) { Console.WriteLine(pe); } Console.WriteLine(); }