def bus_line_calculator(travel_log): busses = {} stops = set() for log in travel_log: bus = BusLine(log["bus_id"]) if bus.get_id() not in busses: busses[bus.get_id()] = bus stop = Stop(log["stop_id"]) stop_name = log["stop_name"] stop.add_name(stop_name) stop_type = log["stop_type"] busses[bus.get_id()].add_stop(stop) if stop_type == "S": busses[bus.get_id()].set_starting_stop(stop) elif stop_type == "F": busses[bus.get_id()].set_finishing_stop(stop) starting_stops = [] finish_stops = [] all_routes = [] for bus_id, bus in busses.items(): if bus.starting_and_finishing_exists(): if bus.starting_stop.get_name() not in starting_stops: starting_stops.append(bus.starting_stop.get_name()) if bus.finishing_stop.get_name() not in finish_stops: finish_stops.append(bus.finishing_stop.get_name()) all_routes.append(bus.route) else: # print(f"There is no start or end stop for the line: {bus_id}") sys.exit() named_stops_in_routes = [] for route in all_routes: temp_set = set() for stop in route: temp_set.add(stop.get_name()) named_stops_in_routes.append(temp_set) combinations = itertools.combinations(named_stops_in_routes, 2) transfer_stops_initial = [i.intersection(k) for i, k in (combination for combination in combinations)] transfer_stops_set = set() for stop_set in transfer_stops_initial: for name in stop_set: transfer_stops_set.add(name) transfer_stops = [*transfer_stops_set]
from BusLine import BusLine from Stop import Stop travel_log = json.loads(input()) busses = {} stops = set() for log in travel_log: bus = BusLine(log["bus_id"]) if bus.get_id() not in busses: busses[bus.get_id()] = bus stop = Stop(log["stop_id"]) stop_name = log["stop_name"] stop.add_name(stop_name) stop_type = log["stop_type"] busses[bus.get_id()].add_stop(stop) if stop_type == "S": busses[bus.get_id()].set_starting_stop(stop) elif stop_type == "F": busses[bus.get_id()].set_finishing_stop(stop) starting_stops = [] finish_stops = [] all_routes = [] for bus_id, bus in busses.items():