29 lines
894 B
Python
29 lines
894 B
Python
dirstack = [] # Stack of directories we are currently at
|
|
directories = {} # Maps paths to total filesums
|
|
|
|
def addsize(size):
|
|
for (i, dir) in enumerate(dirstack):
|
|
path = "/".join(dirstack[:i+1])
|
|
if not path in directories:
|
|
directories[path] = 0
|
|
directories[path] += size
|
|
|
|
with open("input.txt", "r") as f:
|
|
for line in f.readlines():
|
|
line = line.strip()
|
|
if line[0] == '$' and line[2] == 'c':
|
|
folder = line.split("$ cd ")[1]
|
|
if folder == '..':
|
|
dirstack.pop()
|
|
else:
|
|
dirstack.append(folder)
|
|
else:
|
|
indicator = line.split(" ")[0]
|
|
try:
|
|
size = int(indicator)
|
|
addsize(size)
|
|
except:
|
|
pass
|
|
sum = 0
|
|
[sum := sum + directories[x] for x in directories if directories[x] <= 100000]
|
|
print(sum) |