Question: Don't know how to solve the following functon import csv import math from typing import List, TextIO here are the constants ID_INDEX = 0 NAME_INDEX
Don't know how to solve the following functon import csv import math from typing import List, TextIO here are the constants ID_INDEX = 0 NAME_INDEX = 1 HIGHWAY_INDEX = 2 LAT_INDEX = 3 LON_INDEX = 4 YEAR_INDEX = 5 LAST_MAJOR_INDEX = 6 LAST_MINOR_INDEX = 7 NUM_SPANS_INDEX = 8 SPAN_LENGTH_INDEX = 9 LENGTH_INDEX = 10 LAST_INSPECTED_INDEX = 11 BCIS_INDEX = 12 MAX_BCIS = 5 HIGH_PRIORITY_BCI = 60 LOW_PRIORITY_BCI = 100 HIGH_PRIORITY_RADIUS = 500 LOW_PRIORITY_RADIUS = 100 EARTH_RADIUS = 6371 ### SAMPLE DATA TO USE IN DOCSTRING EXAMPLES #### THREE_BRIDGES_UNCLEANED = [ ['1 - 32/', 'Highway 24 Underpass at Highway 403', '403', '43.167233', '-80.275567', '1965', '2014', '2009', '4', 'Total=64 (1)=12;(2)=19;(3)=21;(4)=12;', '65', '04/13/2012', '72.3', '', '72.3', '', '69.5', '', '70', '', '70.3', '', '70.5', '', '70.7', '72.9', ''], ['1 - 43/', 'WEST STREET UNDERPASS', '403', '43.164531', '-80.251582', '1963', '2014', '2007', '4', 'Total=60.4 (1)=12.2;(2)=18;(3)=18;(4)=12.2;', '61', '04/13/2012', '71.5', '', '71.5', '', '68.1', '', '69', '', '69.4', '', '69.4', '', '70.3', '73.3', ''], ['2 - 4/', 'STOKES RIVER BRIDGE', '6', '45.036739', '-81.33579', '1958', '2013', '', '1', 'Total=16 (1)=16;', '18.4', '08/28/2013', '85.1', '85.1', '', '67.8', '', '67.4', '', '69.2', '70', '70.5', '', '75.1', '', '90.1', ''] ] THREE_BRIDGES = [[1, 'Highway 24 Underpass at Highway 403', '403', 43.167233, -80.275567, '1965', '2014', '2009', 4, [12.0, 19.0, 21.0, 12.0], 65.0, '04/13/2012', [72.3, 69.5, 70.0, 70.3, 70.5, 70.7, 72.9]], [2, 'WEST STREET UNDERPASS', '403', 43.164531, -80.251582, '1963', '2014', '2007', 4, [12.2, 18.0, 18.0, 12.2], 61.0, '04/13/2012', [71.5, 68.1, 69.0, 69.4, 69.4, 70.3, 73.3]], [3, 'STOKES RIVER BRIDGE', '6', 45.036739, -81.33579, '1958', '2013', '', 1, [16.0], 18.4, '08/28/2013', [85.1, 67.8, 67.4, 69.2, 70.0, 70.5, 75.1, 90.1]] ] ####### BEGIN HELPER FUNCTIONS #################### def read_data(csv_file: TextIO) -> List[List[str]]: """Read and return the contents of the open CSV file csv_file as a list of lists, where each inner list contains the values from one line of csv_file. Docstring examples not given since results depend on csv_file. """ data = [] lines = csv.reader(csv_file) for line in lines: data.append(line) data = data[2:] return data def calculate_distance(lat1: float, lon1: float, lat2: float, lon2: float) -> float: """Return the distance in kilometers between the two locations defined by (lat1, lon1) and (lat2, lon2), rounded to the nearest meter. >>> calculate_distance(43.659777, -79.397383, 43.657129, -79.399439) 0.338 >>> calculate_distance(43.42, -79.24, 53.32, -113.30) 2713.226 """ # This function uses the haversine function to find the # distance between two locations. You do NOT need to understand why it # works. You will just need to call on the function and work with what it # returns. # Based on code at goo.gl/JrPG4j # convert decimal degrees to radians lon1, lat1, lon2, lat2 = (math.radians(lon1), math.radians(lat1), math.radians(lon2), math.radians(lat2)) # haversine formula t lon_diff = lon2 - lon1 lat_diff = lat2 - lat1 a = (math.sin(lat_diff / 2) ** 2 + math.cos(lat1) * math.cos(lat2) * math.sin(lon_diff / 2) ** 2) c = 2 * math.asin(math.sqrt(a)) return round(c * EARTH_RADIUS, 3) ####### END HELPER FUNCTIONS ####################
def assign_inspectors(bridge_data: List[list], inspectors: List[List[float]], max_bridges: int, num_urgents: int) -> List[List[int]]: """Return a list of bridge IDs to be assigned to each inspector in inspectors. inspectors is a list containing (latitude, longitude) pairs representing each inspector's location. All the bridges in urgent cathegory has to be assigned first to the closest inspector. At most max_bridges bridges should be assigned to an inspector, and each bridge should only be assigned once (to the first inspector that can inspect that bridge). See the "Assigning Inspectors" section of the handout for more details. Precondition: num_urgents <= max_bridges >>> assign_inspectors(THREE_BRIDGES, [[43.10, -80.15]], 1, 1) [[2]] >>> assign_inspectors(THREE_BRIDGES, [[43.10, -80.15]], 2, 1) [[2, 1]] >>> assign_inspectors(THREE_BRIDGES, [[43.10, -80.15]], 3, 1) [[2, 1]] >>> assign_inspectors(THREE_BRIDGES, [[43.20, -80.35], [43.10, -80.15]], 1 \ , 1) [[2], [1]] >>> assign_inspectors(THREE_BRIDGES, [[43.20, -80.35], [43.10, -80.15]], 2 \ , 1) [[2, 1], []] >>> assign_inspectors(THREE_BRIDGES, [[43.20, -80.35], [45.0368, -81.34]], \ , 2, 1) [[2, 1], [3]] >>> assign_inspectors(THREE_BRIDGES, [[38.691, -80.85], [43.20, -80.35]], \ 2, 1) [[], [2, 1]] >>> assign_inspectors(THREE_BRIDGES, [[38.691, -80.85], [43.20, -80.35]], \ 2, 2) [[], [1, 2]]
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
