diff options
Diffstat (limited to 'src/CS340.TSP/Tour.cs')
-rw-r--r-- | src/CS340.TSP/Tour.cs | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/src/CS340.TSP/Tour.cs b/src/CS340.TSP/Tour.cs index 80db19d..e6e5d40 100644 --- a/src/CS340.TSP/Tour.cs +++ b/src/CS340.TSP/Tour.cs @@ -5,30 +5,24 @@ using Graph; namespace TSP { - - public class Tour<T> where T : IComparable<T> + using Vertex = Vertex<Edge<double>, double>; + public class Tour { - public List<Vertex<T>> Cities { get; set; } = new List<Vertex<T>>(); - public T Weight + public List<City> Cities { get; set; } = new List<City>(); + public double Weight { - get - { - dynamic _weight = default(T); - Cities.Where(city => city.Parent != -1).ToList() - .ForEach(city => - _weight += city.Edges - .Where(edge => edge.V == city.Parent) - .First().Weight); - return _weight; - } + get => Cities + .Where(city => city.Parent != -1) + .Sum(city => city.Key); } // indexer: get vertex where vertex.Id == index - public Vertex<T> this[int index] { get => Cities.Find(vertex => vertex.Id == index); } + public City this[int index] { get => Cities.Find(vertex => vertex.Id == index); } - public Tour(List<Vertex<T>> cities) => Cities.AddRange(cities.Select(city => new Vertex<T>(city))); - public Tour() => Cities = new List<Vertex<T>>(); - public Tour(Tour<T> tour) : this(tour.Cities) { } + public Tour(List<Vertex> cities) => Cities.AddRange(cities.Select(city => new City(city))); + public Tour(List<City> cities) => Cities.AddRange(cities.Select(city => new City(city))); + public Tour() => Cities = new List<City>(); + public Tour(Tour tour) : this(tour.Cities) { } public override string ToString() => |