day 7 first answer

This commit is contained in:
2022-12-07 17:02:39 +02:00
parent 1c4ffaaf49
commit b5172e0f22

90
07/g.py Normal file
View File

@@ -0,0 +1,90 @@
import os
input = open(os.path.dirname(__file__) +
"/input.txt", "r").readlines()
class Directory(object):
def __init__(self, name: str, parent):
self.name = name
self.files = {}
self.dirs = {}
self.parent = parent
def add_file(self, name: str, size: int):
self.files[name] = size
def add_directory(self, name, dir):
self.dirs[name] = dir
def get_directory(self, dir: str):
return self.dirs[dir]
def get_parent(self):
return self.parent
def size(self):
tot = 0
for i in self.files.values():
tot += int(i)
for d in self.dirs.values():
tot += int(d.size())
return tot
def directories(self):
return self.dirs.values()
def pwd(self):
str = ''
if self.parent != None:
str = self.parent.pwd() + '/' + self.name
return str
def __str__(self):
return self.pwd() + " " + str(self.size())
class Dictlist(dict):
def __setitem__(self, key, value):
try:
self[key]
except KeyError:
super(Dictlist, self).__setitem__(key, [])
self[key].append(value)
dirs = {'/': Directory('/', None)}
def parseLine(line: str):
return line
curdir = dirs['/']
for l in input:
cmd = l.strip().split(' ')
if cmd[1] == "cd":
if cmd[2] == '..':
curdir = curdir.get_parent()
elif cmd[2] != '/':
curdir = curdir.get_directory(cmd[2])
if (cmd[0] == 'dir'):
dirs[curdir.pwd()+cmd[1]] = Directory(cmd[1], curdir)
curdir.add_directory(cmd[1], dirs[curdir.pwd()+cmd[1]])
if str(cmd[0]).isnumeric():
curdir.add_file(cmd[1], cmd[0])
tot = 0
for i in dirs.values():
dirsize = i.size()
if dirsize <= 100000:
tot += dirsize
print(tot)