mirror of
https://github.com/danbulant/adventOfCode
synced 2026-05-20 20:58:36 +00:00
code cleanup
This commit is contained in:
parent
2ffbdf3854
commit
24445bee8b
2 changed files with 18 additions and 34 deletions
|
|
@ -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
|
||||
]))
|
||||
|
|
@ -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
|
||||
]
|
||||
))
|
||||
|
|
|
|||
Loading…
Reference in a new issue