Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hardest one yet! Decided to do what I normally do for these: OOP.
File
andDir
class, and just for fun, aFilesystem
class that mostly handles parsing of the input, and some sugar for iterating over the file tree.startsWith
checks for what kind of line we are looking at, and regex to extract name and size values.File
s andDir
s have asize()
method. When aDir
'ssize()
is call, we say its the size of itscontent
s sizes added up. Its contents can either be files or dirs, so if it is a dir, that's where we see the recursion.size()
method to ignore an item's size. If the thing we are looking at is what we should ignore, we immediately return0
. So for dirs, it doesn't recursive through its tree.