Cleaning up code.
This commit is contained in:
parent
f6afc7a49c
commit
04e88a9526
1 changed files with 6 additions and 12 deletions
18
07/main.py
18
07/main.py
|
|
@ -14,25 +14,19 @@ def parse_input(input_filepath: str) -> list[str]:
|
||||||
|
|
||||||
|
|
||||||
def find_split_count_and_timelines(grid: list[str]) -> tuple[int, int]:
|
def find_split_count_and_timelines(grid: list[str]) -> tuple[int, int]:
|
||||||
beam_sets: set[int] = set([grid[0].find("S")])
|
|
||||||
beam_dict: dict = {grid[0].find("S"): 1}
|
beam_dict: dict = {grid[0].find("S"): 1}
|
||||||
split_count = 0
|
split_count: int = 0
|
||||||
for row in range(len(grid[1:])):
|
for row in range(len(grid[1:])):
|
||||||
splitters: set[int] = set([i.start(0) for i in finditer("\\^", grid[row])])
|
splitters: set[int] = set([i.start(0) for i in finditer("\\^", grid[row])])
|
||||||
if not splitters:
|
if not splitters:
|
||||||
debug(
|
debug(
|
||||||
f"{"".join(list[str](map(lambda x: "|" if x in beam_sets else ("^" if x in splitters else "."), range(len(grid)))))}"
|
f"{"".join(list[str](map(lambda x: "|" if (x in beam_dict.keys() and beam_dict[x] != 0) else ("^" if x in splitters else "."), range(len(grid)))))}"
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
intersections = beam_sets.intersection(splitters)
|
intersections = set(
|
||||||
differences = beam_sets.difference(splitters)
|
[x for x in beam_dict.keys() if beam_dict[x] != 0]
|
||||||
|
).intersection(splitters)
|
||||||
split_count += len(intersections)
|
split_count += len(intersections)
|
||||||
beam_sets = (
|
|
||||||
set([x - 1 for x in intersections if x > 0])
|
|
||||||
.union([x + 1 for x in intersections if x < len(grid) - 2])
|
|
||||||
.union(differences)
|
|
||||||
.difference(splitters)
|
|
||||||
)
|
|
||||||
for i in intersections:
|
for i in intersections:
|
||||||
temp_beams = beam_dict[i]
|
temp_beams = beam_dict[i]
|
||||||
beam_dict[i] = 0
|
beam_dict[i] = 0
|
||||||
|
|
@ -45,7 +39,7 @@ def find_split_count_and_timelines(grid: list[str]) -> tuple[int, int]:
|
||||||
else:
|
else:
|
||||||
beam_dict[i + 1] = temp_beams
|
beam_dict[i + 1] = temp_beams
|
||||||
debug(
|
debug(
|
||||||
f"{"".join(list[str](map(lambda x: "|" if x in beam_sets else ("^" if x in splitters else "."), range(len(grid)))))}"
|
f"{"".join(list[str](map(lambda x: "|" if (x in beam_dict.keys() and beam_dict[x]) else ("^" if x in splitters else "."), range(len(grid)))))}"
|
||||||
)
|
)
|
||||||
return (split_count, sum(beam_dict.values()))
|
return (split_count, sum(beam_dict.values()))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue