def request(self, rider_id, lat, lng): minDistance, minDriverId = float('inf'), None for dId, loc in self.driver2Location.items(): curDistance = Helper.get_distance(lat, lng, loc[0], loc[1]) if minDistance > curDistance: minDistance, minDriverId = curDistance, dId trip = Trip(rider_id, lat, lng) trip.driver_id = minDriverId if minDriverId: self.driver2Trip[minDriverId] = trip del self.driver2Location[minDriverId] return trip
def request(self, rider_id, lat, lng): # Write your code here dist = -1 driver = -1 for key, value in self.locs.items(): td = Helper.get_distance(value[0], value[1], lat, lng) if dist == -1 or td < dist: dist = td driver = key trip = Trip(rider_id, lat, lng) trip.driver_id = driver if dist != -1: del self.locs[driver] self.trips[driver] = trip return trip
def request(self, rider_id, lat, lng): # Write your code here minD = sys.maxsize closestD = None for driver in self.driverLocation.keys(): if driver in self.trip: continue lat1, lng1 = self.driverLocation[driver] dis = Helper.get_distance(lat1, lng1, lat, lng) if dis < minD: minD = dis closestD = driver trip = Trip(rider_id, lat, lng) trip.driver_id = closestD self.trip[closestD] = trip return trip
def request(self, rider_id, lat, lng): trip = Trip(rider_id, lat, lng) distance, driver_id = -1, -1 for key, value in self.driver2Location.items(): dis = Helper.get_distance(value.lat, value.lng, lat, lng) if distance < 0 or distance > dis: driver_id = key distance = dis if driver_id != -1: del self.driver2Location[driver_id] trip.driver_id = driver_id self.driver2Trip[driver_id] = trip return trip
def request(self, rider_id, lat, lng): trip = Trip(rider_id, lat, lng) min_dist = float('inf') closest_driver_id = -1 for driver_id, driver in self.drivers.items(): dist = Helper.get_distance(lat, lng, driver.lat, driver.lng) if dist < min_dist: min_dist = dist closest_driver_id = driver_id print(dist, closest_driver_id) trip.driver_id = closest_driver_id self.trip_serial_id += 1 self.trips[self.trip_serial_id] = trip self.drivers[closest_driver_id].trip_id = self.trip_serial_id return trip
def request(self, rider_id, lat, lng): the_dvr_id = None min_distance = float("inf") for dvr_id, dvr in self.drivers.items(): if dvr[2]: continue distance = Helper.get_distance(lat, lng, dvr[0], dvr[1]) if distance < min_distance: min_distance = distance the_dvr_id = dvr_id if not the_dvr_id: return None trip = Trip(rider_id, lat, lng) trip.driver_id = the_dvr_id self.drivers[the_dvr_id][2] = trip return trip
def request(self, rider_id, lat, lng): # Write your code here t = Trip(rider_id, lat, lng) min_diff = sys.maxint match_driver = [] for driver in self.driver_id_to_location: driver_tuple = self.driver_id_to_location[driver] diff = Helper.get_distance(lat, lng, driver_tuple[0], driver_tuple[1]) if diff < min_diff: min_diff = diff match_driver = [driver, driver_tuple[0], driver_tuple[1]] if len(match_driver) != 0: del self.driver_id_to_location[match_driver[0]] t.driver_id = match_driver[0] self.driver_id_to_trip[match_driver[0]] = t return t else: return None
def request(self, rider_id, lat, lng): # create a trip first # find the closest available driver from self.driver2Location # if no driver return none, if yes, fill in trip driver_id, # remove from driver2Location, add to driver2Trip trip = Trip(rider_id, lat, lng) driver_id, distance = -1, -1 for id, loc in self.driver2Location.items(): dis = Helper.get_distance(lat, lng, loc.lat, loc.lng) if distance == -1 or dis < distance: distance = dis driver_id = id if driver_id == -1: print("No available drivers") return None trip.driver_id = driver_id self.driver2Trip[driver_id] = trip del self.driver2Location[driver_id] return trip
def request(self, rider_id, lat, lng): if not rider_id: return trip = Trip(rider_id, lat, lng) _distance = distance = self.INFINITY driver_id = -1 for _driver_id, _loc in self.driver_to_locs.items(): _distance = Helper.get_distance(_loc['lat'], _loc['lng'], lat, lng) if _distance < distance: driver_id = _driver_id distance = _distance if driver_id == -1: return trip trip.driver_id = driver_id self.driver_to_trip[driver_id] = trip del self.driver_to_locs[driver_id] return trip
def request(self, rider_id, lat, lng): # @param rider_id an integer # @param lat, lng rider's location # return a trip # find a closest driver closest_driver, closest_dist = None, sys.maxsize for driver, location in self.drivers2location.items(): distance = Helper.get_distance(lat, lng, location[0], location[1]) if distance < closest_dist: closest_driver = driver closest_dist = distance # create a trip with rider's information. trip = Trip(rider_id, lat, lng) # fill driver_id into this trip. trip.driver_id = closest_driver # mark this driver not available. del self.drivers2location[closest_driver] self.drivers2trip[closest_driver] = trip return trip