diff --git a/2015/day07.py b/2015/day07.py index c7fd918..c646538 100644 --- a/2015/day07.py +++ b/2015/day07.py @@ -15,41 +15,29 @@ path = getPath2Data(aocDay,aocYear) filename = getFilename2Data(aocDay) def calculateWire(defWire,calculationSteps,valueWire): - retVal = 0 try: - retVal = int(defWire) - return retVal,valueWire + return int(defWire) except ValueError: pass - + if defWire not in valueWire: calculationStep = calculationSteps[defWire] if len(calculationStep) == 1: - calculateValueA, valueWire = calculateWire(calculationStep[0],calculationSteps,valueWire) - retVal = calculateValueA + retVal = calculateWire(calculationStep[0],calculationSteps,valueWire) else: calc = calculationStep[-2] if calc == 'AND': - calculateValueA, valueWire = calculateWire(calculationStep[0],calculationSteps,valueWire) - calculateValueB, valueWire = calculateWire(calculationStep[2],calculationSteps,valueWire) - retVal = calculateValueA & calculateValueB + retVal = calculateWire(calculationStep[0],calculationSteps,valueWire) & calculateWire(calculationStep[2],calculationSteps,valueWire) elif calc == 'OR': - calculateValueA, valueWire = calculateWire(calculationStep[0],calculationSteps,valueWire) - calculateValueB, valueWire = calculateWire(calculationStep[2],calculationSteps,valueWire) - retVal = calculateValueA | calculateValueB + retVal = calculateWire(calculationStep[0],calculationSteps,valueWire) | calculateWire(calculationStep[2],calculationSteps,valueWire) elif calc == 'NOT': - calculateValueA, valueWire = calculateWire(calculationStep[1],calculationSteps,valueWire) - retVal = 0xffff - calculateValueA + retVal = 0xffff - calculateWire(calculationStep[1],calculationSteps,valueWire) elif calc == 'RSHIFT': - calculateValueA, valueWire = calculateWire(calculationStep[0],calculationSteps,valueWire) - calculateValueB, valueWire = calculateWire(calculationStep[2],calculationSteps,valueWire) - retVal = calculateValueA >> calculateValueB + retVal = calculateWire(calculationStep[0],calculationSteps,valueWire) >> calculateWire(calculationStep[2],calculationSteps,valueWire) elif calc == 'LSHIFT': - calculateValueA, valueWire = calculateWire(calculationStep[0],calculationSteps,valueWire) - calculateValueB, valueWire = calculateWire(calculationStep[2],calculationSteps,valueWire) - retVal = calculateValueA << calculateValueB + retVal = calculateWire(calculationStep[0],calculationSteps,valueWire) << calculateWire(calculationStep[2],calculationSteps,valueWire) valueWire[defWire] = retVal - return valueWire[defWire],valueWire + return valueWire[defWire] def createCalcSteps(data): calculationSteps={} @@ -59,26 +47,23 @@ def createCalcSteps(data): return calculationSteps def taskA (data) -> int: + global calculationSteps gameScoreA = 0 calculationSteps=createCalcSteps(data) - gameScoreA,valueWire = calculateWire('a',calculationSteps,{}) + gameScoreA = calculateWire('a',calculationSteps,{}) return gameScoreA -def taskB (data,valueA) -> int: +def taskB (data) -> int: gameScoreB = 0 - calculationSteps=createCalcSteps(data) - gameScoreB,valueWire = calculateWire('a',calculationSteps,{'b':valueA}) + gameScoreB = calculateWire('a',calculationSteps,{'b':score}) return gameScoreB def task(task: int,data) -> int: - global scoreA - global scoreB - score=0 + global score if task == 1: score = taskA(data) - scoreA=score elif task == 2: - score = taskB(data,scoreA) + score = taskB(data) return score def main():