This commit is contained in:
2024-11-09 22:13:14 +01:00
parent 290d33cf12
commit 42cbd944d9
269 changed files with 8944 additions and 13 deletions

118
2015/day05.py Normal file
View File

@@ -0,0 +1,118 @@
# AOC Day Script Day XX
# Date : 20XX.12.XX
# Python Code
# Developer : David Bandeira
import sys,time
from helpingFunctions import *
setSampleMode(False)
aocDay = identifyDay(sys.argv[0])
aocYear = identifyYear(sys.argv[0])
path = getPath2Data(aocDay,aocYear)
filename = getFilename2Data(aocDay)
def checkVocals(inputData):
retValue = False
foundVocal=0
for i in range(0,len(inputData)):
letter = inputData[i].lower()
if letter == 'a' or letter == 'e' or letter == 'i' or letter == 'o' or letter == 'u':
foundVocal+=1
if foundVocal > 2:
retValue = True
break
return retValue
def twiceInRow(inputData):
retValue=False
for i in range(0,len(inputData)-1):
if inputData[i] == inputData[i+1]:
retValue = True
break
return retValue
def notContain(inputData):
retValue=False
for i in range(0,len(inputData)-1):
checkValue = inputData[i].lower()+inputData[i+1].lower()
if checkValue == 'ab' or checkValue == 'cd' or checkValue == 'pq' or checkValue == 'xy':
retValue = True
break
return retValue
def doubleTwice(inputData):
retValue=False
for i in range(0,len(inputData)-1):
doubleValue = inputData[i].lower()+inputData[i+1].lower()
for j in range(i+2,len(inputData)-1):
twiceValue = inputData[j].lower()+inputData[j+1].lower()
if doubleValue == twiceValue:
retValue = True
break
if retValue == True:
break
return retValue
def twiceInBetween(inputData):
retValue=False
for i in range(0,len(inputData)-2):
allThree=inputData[i]+inputData[i+1]+inputData[i+2]
if inputData[i] == inputData[i+2]:
retValue = True
break
return retValue
def taskA (data) -> int:
gameScoreA = 0
niceValue = 0
for dataRow in data:
dataElems = list(dataRow)
is3Vocals = checkVocals(dataElems)
if is3Vocals == True:
isTwiceInRow = twiceInRow(dataElems)
if isTwiceInRow == True:
isNotContain = notContain(dataElems)
if isNotContain == False :
niceValue += 1
gameScoreA = niceValue
return gameScoreA
def taskB (data) -> int:
gameScoreB = 0
niceValue = 0
for dataRow in data:
dataElems = list(dataRow)
isDoubleTwice = doubleTwice(dataElems)
if isDoubleTwice == True:
isTwiceInBetween = twiceInBetween(dataElems)
if isTwiceInBetween == True:
niceValue += 1
gameScoreB = niceValue
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()