uber_model
unknown
plain_text
6 months ago
2.3 kB
11
Indexable
class Driver: def __init__(self, driver_id, location): self.driver_id = driver_id self.location = location self.available = True class Uber: def __init__(self, max_dist): self.max_dist = max_dist self.drivers = [] self.requests = {} def add_driver(self, driver_id, location): driver = Driver(driver_id, location) self.drivers.append(driver) def request_ride(self, passenger_id, rider_location): self.requests[passenger_id] = {'rider_location': rider_location, 'assigned_driver': None} driver = self.assign_driver(rider_location) if driver: self.requests[passenger_id]['assigned_driver'] = driver.driver_id driver.available = False print(f"Assigned driver {driver.driver_id} to passenger {passenger_id}.") else: print("No available drivers.") def assign_driver(self, rider_location): closest_driver = None min_distance = self.max_dist for driver in self.drivers: if driver.available: distance = driver.location - rider_location if distance <= min_distance: closest_driver = driver min_distance = distance return closest_driver def complete_ride(self, passenger_id): if passenger_id in self.requests: driver_id = self.requests[passenger_id]['assigned_driver'] if driver_id: print(f"Ride completed.") for driver in self.drivers: if driver.driver_id == driver_id: driver.available = True break del self.requests[passenger_id] else: raise Exception("No driver assigned yet") else: raise Exception("No request found") def main(): uber_service = Uber(max_dist=1.5) uber_service.add_driver(driver_id='D1', location=1) uber_service.add_driver(driver_id='D2', location=1.5) uber_service.request_ride(passenger_id='P1', rider_location=0.5) uber_service.request_ride(passenger_id='P2', rider_location=3.0) # will fail uber_service.complete_ride(passenger_id='P1') if __name__ == "__main__": main()
Editor is loading...
Leave a Comment