code cleanup

This commit is contained in:
Daniel Bulant 2023-12-03 13:20:20 +01:00
parent 2ffbdf3854
commit 24445bee8b
2 changed files with 18 additions and 34 deletions

View file

@ -6,21 +6,10 @@ partnumbers = []
lineNumber = 0
for line in open("./input2"):
lineNumber += 1
# Find all numbers and their positions
foundNumbers = [(m.group(), m.start(), m.end()) for m in re.finditer(r'\d+', line)]
partnumbers += [(lineNumber, number[0], number[1], number[2]) for number in foundNumbers]
# Find all symbols and their positions
foundSymbols = [(m.group(), m.start(), m.end()) for m in re.finditer(r'[^\d.\n]', line)]
symbols += [(lineNumber, symbol[0], symbol[1], symbol[2]) for symbol in foundSymbols]
partnumbers += [(lineNumber, m.group(), m.start(), m.end()) for m in re.finditer(r'\d+', line)]
symbols += [(lineNumber, m.group(), m.start(), m.end()) for m in re.finditer(r'[^\d.\n]', line)]
print(symbols)
matchingNumbers = []
for partnumber in partnumbers:
foundSymbols = [symbol for symbol in symbols if abs(symbol[0] - partnumber[0]) <= 1 and partnumber[2] - 1 <= symbol[2] <= partnumber[3]]
if len(foundSymbols) > 0:
print(partnumber[1])
matchingNumbers.append(partnumber[1])
print(sum([int(number) for number in matchingNumbers]))
print(sum([
int(partnumber[1]) for partnumber in partnumbers
if len([symbol for symbol in symbols if abs(symbol[0] - partnumber[0]) <= 1 and partnumber[2] - 1 <= symbol[2] <= partnumber[3]]) > 0
]))

View file

@ -7,21 +7,16 @@ partnumbers = []
lineNumber = 0
for line in open("./input2"):
lineNumber += 1
# Find all numbers and their positions
foundNumbers = [(m.group(), m.start(), m.end()) for m in re.finditer(r'\d+', line)]
partnumbers += [(lineNumber, number[0], number[1], number[2]) for number in foundNumbers]
# Find all symbols and their positions
foundSymbols = [(m.group(), m.start(), m.end()) for m in re.finditer(r'[^\d.\n]', line)]
symbols += [(lineNumber, symbol[0], symbol[1], symbol[2]) for symbol in foundSymbols]
partnumbers += [(lineNumber, m.group(), m.start(), m.end()) for m in re.finditer(r'\d+', line)]
symbols += [(lineNumber, m.group(), m.start(), m.end()) for m in re.finditer(r'[^\d.\n]', line)]
print(symbols)
foundGears = []
for symbol in symbols:
if symbol[1] != '*': continue
foundNumbers = [partnumber for partnumber in partnumbers if abs(symbol[0] - partnumber[0]) <= 1 and partnumber[2] - 1 <= symbol[2] <= partnumber[3]]
if len(foundNumbers) != 2: continue
gearRation = math.prod([int(number[1]) for number in foundNumbers])
foundGears.append(gearRation)
print(sum(foundGears))
print(sum(
[
math.prod([int(number[1]) for number in foundNumbers])
for symbol, foundNumbers in [
(symbol, [partnumber for partnumber in partnumbers if abs(symbol[0] - partnumber[0]) <= 1 and partnumber[2] - 1 <= symbol[2] <= partnumber[3]])
for symbol in symbols if symbol[1] == '*'
]
if len(foundNumbers) == 2
]
))