2022/day7/part2.py
2024-12-01 19:53:34 +01:00

26 lines
628 B
Python
Executable File

#!/usr/bin/env python
from common import Folder, parse
def folders_big_enough(folder: Folder, threshold: int) -> list[Folder]:
if folder.size < threshold:
return []
else:
folder_list = [folder]
for child in filter(lambda x: type(x) is Folder, folder.children):
folder_list += folders_big_enough(child, threshold)
return folder_list
def solve(folder: Folder) -> int:
threshold = 30000000 - (70000000 - folder.size)
return min(sorted(folders_big_enough(folder, threshold))).size
def main():
print(solve(parse("input")))
if __name__ == "__main__":
main()