summaryrefslogtreecommitdiffstats
path: root/src/CS340.TSP/Tour.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/CS340.TSP/Tour.cs')
-rw-r--r--src/CS340.TSP/Tour.cs30
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() =>