public TravelAgency(IDatabase <IAccomodation> bookingDatabase, IDatabase <IReview> oysterDatabase, IDatabase <IPhoto> stockDatabase, IDatabase <IAttraction> tripAdvisorDatabase)
 {
     this.bookingIterator        = bookingDatabase.GetIterator();
     this.oysteIterator          = oysterDatabase.GetIterator();;
     this.stockIterator          = stockDatabase.GetIterator();;
     this.tripAdvisorIterator    = tripAdvisorDatabase.GetIterator();
     this.bookingDescrambler     = new BookingDescramblerFactory().GetDescrambler();
     this.stockDescrambler       = new ShutterStockDescramblerFactory().GetDescrambler();
     this.tripAdvisorDescrambler = new TripAdvisorDescramblerFactory().GetDescrambler();
 }
Пример #2
0
        public IEnumerable <Route> Solve(IGraphDatabase graph, City from, City to)
        {
            Dictionary <City, Route> routes = new Dictionary <City, Route>();

            routes[from] = null;
            Queue <City> queue = new Queue <City>();

            queue.Enqueue(from);
            do
            {
                City city = queue.Dequeue();

                /*
                 * For each outgoing route from city...
                 */
                IDatabaseIterator <Route> iter = graph.GetRoutesFrom(city);
                while (iter.HasNext())
                {
                    Route route = iter.GetCurrent(); /* Change to current Route*/
                    if (routes.ContainsKey(route.To))
                    {
                        continue;
                    }
                    routes[route.To] = route;
                    if (route.To == to)
                    {
                        break;
                    }
                    queue.Enqueue(route.To);
                }
            } while (queue.Count > 0);
            if (!routes.ContainsKey(to))
            {
                return(null);
            }
            List <Route> result = new List <Route>();

            for (Route route = routes[to]; route != null; route = routes[route.From])
            {
                result.Add(route);
            }
            result.Reverse();
            return(result);
        }
        public IEnumerable <Route> Solve(IGraphDatabase graph, City from, City to)
        {
            Dictionary <City, Route> routes = new Dictionary <City, Route>();

            routes[from] = null;
            Stack <City> stack = new Stack <City>();

            stack.Push(from);
            do
            {
                City city = stack.Pop();
                IDatabaseIterator <Route> iter = graph.GetRoutesFrom(city);
                while (iter.HasNext())
                {
                    Route route = iter.GetCurrent(); /* Change to current Route*/
                    if (routes.ContainsKey(route.To))
                    {
                        continue;
                    }
                    routes[route.To] = route;
                    if (route.To == to)
                    {
                        break;
                    }
                    stack.Push(route.To);
                }
            } while (stack.Count > 0);
            if (!routes.ContainsKey(to))
            {
                return(null);
            }
            List <Route> result = new List <Route>();

            for (Route route = routes[to]; route != null; route = routes[route.From])
            {
                result.Add(route);
            }
            result.Reverse();
            return(result);
        }
        public IEnumerable <Route> Solve(IGraphDatabase graph, City from, City to)
        {
            Dictionary <City, (double dist, Route last)> distances = new Dictionary <City, (double dist, Route last)>();
            HashSet <City> visitedCitites = new HashSet <City>();

            distances[from] = (0, null);
            City minCity = from;

            while (minCity != to)
            {
                /*
                 * For each outgoing route from minCity...
                 */
                IDatabaseIterator <Route> iter = graph.GetRoutesFrom(minCity);
                while (iter.HasNext())
                {
                    Route route = iter.GetCurrent(); /* Change to current Route*/
                    if (visitedCitites.Contains(route.To))
                    {
                        continue;
                    }
                    double dist = distances[minCity].dist + OptimizingValueFunc(route);
                    if (!distances.ContainsKey(route.To))
                    {
                        distances[route.To] = (dist, route);
                    }
                    else
                    {
                        if (dist < distances[route.To].dist)
                        {
                            distances[route.To] = (dist, route);
                        }
                    }
                }
                visitedCitites.Add(minCity);
                minCity = null;
                foreach (var(city, (dist, route)) in distances)
                {
                    if (visitedCitites.Contains(city))
                    {
                        continue;
                    }
                    if (minCity == null || dist < distances[city].dist)
                    {
                        minCity = city;
                    }
                }
                if (minCity == null)
                {
                    return(null);
                }
            }
            List <Route> result = new List <Route>();

            for (Route route = distances[to].last; route != null; route = distances[route.From].last)
            {
                result.Add(route);
            }
            result.Reverse();
            return(result);
        }
 public PopulationIterator(IDatabaseIterator <Route> iter, int minPopulation)
 {
     this.iter          = iter;
     this.minPopulation = minPopulation;
 }
Пример #6
0
 public HasRestaurantIterator(IDatabaseIterator <Route> iter)
 {
     this.iter = iter;
 }
 public PolandTravel(ITravelAgency travelAgency, IDatabase <IAttraction> tripAdvisorDatabase)
 {
     this.travelAgency           = travelAgency;
     this.tripAdvisorIterator    = tripAdvisorDatabase.GetIterator();
     this.tripAdvisorDescrambler = new TripAdvisorDescramblerFactory().GetDescrambler();
 }