Advertisement
Guest User

AoC 2022 Day 1

a guest
Dec 4th, 2022
525
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.06 KB | None | 0 0
  1. # aoc202201.py
  2.  
  3. import pathlib
  4. import sys
  5.  
  6.  
  7. def parse(puzzle_input: str) -> list[list[int]]:
  8.     """ Parse input """
  9.     return [[int(cal) for cal in elf.split('\n')]
  10.             for elf in puzzle_input.split('\n\n')]
  11.  
  12.  
  13. def part1(data: list[list[int]]) -> int:
  14.     """ Solve part 1 """
  15.     return max((sum(nums) for nums in data))
  16.  
  17.  
  18. def part2(data: list[list[int]]) -> int:
  19.     """ Solve part 2 """
  20.     return sum(sorted((sum(nums) for nums in data))[-3:])
  21.  
  22.  
  23. def solve(puzzle_input: str) -> tuple[int, int]:
  24.     """ Solve the puzzle for the given input """
  25.     data: list[list[int]] = parse(puzzle_input)
  26.     solution1: int = part1(data)  # Correct answer was 66487 (with my data)
  27.     solution2: int = part2(data)  # Correct answer was 197301 (with my data)
  28.  
  29.     return solution1, solution2
  30.  
  31.  
  32. if __name__ == "__main__":
  33.     for path in sys.argv[1:]:
  34.         print(f"{path}:")
  35.         puzzle_input = pathlib.Path(path).read_text().strip()
  36.         solutions = solve(puzzle_input)
  37.         print('\n'.join(str(solution) for solution in solutions))
  38.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement