uber_model
unknown
plain_text
a year ago
2.3 kB
13
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