高级农民
- 积分
- 1228
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2018-12-20
- 最后登录
- 1970-1-1
|
第二题
- class Vehicle:
- def __init__(self, id) -> None:
- self.spotSizes = {}
- self.name = ""
- self.id = id
- class Motorcycle(Vehicle):
- def __init__(self, id) -> None:
- self.name = "Motorcycle"
- self.spotSizes = {"1_compact":1, "2_large":1, "0_small":1}
- self.id = id
- class Car(Vehicle):
- def __init__(self,id) -> None:
- self.name = "Car"
- self.spotSizes = {"1_compact":1, "2_large":1}
- self.id = id
- class Van(Vehicle):
- def __init__(self, id) -> None:
- self.name = "Van"
- self.spotSizes = {"1_compact":3, "2_large":1}
- self.id = id
- class ParkingLot:
- def __init__(self, capacityMap):
- self.capacityMap = capacityMap
- self.parkedVehicles = {}
-
- def park(self, vehicle: Vehicle):
- # allocation strategy
- spotSizes = sorted(vehicle.spotSizes.items(), key=lambda k:(k[1], k[0]))
- for spot, val in spotSizes:
- if spot in self.capacityMap and self.capacityMap[spot]-val >= 0:
- self.capacityMap[spot] -= val
- self.parkedVehicles[vehicle.id] = (spot, val)
- print("Vehicle: %s is parked in spot: %s" % (vehicle.name, spot))
- return True
- print("Vehicle: %s can not found any available spot" % (vehicle.name))
- return False
- def remove(self, vehicle: Vehicle):
- if vehicle.id in self.parkedVehicles:
- spot, val = self.parkedVehicles[vehicle.id]
- self.capacityMap[spot] += val
- del self.parkedVehicles[vehicle.id]
- print("Vehicle: %s is unparked from spot: %s" % (vehicle.name, spot))
- else:
- print("not found vehicle: %s" % vehicle.name)
复制代码 |
|