Beispiel #1
0
        public void ComputeNextPosition()
        {
            if (TargetPosition == null)
            {
                return;
            }

            var item1 = CurrentPosition.Item1;
            var item2 = CurrentPosition.Item2;

            if (Math.Abs(TargetPosition.Item1 - CurrentPosition.Item1) > 0)
            {
                item1 += (TargetPosition.Item1 < CurrentPosition.Item1 ? -1 : 1);
            }
            else if (Math.Abs(TargetPosition.Item2 - CurrentPosition.Item2) > 0)
            {
                item2 += (TargetPosition.Item2 < CurrentPosition.Item2 ? -1 : 1);
            }

            CurrentPosition = new Tuple <long, long>(item1, item2);

            if (!Equals(TargetPosition, CurrentPosition) || CurrentRide == null)
            {
                return;
            }
            Rides.Add(CurrentRide);
            CurrentRide    = null;
            TargetPosition = null;
        }
Beispiel #2
0
 public void Solve(Reader reader, TextWriter writer)
 {
     R            = reader.ReadInt();
     C            = reader.ReadInt();
     VehicleCount = reader.ReadInt();
     RideCount    = reader.ReadInt();
     Bonus        = reader.ReadInt();
     StepCount    = reader.ReadInt();
     for (int i = 0; i < RideCount; i++)
     {
         Rides.Add(i, new Ride(reader, i));
     }
     AllRides.AddRange(Rides.Values);
     Vehicles = new List <Vehicle>(VehicleCount);
     for (int i = 0; i < VehicleCount; i++)
     {
         Vehicles.Add(new Vehicle());
     }
     Mid = new Vec(AllRides.Sum(z => z.StartPos.X) / AllRides.Count, AllRides.Sum(z => z.StartPos.Y) / AllRides.Count);
     if (Path.GetFileNameWithoutExtension(reader.File) != "d_metropolis")
     {
         _minDistanceToMid = int.MaxValue;
     }
     Solve();
     WriteOutput(writer);
     WriteAnalytics(reader.File);
 }
        public override void Solve()
        {
            for (int carPos = 0; carPos < Vehicles.Count; carPos++)
            {
                Vehicle car = Vehicles[carPos];
                while (true)
                {
                    Ride bestRide;
                    int  bestStartTime;

                    FindBestRideForCar(car, out bestRide, out bestStartTime);

                    if (bestRide != null)
                    {
                        car.AddRide(bestRide, bestRide.EndR, bestRide.EndC, bestStartTime + bestRide.Distance);
                        // Remove ride from list
                        for (int i = 0; i < Rides.Count; i++)
                        {
                            if (Rides[i].ID == bestRide.ID)
                            {
                                Rides.RemoveAt(i);
                                break;
                            }
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
Beispiel #4
0
 public void RemoveImpossibleRidesStart(int curStep)
 {
     Rides = Rides.Where(r => r.IsCurrentlyPossibleFromLocation(curStep, new Location()
     {
         Columm = 0, Row = 0
     })).ToList();
 }
Beispiel #5
0
        public void ReadInputFile(string filename)
        {
            using (StreamReader reader = File.OpenText(filename + ".in"))
            {
                char[] splitOnThese = { ' ' };

                // First Line
                string   readInputLine = reader.ReadLine();
                string[] headerInf     = readInputLine.Split(splitOnThese);
                RowCount     = int.Parse(headerInf[0]); // R
                ColumnCount  = int.Parse(headerInf[1]); // C
                VehicleCount = int.Parse(headerInf[2]); // F
                RideCount    = int.Parse(headerInf[3]); // N
                Bonus        = int.Parse(headerInf[4]); // B
                MaxStepCount = int.Parse(headerInf[5]); // T

                // Then N lines of individual rides
                for (int i = 0; i < RideCount; i++)
                {
                    readInputLine = reader.ReadLine();
                    headerInf     = readInputLine.Split(splitOnThese);

                    Ride r = new Ride();
                    r.ID            = i;
                    r.StartRow      = int.Parse(headerInf[0]); // a
                    r.StartColumn   = int.Parse(headerInf[1]); // b
                    r.FinishRow     = int.Parse(headerInf[2]); // x
                    r.FinishColumn  = int.Parse(headerInf[3]); // y
                    r.EarliestStart = int.Parse(headerInf[4]); // s
                    r.LatestFinish  = int.Parse(headerInf[5]); // f
                    Rides.AddLast(r);
                }
            }
        }
Beispiel #6
0
 public void RemoveFarRides(int maxDistance)
 {
     Rides = Rides.Where(r => r.GetDistance(new Location()
     {
         Columm = 0, Row = 0
     }) < maxDistance).ToList();
 }
        public void AddRide(Ride ride)
        {
            int travelDistance = ride.distance + ((ride.Start.X - Position.X) + (ride.Start.Y - Position.Y));

            movesRemaining -= travelDistance;
            Rides.Add(ride);
        }
Beispiel #8
0
        private async Task ExecuteLoadRidesCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                Rides.Clear();
                var table = App.CloudService.GetTable <Ride>();
                var list  = await table.ReadAllItemsAsync();

                Rides.ReplaceRange(list);
                RidesGrouped.ReplaceRange(Rides.GroupByName());
            }
            catch (Exception ex)
            {
                //MessagingCenter.Send(new MessagingCenterAlert
                //{
                //    Title = "Error",
                //    Message = "Unable to load items.",
                //    Cancel = "OK"
                //}, "message");
            }
            finally
            {
                IsBusy = false;
            }
        }
        public void CTOR_material_prop()
        {
            var APR    = new Rides();
            var result = APR.GetMaterial = "Steel";

            Assert.That(result, Is.EqualTo("Steel"));
        }
        public void CTOR__create()
        {
            var APR    = new Rides();
            var result = APR.GetName = "Cyclone";

            Assert.That(result, Is.EqualTo("Cyclone"));
        }
Beispiel #11
0
 public void AddRide(Ride ride)
 {
     if (!Rides.Any())
     {
         Rides = new List <Ride>();
     }
     Rides.Add(ride);
 }
        public IEnumerable <MakeRideAction> GetAvailableActions()
        {
            if (Rides.Count == 0)
            {
                return(new List <MakeRideAction>(0));
            }
            var ride = Rides.GetEarliestFinish();

            if (ride.Equals(default))
Beispiel #13
0
        public void AddRide(Ride ride)
        {
            int travelDistance = ride.distance + ((ride.Start.X - Position.X) + (ride.Start.Y - Position.Y));

            movesRemaining -= travelDistance;
            Rides.Add(ride);

            NextAvaliablePosition = new Point(ride.Finish);
        }
Beispiel #14
0
        public CreateRequestEventListener(Rides mNewTrip, HubConnection connection)
        {
            this.hubConnection = connection;
            rides = mNewTrip;


            //  database = AppDataHelper.GetDatabase();
            RequestTimer.Interval = 1000;
            RequestTimer.Elapsed += RequestTimer_Elapsed;
        }
        public void OnResume()
        {
            if (Packages.Count > 0)
            {
                return;
            }
            var editVM      = (BaseViewModel)_activity.ViewModel;
            var listRide    = _activity.Resources.GetStringArray(Resource.Array.lst_ride);
            var listPackage = _activity.Resources.GetStringArray(Resource.Array.lst_package);
            //country & city
            var listcontries = _activity.Resources.GetStringArray(Resource.Array.lst_country);
            var listcity     = _activity.Resources.GetStringArray(Resource.Array.lst_city);
            int position     = 0;

            foreach (var ride in listRide)
            {
                var itm = new ListItem {
                    DisplayName = ride, Position = position
                };
                itm.ParentSelectionChanged = editVM.WhistleEditViewModel.OnSelectionChanged; //ride selection
                Rides.Add(itm);
                position++;
            }
            position = 0;
            foreach (var p in listPackage)
            {
                var itm = new ListItem {
                    DisplayName = p, Position = position
                };
                itm.ParentSelectionChanged = editVM.WhistleEditViewModel.OnPackageSelectionchanged;
                Packages.Add(itm);
                position++;
            }

            position = 0;
            foreach (var count in listcontries)
            {
                var itm = new ListItem {
                    DisplayName = count, Position = position
                };
                itm.ParentSelectionChanged = editVM.WhistleEditViewModel.OnContrySelectionChanged;
                Countries.Add(itm);
                position++;
            }
            position = 0;
            foreach (var city in listcity)
            {
                var itm = new ListItem {
                    DisplayName = city, Position = position
                };
                itm.ParentSelectionChanged = editVM.WhistleEditViewModel.OnSelectionChanged;
                Cities.Add(itm);
                position++;
            }
        }
Beispiel #16
0
        public async Task <ResponseData> SaveRideRequest(Rides ride)
        {
            if (string.IsNullOrEmpty(ride.Action))
            {
                ride.Action = "A";
            }

            string rideString = JsonConvert.SerializeObject(ride);

            return(await Common.WebPostServiceAuthorize("api/Trip/SaveRideRequest", rideString));
        }
Beispiel #17
0
 public void AddRide(Ride ride)
 {
     if (ride.InitialMileage == null)
     {
         throw new InvalidOperationException("Car.InitialMileage is null");
     }
     else
     {
         Rides.Add(ride);
     }
 }
Beispiel #18
0
        public IEnumerable <Rides> getAllRides()
        {
            string connectionString = @"Server=tcp:fri-ride.database.windows.net,1433;Initial Catalog=FRI-ride;Persist Security Info=False;User ID=zm8184;Password=Lojze4bojze;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
            string queryString      = "SELECT COUNT(*) FROM oglas;";
            int    n = 0;

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(queryString, conn);
                try
                {
                    conn.Open();
                    n = (int)cmd.ExecuteScalar();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            rides = new Rides[n];
            int i = 0;

            queryString = "SELECT * FROM oglas;";

            using (SqlConnection connection = new SqlConnection(
                       connectionString))
            {
                SqlCommand command = new SqlCommand(
                    queryString, connection);
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                try
                {
                    while (reader.Read())
                    {
                        rides[i] = new Rides {
                            Id_oglas = (int)reader[0], Id_voznik = (int)reader[1], Cas_datum = (string)reader[3], Lokacija = (string)reader[2]
                        };
                        i++;
                    }
                }
                finally
                {
                    // Always call Close when done reading.
                    reader.Close();
                }
            }



            return(rides);
        }
        public Rides FetchInformation(ResponseData response)
        {
            List <ActiveDrivers> availableDrivers = JsonConvert.DeserializeObject <List <ActiveDrivers> >(response.CallBack);

            activeDrivers = new List <ActiveDrivers>();
            activeDrivers = availableDrivers;
            Rides rides = JsonConvert.DeserializeObject <Rides>(response.RecordsInString);

            //Guid r = rides.RideId;
            //Guid d = rides.RidesInfo.LocationInfo.LocationId;
            rides.Action = "E";
            return(rides);
        }
        public void GivenMultipleRides_ShouldReturnTotalFare()
        {
            Rides        firstRide  = new Rides(2.0, 5, "Premium");
            Rides        secondRide = new Rides(0.1, 1, "Normal");
            List <Rides> rides      = new List <Rides> {
                firstRide, secondRide
            };

            UserAccount.AddRides(this.USERID, rides);
            InvoiceSummary invoiceSummary = this.INVOICEGENERATOR.GetInvoiceSummary(this.USERID);
            double         expected       = 30;

            Assert.AreEqual(expected, invoiceSummary.TotalFare);
        }
Beispiel #21
0
        public void GivenMultipleRides_ShouldReturnTotalFare()
        {
            string       userId     = "nitin";
            Rides        firstRide  = new Rides(2.0, 5, "Premium");
            Rides        secondRide = new Rides(0.1, 1, "Normal");
            List <Rides> rides      = new List <Rides> {
                firstRide, secondRide
            };

            UserAccount.AddRides(userId, rides);
            InvoiceSummary invoiceSummary = this.invoiceGenerator.GetInvoiceSummary(userId);
            double         expected       = 30;

            Assert.AreEqual(expected, invoiceSummary.TotalFare);
        }
 void TripLocationUnset()
 {
     mainMap.Clear();
     tripDetails                 = null;
     layoutPickUp.Clickable      = true;
     layoutDestination.Clickable = true;
     pickupRadio.Enabled         = true;
     destinationRadio.Enabled    = true;
     takeAddressFromSearch       = false;
     centerMarker.Visibility     = ViewStates.Visible;
     //  favouritePlacesButton.Visibility = ViewStates.Visible;
     locationSetButton.Visibility         = ViewStates.Invisible;
     tripDetailsBottonsheetBehavior.State = BottomSheetBehavior.StateHidden;
     GetMyLocation();
 }
Beispiel #23
0
        public void GivenMultipleRides_ShouldReturnTotalFare()
        {
            InvoiceGenerator invoiceGenerator = new InvoiceGenerator();
            string           userId           = "soumen";
            Rides            firstRide        = new Rides(2.0, 5);
            Rides            secondRide       = new Rides(0.1, 1);
            List <Rides>     rides            = new List <Rides> {
                firstRide, secondRide
            };

            RideRepository.AddRides(userId, rides);
            InvoiceSummary invoiceSummary = invoiceGenerator.GetInvoiceSummary(userId);
            double         expected       = 30;

            Assert.AreEqual(expected, invoiceSummary.TotalFare);
        }
Beispiel #24
0
            public void ApplyRide(Ride r)
            {
                var d = r.DistToStart(CurRow, CurRow);

                CurT += d;
                if (r.StartT < CurT)
                {
                    CurT = r.StartT;
                }

                CurT  += r.Length();
                CurRow = r.FinishRow;
                CurCol = r.FinishCol;

                Rides.Add(r);
            }
Beispiel #25
0
        // find vehicle without ride, find "best" ride for this vehicle
        // Go through rides
        // find ride that we can reach early enough
        // calculate event times
        private void FindRides()
        {
            foreach (var v in Vehicles)
            {
                if (v.WithoutRide)
                {
                    Ride r = FindRide(v);
                    if (r != null)
                    {
                        // The vehicle is going to do this ride.
                        v.ActiveRide = r;
                        Rides.Remove(r); // Remove from list of all.
                        v.Rides.Add(r);  // Add to vehicle list.
                        v.EmptyRideToRow        = r.StartRow;
                        v.EmptyRideToColumn     = r.StartColumn;
                        v.PassengerRideToRow    = r.FinishRow;
                        v.PassengerRideToColumn = r.FinishColumn;

                        // NextEvent is the step, in which we delivered the passenger.
                        int emptyRide     = Distance(v.ActualPosRow, v.ActualPosColumn, r.StartRow, r.StartColumn);
                        int passengerRide = Distance(r.StartRow, r.StartColumn, r.FinishRow, r.FinishColumn);

                        if (StepNo + emptyRide < r.EarliestStart)
                        {
                            v.NextEvent = r.EarliestStart + passengerRide;
                        }
                        else
                        {
                            v.NextEvent = StepNo + emptyRide + passengerRide;
                        }

                        HashSet <Vehicle> value;
                        if (VehicleEvents.TryGetValue(v.NextEvent, out value))
                        {
                            value.Add(v);
                        }
                        else
                        {
                            HashSet <Vehicle> hsv = new HashSet <Vehicle>();
                            hsv.Add(v);
                            VehicleEvents.Add(v.NextEvent, hsv);
                        }
                    }
                }
            }
        }
Beispiel #26
0
 public void OnGet()
 {
     if (!string.IsNullOrEmpty(RideCriteria.DepartureLocation) ||
         !string.IsNullOrEmpty(RideCriteria.DestinationLocation))
     {
         Rides = rideService.FilterRides(RideCriteria);
         if (Rides.Count() == 0)
         {
             ScreenMessage = "Sorry! We couldn't match any rides to your request.";
         }
     }
     else
     {
         Rides = rideService.GetAllRides().OrderBy(r => r.StartTime);
         RideCriteria.StartTime = DateTime.Now;
     }
 }
        public void GivenUSerId_ShouldReturnInvoiceSummary()
        {
            Rides        firstRide  = new Rides(2.0, 5, "Premium");
            Rides        secondRide = new Rides(0.1, 1, "Normal");
            List <Rides> rides      = new List <Rides> {
                firstRide, secondRide
            };

            UserAccount.AddRides(this.USERID, rides);
            InvoiceSummary invoiceSummary = this.INVOICEGENERATOR.GetInvoiceSummary(this.USERID);
            InvoiceSummary expected       = new InvoiceSummary
            {
                TotalNumberOfRides = 2,
                TotalFare          = 90.0,
                AverageFarePerRide = 23
            };

            Assert.AreEqual(expected.TotalFare, invoiceSummary.TotalFare);
        }
Beispiel #28
0
        public void GivenPremiumRide_ShouldReturnInvoiceSummary()
        {
            string       userId     = "nitin";
            Rides        firstRide  = new Rides(3.0, 5, "Premium");
            Rides        secondRide = new Rides(1, 1, "Normal");
            List <Rides> rides      = new List <Rides> {
                firstRide, secondRide
            };

            UserAccount.AddRides(userId, rides);
            InvoiceSummary invoiceSummary = this.invoiceGenerator.GetInvoiceSummary(userId);
            InvoiceSummary expected       = new InvoiceSummary
            {
                TotalNumberOfRides = 2,
                TotalFare          = 106,
                AverageFarePerRide = 33
            };

            Assert.AreEqual(expected.TotalFare, invoiceSummary.TotalFare);
        }
Beispiel #29
0
        public async Task EasyCalculation()
        {
            AvailableRides = new BlockingCollection <Ride>();
            Rides.ForEach(x => AvailableRides.Add(x));
            InitVehicles();

            List <Task> taskList   = new List <Task>();
            int         idealRange = VehiclesCount / 10; // ToDo

            for (int i = 0; i < Vehicles.Count; i++)
            {
                if (idealRange + i > VehiclesCount)
                {
                    idealRange = VehiclesCount - i;
                }

                var vehicleSeperation = Vehicles.GetRange(i, idealRange);
                i += idealRange;

                taskList.Add(Task.Factory.StartNew(() =>
                {
                    for (int j = 0; i < vehicleSeperation.Count && FindBestRides(vehicleSeperation[j]); j++)
                    {
                        if (j == VehiclesCount - 1)
                        {
                            j = 0;
                        }
                    }
                }));
            }

            await Task.WhenAll(taskList);

            //for(int i = 0; i < VehiclesCount && FindBestRides(Vehicles[i]); i++)
            //{
            //    if(i == VehiclesCount -1)
            //    {
            //        i = 0;
            //    }
            //}
        }
Beispiel #30
0
        public void GivenPremiumRide_ShouldReturnInvoiceSummary()
        {
            InvoiceGenerator invoiceGenerator = new InvoiceGenerator();
            string           userId           = "soumen";
            Rides            firstRide        = new Rides(3.0, 5, "Premium");
            Rides            secondRide       = new Rides(1, 1, "Normal");
            List <Rides>     rides            = new List <Rides> {
                firstRide, secondRide
            };

            RideRepository.AddRides(userId, rides);
            InvoiceSummary invoiceSummary = invoiceGenerator.GetInvoiceSummary(userId);
            InvoiceSummary expected       = new InvoiceSummary
            {
                TotalNumberOfRides = 2,
                TotalFare          = 76.0,
                AverageFarePerRide = 33
            };

            Assert.AreEqual(expected.TotalFare, invoiceSummary.TotalFare);
        }