"""Find a walk with enough time to enjoy the view.""" from dataclasses import dataclass @dataclass class Walk: name: str distance_km: float minutes: int def within_reach(walks: list[Walk], free_minutes: int) -> list[Walk]: """Keep routes that fit, ordered by distance.""" suitable = [walk for walk in walks if walk.minutes <= free_minutes] return sorted(suitable, key=lambda walk: walk.distance_km) # Leave a little room in the afternoon. routes = [ Walk("Riverside loop", 3.2, 45), Walk("Old railway path", 5.8, 80), Walk("Hilltop lookout", 4.1, 65), ] if __name__ == "__main__": for route in within_reach(routes, free_minutes=70): print(f"{route.name}: {route.distance_km:.1f} km")