Parking Lot
Level: IntermediateConcepts: Design State
Create a program to manage a parking lot system with different types of vehicles and parking spots.
Requirements
- Implement parking lot management:
- Different types of vehicles (Motorcycle, Car, Bus)
- Different types of parking spots (Motorcycle, Compact, Large)
- Parking rules based on vehicle and spot types
- Track available spots and parked vehicles
- Handle parking operations:
- Park a vehicle (assign to appropriate spot)
- Remove a vehicle (free up spot)
- Check parking status
- Find available spots
- Return appropriate results:
- Success/failure of parking operations
- Current parking lot status
- Error messages for invalid operations
Test Cases
Scenario | Input | Expected Result | Notes |
---|---|---|---|
Empty Lot | Check status | All spots available | Initial state |
Park Motorcycle | Park motorcycle in motorcycle spot | Success | Fits in any spot |
Park Car | Park car in compact spot | Success | Fits in compact or large |
Park Bus | Park bus in large spot | Success | Needs 5 consecutive large spots |
Invalid Park | Park car in motorcycle spot | Error | Spot too small |
Remove Vehicle | Remove parked vehicle | Success | Frees up spot |
Edge Cases to Consider
- Parking lot is full
- Vehicle already parked
- Removing non-existent vehicle
- Parking in occupied spot
- Multiple vehicles of same type
Tips
- Start with basic vehicle and spot types
- Add parking rules next
- Then implement spot management
- Finally add status tracking
- Consider using enums for vehicle and spot types