Advertisement
Guest User

Advent of Code - Day 7

a guest
Dec 7th, 2022
812
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1. def get_dir_sizes() -> dict[str, int]:
  2.     pwd: str = ""
  3.     dirs: dict[str, int] = {"/": 0}
  4.  
  5.     for line in get_daily_input(DAY):
  6.         if line == "$ ls":
  7.             continue
  8.         elif line == "$ cd /":
  9.             pwd = "/"
  10.         elif line == "$ cd ..":
  11.             pwd = "/".join(pwd.split("/")[:-2]) + "/"
  12.         elif line.startswith("$ cd"):
  13.             pwd += line.split(" ")[-1] + "/"
  14.         elif line.startswith("dir "):
  15.             dirs[pwd + line.split(" ")[-1] + "/"] = 0
  16.         else:
  17.             dirs[pwd] += int(line.split(" ")[0])
  18.  
  19.     return {k: sum([dirs[l] for l in dirs if l.startswith(k)]) for k in dirs}
  20.  
  21.  
  22. def part_1() -> int:
  23.     dir_sizes = get_dir_sizes()
  24.     return sum([dir_sizes[d] for d in dir_sizes if dir_sizes[d] <= 100000])
  25.  
  26.  
  27. def part_2() -> int:
  28.     dir_sizes = get_dir_sizes()
  29.     space_available = 70000000 - dir_sizes["/"]
  30.     space_needed = 30000000 - space_available
  31.     return min([dir_sizes[d] for d in dir_sizes if dir_sizes[d] >= space_needed])
  32.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement