diff --git a/2022/day07/Day07A.class b/2022/day07/Day07A.class index 64bd59b..d249f28 100644 Binary files a/2022/day07/Day07A.class and b/2022/day07/Day07A.class differ diff --git a/2022/day07/Day07A.java b/2022/day07/Day07A.java index 3d32960..a61d02d 100644 --- a/2022/day07/Day07A.java +++ b/2022/day07/Day07A.java @@ -2,10 +2,12 @@ import java.nio.file.Paths; import java.util.Scanner; import java.io.IOException; import java.util.Stack; +import java.util.ArrayList; +import java.util.Collections; public class Day07A { public static void main(String[] args) { - Stack breadCrumbs = new Stack(); + Stack crumbs = new Stack(); try (Scanner inputFile = new Scanner(Paths.get("input.txt"))) { boolean passingBack = false; String[] command = new String[3]; @@ -17,11 +19,11 @@ public class Day07A { switch (command[1]) { case "cd": { if (command[2].compareTo("..") == 0) { - breadCrumbs.pop(); - } else if (breadCrumbs.empty()) { - breadCrumbs.push(new Directory(command[2], command[2])); + crumbs.pop(); + } else if (crumbs.empty()) { + crumbs.push(new Directory(command[2], command[2])); } else { - breadCrumbs.push(breadCrumbs.peek().moveToSubDir(command[2])); + crumbs.push(crumbs.peek().moveToSubDir(command[2])); } break; } @@ -29,11 +31,11 @@ public class Day07A { command = inputFile.nextLine().split(" "); while (!inputFile.hasNext("$") && inputFile.hasNext()) { if (command[0].compareTo("dir") == 0) { - breadCrumbs.peek().addDir(command[1]); + crumbs.peek().addDir(command[1]); } else if (command[0].compareTo("$") == 0) { break; } else{ - breadCrumbs.peek().addFile(Integer.parseInt(command[0])); + crumbs.peek().addFile(Integer.parseInt(command[0])); } command = inputFile.nextLine().split(" "); } @@ -42,9 +44,24 @@ public class Day07A { } } } catch (IOException e) {e.printStackTrace();} - while (breadCrumbs.size() > 1) { - breadCrumbs.pop(); + while (crumbs.size() > 1) { + crumbs.pop(); } - + ArrayList sizes = crumbs.peek().sizeHierarchy(); + int sum = 0; + for (Integer i : sizes) { + if (i <= 100000) { + sum += i; + } + } + System.out.println(sum); + + Stack sortList = new Stack(); + for (Integer i : sizes) { + if (i >= 30000000 - (70000000 - Collections.max(sizes))) { + sortList.push(i); + } + } + System.out.println(Collections.min(sortList)); } } diff --git a/2022/day07/Directory.class b/2022/day07/Directory.class index 3252fb0..d6120d3 100644 Binary files a/2022/day07/Directory.class and b/2022/day07/Directory.class differ diff --git a/2022/day07/Directory.java b/2022/day07/Directory.java index c649688..f97c52c 100644 --- a/2022/day07/Directory.java +++ b/2022/day07/Directory.java @@ -16,29 +16,6 @@ public class Directory { this.parentDirName = parent; } - public Directory (String name, String parent, ArrayList filesList){ - this.dirName = name; - this.parentDirName = parent; - this.files.addAll(filesList); - } - - public Directory (String name, String parent, String[] dirsList){ - this.dirName = name; - this.parentDirName = parent; - for (String s : dirsList) { - this.addDir(s); - } - } - - public Directory (String name, String parent, ArrayList filesList, String[] dirsList){ - this.dirName = name; - this.parentDirName = parent; - this.files.addAll(filesList); - for (String s : dirsList) { - this.addDir(s); - } - } - public int getDirSize() { this.dirSize = this.calcDirSize(); return this.dirSize; @@ -59,16 +36,6 @@ public class Directory { this.subDirs.add(new Directory(s, this.dirName)); } - public ArrayList getSubsOfCurrentDir() { - this.dirSize = this.calcDirSize(); - return this.subDirs; - } - - public void addDir(String s, ArrayList i) { - this.subDirs.add(new Directory(s, this.dirName)); - - } - public void addFile(int i) { this.files.add(i); } @@ -77,15 +44,6 @@ public class Directory { return this.dirName; } - public ArrayList getRecursiveSubDirs() { - ArrayList arr = new ArrayList(); - this.dirSize = this.calcDirSize(); - for (Directory dir : subDirs) { - arr.addAll(dir.getRecursiveSubDirs()); - } - return arr; - } - public Directory moveToSubDir(String s) { Directory retDir = new Directory(); Boolean foundFlag = false; @@ -102,28 +60,12 @@ public class Directory { return retDir; } - public String toString() { - StringBuilder s = new StringBuilder(); - for (Integer i : files) { - s.append(i.toString()+"\n"); - } + public ArrayList sizeHierarchy() { + ArrayList s = new ArrayList(); + s.add(this.getDirSize()); for (Directory d : subDirs) { - s.append(d.getDirName()+"\n"); + s.addAll(d.sizeHierarchy()); } - return s.toString(); - } - - public String fullHierarchyString() { - StringBuilder s = new StringBuilder(); - for (Integer i : files) { - s.append(i.toString()+"\n"); - } - for (Directory d : subDirs) { - s.append(d.getDirName()+"\n"); - } - for (Directory d : subDirs) { - s.append(d.fullHierarchyString()); - } - return s.toString(); + return s; } } \ No newline at end of file