You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.1 KiB
67 lines
2.1 KiB
#!/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 printOutput(caches):
|
|
print(len(caches))
|
|
|
|
for cacheId, cacheVideos in caches.items():
|
|
print(" ".join(str (i) for i in [cacheId] + cacheVideos))
|
|
|
|
def main():
|
|
videoCount, endpointCount, cacheCount, videoSizes, endpointDatacenterLatencies, endpointCacheLatencies, requestDescriptions = parseInput()
|
|
|
|
# TODO: everything
|
|
#caches[0] = [1, 2, 3]
|
|
#caches[2] = [1, 2, 3]
|
|
|
|
printOutput(caches)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|