# AOC Day Script Day XX # Date : 20XX.12.XX # Python Code # Developer : David Bandeira import sys,time from helpingFunctions import * from collections import defaultdict,deque setSampleMode(False) aocDay = identifyDay(sys.argv[0]) aocYear = identifyYear(sys.argv[0]) path = getPath2Data(aocDay,aocYear) filename = getFilename2Data(aocDay) def buildBlocks(data): dataBlocks=[] for inputData in range(0,len(data[0])-2,2): dataBlocks.append((int(data[0][inputData]),int(data[0][inputData+1]))) dataBlocks.append((int(data[0][inputData+2]),0)) return dataBlocks def expandDataBlock(inputData, dataBlock): expDataBlock=[] for i in range(0,dataBlock[0]): expDataBlock.append(str(inputData)) for i in range(0,dataBlock[1]): expDataBlock.append(None) return expDataBlock def cleanUpString(data): data = deque(data) res = [] while data: value = data.popleft() if value == None: while data and value == None: value = data.pop() if value != None: res.append(value) return res #def cleanUpString(data): # for i in range(0,len(data)): # if i >= len(data): # break # if data[i] == '.': # for j in range(len(data)-1,0,-1): # if i==j: # return data # if data[j] != '.': # #data = data[:i]+data[j]+data[i+1:j]+"."+data[j+1:len(data)] # data = data[:i]+data[j]+data[i+1:j] # break # return data def checksumme(data): ret = 0 for i in range(0,len(data)): ret = ret+(i*int(data[i])) return ret def taskA (data) -> int: expandedData=[] gameScoreA = 0 dataBlocks=buildBlocks(data) for i in range(len(dataBlocks)): expandedData = expandedData + expandDataBlock(i,dataBlocks[i]) gameScoreA = checksumme(cleanUpString(expandedData)) return gameScoreA def taskB (data) -> int: gameScoreB = 0 return gameScoreB def task(task: int,data) -> int: score=0 if task == 1: score = taskA(data) elif task == 2: score = taskB(data) return score def main(): showSampleMode() try: data = open(path+'/'+filename).read().strip().split('\n') except: print ('no inputfile found') print ('please check file %s on path %s' % (filename, path)) quit() st=time.time() print ('Day '+aocDay+': Tasks 1: '+ str(task(1,data))+ ' executation time: ' + str(int((time.time()-st)*1000)) + 'ms') st=time.time() print ('Day '+aocDay+': Tasks 2: '+ str(task(2,data))+ ' executation time: ' + str(int((time.time()-st)*1000)) + 'ms') if __name__ == "__main__": main()