55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
|
#!/usr/bin/python3
|
||
|
|
||
|
import sys
|
||
|
|
||
|
def parseInput():
|
||
|
filename = sys.argv[1]
|
||
|
|
||
|
with open(filename) as file:
|
||
|
text = file.readlines()
|
||
|
|
||
|
tokenised = [line.strip().split() for line in text]
|
||
|
|
||
|
videoCount = int(tokenised[0][0])
|
||
|
endpointCount = int(tokenised[0][1])
|
||
|
requestDescriptionCount = int(tokenised[0][2])
|
||
|
cacheCount = int(tokenised[0][3])
|
||
|
cacheSize = int(tokenised[0][4])
|
||
|
|
||
|
videoSizes = [int(video) for video in tokenised[1]]
|
||
|
|
||
|
endpointDatacenterLatencies = []
|
||
|
endpointCacheLatencies = []
|
||
|
i = 2
|
||
|
for endpoint in range(0, endpointCount):
|
||
|
datacenterLatency = int(tokenised[endpoint + i][0])
|
||
|
endpointDatacenterLatencies.append(datacenterLatency)
|
||
|
|
||
|
endpointCacheLatencies.append({})
|
||
|
endpointCacheCount = int(tokenised[endpoint + i][1])
|
||
|
for cache in range(0, endpointCacheCount):
|
||
|
cacheId = int(tokenised[endpoint + 1 + cache + i][0])
|
||
|
cacheLatency = int(tokenised[endpoint + 1 + cache + i][1])
|
||
|
endpointCacheLatencies[endpoint][cacheId] = cacheLatency
|
||
|
i += endpointCacheCount
|
||
|
|
||
|
i += endpointCount
|
||
|
|
||
|
requestDescriptions = []
|
||
|
for video in range(0, videoCount):
|
||
|
requestDescriptions.append({})
|
||
|
|
||
|
for requestDescription in range(0, requestDescriptionCount):
|
||
|
video = int(tokenised[i + requestDescription][0])
|
||
|
endpoint = int(tokenised[i + requestDescription][1])
|
||
|
requestCount = int(tokenised[i + requestDescription][2])
|
||
|
requestDescriptions[video][endpoint] = requestCount
|
||
|
|
||
|
return videoCount, endpointCount, cacheCount, videoSizes, endpointDatacenterLatencies, endpointCacheLatencies, requestDescriptions
|
||
|
|
||
|
def main():
|
||
|
videoCount, endpointCount, cacheCount, videoSizes, endpointDatacenterLatencies, endpointCacheLatencies, requestDescriptions = parseInput()
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|