day 7
This commit is contained in:
parent
92f17f3046
commit
b311ad9fd4
|
|
@ -0,0 +1,25 @@
|
||||||
|
import aocd
|
||||||
|
|
||||||
|
def parse(data):
|
||||||
|
return filter(None, [set(x for x, c in enumerate(line) if c != '.') for line in data.strip().split('\n')])
|
||||||
|
|
||||||
|
def num_splits(manifold):
|
||||||
|
total = 0
|
||||||
|
|
||||||
|
beams, *rows = manifold
|
||||||
|
for row in rows:
|
||||||
|
for splitter in row:
|
||||||
|
if splitter in beams:
|
||||||
|
beams.remove(splitter)
|
||||||
|
beams |= {splitter-1, splitter+1}
|
||||||
|
total += 1
|
||||||
|
|
||||||
|
return total
|
||||||
|
|
||||||
|
def main(data):
|
||||||
|
return num_splits(parse(data))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
solution = main(aocd.get_data(day=7, year=2025))
|
||||||
|
print(solution)
|
||||||
|
aocd.submit(solution, part='a', day=7, year=2025)
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
import aocd
|
||||||
|
|
||||||
|
import collections
|
||||||
|
|
||||||
|
def parse(data):
|
||||||
|
return filter(None, [set(x for x, c in enumerate(line) if c != '.') for line in data.strip().split('\n')])
|
||||||
|
|
||||||
|
def num_timelines(manifold):
|
||||||
|
timelines, *rows = manifold
|
||||||
|
timelines = collections.Counter(timelines)
|
||||||
|
for row in rows:
|
||||||
|
for splitter in row:
|
||||||
|
if splitter in timelines:
|
||||||
|
timelines[splitter-1] += timelines[splitter]
|
||||||
|
timelines[splitter+1] += timelines[splitter]
|
||||||
|
del timelines[splitter]
|
||||||
|
|
||||||
|
return sum(timelines.values())
|
||||||
|
|
||||||
|
def main(data):
|
||||||
|
return num_timelines(parse(data))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
solution = main(aocd.get_data(day=7, year=2025))
|
||||||
|
print(solution)
|
||||||
|
aocd.submit(solution, part='b', day=7, year=2025)
|
||||||
Loading…
Reference in New Issue