advent-of-code/2017-python/solutions/day_12.py

40 lines
1.1 KiB
Python
Raw Normal View History

2021-11-01 16:40:46 +01:00
from solutions import BaseSolution
class Solution(BaseSolution):
input_file = '12.txt'
seen = []
def __str__(self):
return 'Day 12: Digital Plumber'
def _walk(self, i, programs):
line = next(filter(lambda l: l.startswith('{} <->'.format(i)), programs))
piped = line.split()[2:]
self.seen.add(i)
for p in [int(p.replace(',', '')) for p in piped]:
if p not in self.seen:
self._walk(p, programs)
def solve(self, puzzle_input):
programs = [pi.strip() for pi in puzzle_input.splitlines()]
self.seen = set()
self._walk(0, programs)
return len(self.seen)
def solve_again(self, puzzle_input):
programs = [pi.strip() for pi in puzzle_input.splitlines()]
self.seen = set()
groups = 0
for line in programs:
pid = int(line.split()[0])
if pid not in self.seen:
self._walk(pid, programs)
groups += 1
return groups
if __name__ == '__main__':
solution = Solution()
solution.show_results()