From d49d7b5e6e52586539de36138ae5c544290a48b4 Mon Sep 17 00:00:00 2001 From: Fennel Kora Date: Thu, 8 Dec 2022 11:22:45 -0500 Subject: [PATCH] added completed solution for day 7 part 1 - part 2 still nonfunctional Changes to be committed: modified: 2022/day07/Day07A.class modified: 2022/day07/Day07A.java modified: 2022/day07/Directory.class modified: 2022/day07/Directory.java --- 2022/day07/Day07A.class | Bin 2006 -> 3248 bytes 2022/day07/Day07A.java | 37 ++++++++++++++------ 2022/day07/Directory.class | Bin 4450 -> 2223 bytes 2022/day07/Directory.java | 68 +++---------------------------------- 4 files changed, 32 insertions(+), 73 deletions(-) diff --git a/2022/day07/Day07A.class b/2022/day07/Day07A.class index 64bd59b624a8ec0268075fb2330d7bb64377e656..d249f28e19ef4f1ca6fb9977b158e6119bcb70df 100644 GIT binary patch delta 1504 zcmaKsYitx%6vzK(c6M*OJGIR=1-8;kvC>i+7kNdy&;S)}O-VJyVhtZ0+HpH{cV^w0 zt=+2Z`oagG;DS6v1&bDZQmWh1B33{XFd<@!PDp`6j}O!)~suBHQv>eB+RW{+`3KeQ-cXx zj|A7n<7%>1x9pG?19(Q@Sq0BwJE8OzK7<0@W{_>h33G1XwB+?6AJRyb3p`Ko&mgXw z9qWqT?%&N4MIr{7Ez6Gusvzn zT9n{26E>l2`Zl^5d^pa4b~~=6)F@wP5B3VYr67Z@>(`m>q%uLooREm&qDvRjF1fxU z?Zp8c6gZ^dFy3MK%oUo-S+;7} zoI=fPN{eA@VJ#lYx0cD7!{qbr!Aa+zj|+T~*)DIQ)0v;;ds1A?^`>cCc3h2Z)a)L! z+bZ^8)Qd5k5g2#=JVB_QDY$O*nY~(&ORF2<>0};IyLbwCoDR-TBkwp3ZB~u$h-Ou{ znr3ez7Md;_(bE-)UT)UT16IbPC#^yqOd{E0oXMUSmsE1fG6N_ z0Q>y=>&NgmBl*Q2HEQW0elc26Pi?rHI^d%o-eU+-KbCH# zG?vj$ET`RAK_{`2MzD$|a4((1ee@kdbcNra-?2uL&?xa+DHUOzG!ISE3fwO>V}tZ4 z9+VzKGbaTkQN=mHEifz~1iZvjW|ydWGJh5bgLPr?CuqGuR4%>-zrXW3llEPxY*+2CP+^-i$N1Dn zXaorfPgPBeO&rYiu&#tr7xvqIjBv)ev_^e5s+|U|A6~*OYj*LIw36*mv0dAsB*-}Gr%f?tTCjx!`w2$J)?9OqsKU}BzR|n52gELhF?+^ zW!9!hTb4OnV%~~H7HpHOZIQDQdBuoWReZ>@)mgC?1ukS?Ch;rRpySfv9G*$FGqJ_Y Xf9;f8cNO=IZ8&Oyxc=MFrjO 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 3252fb03dd0ac6c763f7859710c01ab98579eb5d..d6120d3bae756b57c0d7dc55360e7379d896a2c9 100644 GIT binary patch literal 2223 zcmZ`)SyNkO7=FGioRA#$%@7ugMaWVpt=$Mvb{h@B8U(?uC*c5xhNN?nFxDA=NS*PT z8!yz6Q0@AACQyX4Q;zx@ti8U;UGa4Ybr@S;JW zbzeKw#&cSJcYHOouV+gF4O2$mD9s4CN5kt1d;%SoQn_U0#^+2^dzv(gB|j9n8xer2 zph-nDS_B#w4U;Yk=2HRhj*-)g0$s@qjN{U;s&L_((Wj*6=o7VsG*-PD+ZK=)|44tv6p#{(F_sDiMH2%^MSORuUz?|WJ?rGHH_ z8Fx!sTvIWIaRE=>5_eX8*D)VgFd@)ZD@Y<=(sy;!kL$Rp;ysy^&&Ze7wOrZC^tP=vYDj#GZmlX3pQqvf(Hhh$;|F?9(t-3KR-q!K*3ik9znCC&gF6fL8mU3?m{7# z<5U@iJZr-Y)5dOIE0s-lb)>FA&n9!KuJ+X`&9LM{7b`POduHQO$+J+{rsI~Rk=Ik@ zgN$yjX_*`)P3e-BeY~PQao!3UTIPt;gpEPU)PuqyX-`|jEHGH#T2=CswO|6Viy65L zzCT?kn_1nC*?i_`OwJ3gka-suoR=pT2yZUAAFN-lCJ1D#dzNx8owN5g-`ofM)<_vQ zB2S&K`*8CHgd!&pkrz-lPtbS_f9=}(6F&>=@N9>Nr=Mp7T`TB?YB{^(ID1HEZfXo) z?ko~LMn@!ejGmg?Ub+JpYt3y72GPnr)keqcJ;!~RIY_Kckw^u-#~6tGf`K0>u+hnd z4|KvuVq9`HI%ePVC2^#|rGVnnbAF7nZj5MlRm5B6gT14uBDB#GapMi)G<;1>!;UZU?`DE5UQ zIfxF_39GJDl|Wx0uo>m0;{>-VxVup!%+B;Ga~-DP9t_7^5+pfjk|~6qW9lNaQ5G#s z18yS6OcEt|^~zvB@?!HTTLg&l+{a^{vR!_re_56i>}(>lgZ2N$#t6KKK> z0=bF1{Bwxo7G`l93w$l(9{1ZMHZWyT+yT#PbSnrbm?yolmvFTbIrkKuO8npQSN6iR z)9J}5TWP~#%1Ps_JA$?Dh_XAjD)@5a==ASs4Wr$;v&1;ZV$5UQLbXVYOBSAHxL%=8 RacVu_%w~>|4y-)${{adq(Ch#J literal 4450 zcmcIn+fy6&89j?GD~rX(#)8NgoM4PC0VZ}5f)O#caUA1-s4aqvo!DNa1=a`&ODkfW zOK)kCw(0$rbfzzz>G0Brwo}V#JmcweU;792CDWO{_NkL;LeICmpas?)CNrI}_wv(s zIp@3W$6vqrkpna4a#U zBBG$l7OGfgzVB?Qq_2#bWh)95fnBJFrlLW^ZtPL8>%3W_iDGF*L1@;@8)XHtF(2iW zDDKs;Pqfr>Wrm7nIoq!xhGw4S%u-rkG!*P}^lgM0t7I1DY~?33#6_@SNiP`%i~1ri zpjtH?L>p=7x!l=&UP1hr2f|1(pC?4KSV$$VMd|U7h9~iqBTg#>?23CmCZ&*Ci|zT4=%_fW;T%SYi*er)MW?dtfDhnB z4HxhdnJkO9iCGE9s2dL(vkNXIKt?rO!pp3{Im5bQWGkhzxol*ddQs4_&UJHX+M0nV z(wI>36>)cY6Z><;V&2dT;`o}^v3qW-XEaRW6$Mc`c8g2F=GeN`7{yh5RmHT1Yq-9t zp&S9WMYgyoWja~h5*OD(f_0L{YZ`7y+O-)6o}CO8w@9;=I7j1L#mwgHH`hqc1EM#@-s%g#hsch*5i>=w^lU;8-TzKN}&NxbmP;jJ}qv1VcX2D2T7H5poq&}19$&e2hk0Un>elAjpDFv6m zw7NeXu{pRSo7cCa6y=7DrDqq$^(C91iZ>WKHKxYG0zMQ|PYy zlF2GM?xTx%yMD(5ry%9;2cVl7>fsajVOQV|oT!&o~PxI{rGjo!jpTSW)ix=@6GuDqW zJa3bZA^16>ii*C^aPU8pJ$WEVZuu_M6Lu>DF#-Az_0!#aXnKGbsyO4RU59B3`?(-1 z_!?fOZ|MoY05$%eKX?N)Ot@#<^8UK*{Tr^jc$bddk@xfTe!(^KO`7=@-r;o}g=C^Z z0@?a8&ijEM<+Qj&1+KELS{v_@-H=eOftJ|>7LOw9whMHHcgg4}cSMbO3Sv`!N!GGlUuLng!WnPlo-ValfLr0quC=XgSOv(@g2+qdy9K?&hM z(v}RZY020FjEx6A#&}v%$TE^C;8t5go}6-%_NwAacNJ5=!tQuzJSZxw2(PaFO|+-e zRlNEUB1uZL_tfAX=fnrs`3SC~0k5*sU*nd211YYtXK;&CVuo4Cl1z@v|Ex`cGwusC z+pU&n&GmeSIvM-i%U%3cH=M>p+$4T|OcLkqfcEt;4x}ZFGoQc!sxTSLzq>RyT53bK z-j==Ml_iB)i+4>OnUn2frRXP-; 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