def parse( filename: str ) -> Tuple[str, Dict[str, List[str]], Dict[str, List[str]]]: lines = all_lines(filename) begin = lines[-1] rules = defaultdict(list) rules_c = defaultdict(list) for line in lines[0:-2]: left, right = line.split(" => ") rules[left].append(right) rules_c[right].append(left) return begin, rules, rules_c
def part2(filename: str) -> int: """ Given a filename, solve 2015 day 18 part 2 """ grid = np.array([parse_line(x) for x in all_lines(filename)]) return part2(grid, 100)
def part2(filename: str) -> int: """ Given a filename, solve 2015 day 17 part 2 """ containers = [int(x) for x in all_lines(filename)] return part2(containers, 150)
def part2(filename: str) -> int: """ Given a filename, solve 2015 day 06 part 2 """ commands = [parse_line(line) for line in all_lines(filename)] return part2(commands)
def part2(filename: str) -> int: """ Given a filename, solve 2015 day 14 part 2 """ deers = [parse_line(line) for line in all_lines(filename)] return race_winner_points(deers, 2503)
def part2(filename: str) -> int: """ Given a filename, solve 2015 day 05 part 2 """ lines = all_lines(filename) return sum(1 for line in lines if is_nice2(line))
def part2(filename: str) -> int: """ Given a filename, solve 2015 day 15 part 2 """ ings = [parse_line(line) for line in all_lines(filename)] return part1(ings, 500)
def parse(filename: str) -> List[int]: return [int(x) for x in all_lines(filename)]
def part2(filename: str) -> int: """ Given a filename, solve 2015 day 09 part 2 """ distances, cities = parse(all_lines(filename)) return longest_distance(distances, cities)