private static RouteWithDistanceFromStart StartRoute(City origin) { var initialRoute = new RouteWithDistanceFromStart(); initialRoute.AppendCity(origin, 0); return(initialRoute); }
public object Clone() { var clone = new RouteWithDistanceFromStart(); foreach (var city in Cities) { clone.AppendCity(city, 0); } clone.DistanceFromStart = DistanceFromStart; return(clone); }
private void FindAllPossibleRoutes(List<Track> railRoad, City origin, RouteWithDistanceFromStart runningRoute) { var possibleTracks = railRoad.FindAll(track => track.Origin.Equals(origin)); foreach (var track in possibleTracks) { var route = (RouteWithDistanceFromStart)runningRoute.Clone(); route.AppendCity(track.Destination, track.Distance); if (ThisTrackWillLeadMeToDestination(track)) possibleRoutes.Add(route); if (ShouldKeepRunningInThisRoute(runningRoute, track)) FindAllPossibleRoutes(railRoad, track.Destination, route); } }
private void FindAllPossibleRoutes(List <Track> railRoad, City origin, RouteWithDistanceFromStart runningRoute) { var possibleTracks = railRoad.FindAll(track => track.Origin.Equals(origin)); foreach (var track in possibleTracks) { var route = (RouteWithDistanceFromStart)runningRoute.Clone(); route.AppendCity(track.Destination, track.Distance); if (ThisTrackWillLeadMeToDestination(track)) { possibleRoutes.Add(route); } if (ShouldKeepRunningInThisRoute(runningRoute, track)) { FindAllPossibleRoutes(railRoad, track.Destination, route); } } }
protected override bool ShouldKeepRunningInThisRoute(RouteWithDistanceFromStart runningRoute, Track track) { return(!(runningRoute.Cities.Contains(track.Destination) && !track.Destination.Equals(FinalDestination))); }
protected override bool ShouldKeepRunningInThisRoute(RouteWithDistanceFromStart runningRoute, Track track) { return !(runningRoute.DistanceFromStart >= distanceLimit); }
protected override bool ShouldKeepRunningInThisRoute(RouteWithDistanceFromStart runningRoute, Track track) { return(!(runningRoute.DistanceFromStart >= distanceLimit)); }
protected override bool ShouldKeepRunningInThisRoute(RouteWithDistanceFromStart runningRoute, Track track) { return !(runningRoute.Cities.Contains(track.Destination) && !track.Destination.Equals(FinalDestination)); }
private static RouteWithDistanceFromStart StartRoute(City origin) { var initialRoute = new RouteWithDistanceFromStart(); initialRoute.AppendCity(origin, 0); return initialRoute; }
protected abstract bool ShouldKeepRunningInThisRoute(RouteWithDistanceFromStart runningRoute, Track track);
public object Clone() { var clone = new RouteWithDistanceFromStart(); foreach (var city in Cities) clone.AppendCity(city, 0); clone.DistanceFromStart = DistanceFromStart; return clone; }
protected abstract bool ShouldKeepRunningInThisRoute(RouteWithDistanceFromStart runningRoute, Track track);