day3.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import os
  2. with open(os.path.join(os.path.dirname(__file__), "example.txt")) as example:
  3. example_data = example.read().splitlines()
  4. with open(os.path.join(os.path.dirname(__file__), "input.txt")) as example:
  5. input_data = example.read().splitlines()
  6. def part1(data=input_data):
  7. sum = 0
  8. for battery in data:
  9. jolts = [int(d) for d in battery]
  10. d = max(jolts)
  11. md = str(d)
  12. i = jolts.index(d)
  13. left, right = jolts[:i], jolts[i + 1 :]
  14. lmd = str(max(left)) if left != [] else ""
  15. rmd = str(max(right)) if right != [] else ""
  16. sum += int(lmd + md) if int(lmd + md) > int(md + rmd) else int(md + rmd)
  17. print(f"Part 1: {sum=}")
  18. # can be used for part 1 with number_digits=2
  19. def part2(data=input_data, number_digits=2):
  20. sum = 0
  21. for battery in data:
  22. jolts = [int(d) for d in battery]
  23. numind = []
  24. window_ind = len(jolts) + 1 - number_digits
  25. ind = 0
  26. for _ in range(number_digits):
  27. win = jolts[ind:window_ind]
  28. max_value = max(win)
  29. max_ind = win.index(max_value)
  30. numind.append(max_value)
  31. ind += max_ind + 1
  32. window_ind = window_ind + 1
  33. sum += int("".join([str(d) for d in numind]))
  34. print(f"Part 2: {sum=}")
  35. part1(example_data)
  36. part1(input_data)
  37. part2(example_data, 12)
  38. part2(input_data, 12)