From a71c48c5b543356ec20ceb8ce8ec34f205f3db41 Mon Sep 17 00:00:00 2001 From: Gheiserton Date: Thu, 8 Dec 2022 00:51:00 -0500 Subject: [PATCH] more day 7 WIP. Classes work, just need to figure out how to extract the recurdive sums of files per directory. --- 2022/day07/Day07A.class | Bin 0 -> 2006 bytes 2022/day07/Day07A.java | 45 +++++++++++++++- 2022/day07/Directory.class | Bin 0 -> 4450 bytes 2022/day07/Directory.java | 102 ++++++++++++++++++++++++++++++++----- 4 files changed, 134 insertions(+), 13 deletions(-) create mode 100644 2022/day07/Day07A.class create mode 100644 2022/day07/Directory.class diff --git a/2022/day07/Day07A.class b/2022/day07/Day07A.class new file mode 100644 index 0000000000000000000000000000000000000000..64bd59b624a8ec0268075fb2330d7bb64377e656 GIT binary patch literal 2006 zcmZ`)+fy4=9R5zS$%f@{X(%nhQc7ECQf@6ORYDPaQ!1A#luE1BCD|rha@i&u3RP=6 zKKM7lIOB^mbjBC^5;`(oUiHB@{{Uxv_ra$=Sp3cgFw_W>J$ugY_xrxz_3SUtzWV{d zSv)Y{gI|Xx5kOF&`L?-a4rI(+YG8Wdwv})Nf+Kd$c1H#L(b$}hkU*2CRC4Xiz>I4q z77geMqh4TNl_X*2a#kUP27x*|=ak%jciGj^w1;HIE!eq~fqe+;Xpz{DR)H1|C1>Xc zZrK@Y;EL&{i=+DQlUm4E?&29G2+B5rI&S#}jtW64)Qz=JJxZ?NJCv1;h~pjW{mxBDw_vMJHnu z>O_qIVl^UAwo!=~PLhs}q|fJ*q@yR}A@mCP5=o`fFEM~qtde!7WM-JA)@uAp4db!v zAq>(aQw-r{uKoSWbV%Y1US)L>`K)6Wtl9i?*4x3v##MobCE^&N15Vy~KI&~6r8X+@ zy2@R^$~x|fjyH&Z!7i|q@`V)xV>qu0aG`b{YSfVh(Q!%QO}r(bIi+G+pu1LxRkl^` zT$XrSd968?#XcRwq{I}a1!OkA#E54~3-nH)vl?A^e@B$6)kQR ztSPa81pAY)mpCB|FFIanT}$GYn&UtslP_92n61h*d2qAoLjJC~kg*J;a9dG#0( z%#<9bU=@p2QlPCm6}uL3HT$_8G>+!@^u^_b<+ye}XCMnl;*KJ2ayZbgcP-2o%mkTq z6eV2M##+(7N1v9MkPGI@sWa>itdyye3_(8ca@WCCa1ET?fOyOofn`3G zSUu~of_r?Ys_%2|bt*jEgg(E4x`|B~^I_@#9*s}XynzFg{?Q;e!&+|{ku~TYtD?JO z4UOD(guBW(HmvzaBbqii9PkYVBY`qbd_$HY{^*)CxkiA7FSy1cfpAY5eXBU&9}2Fc znfue;KBx@^TZ78(=ZYPlo}K5h8PNiR;g`yIWexQNcg3u!rLDpD?CQ%b2K~E>`*68@^J;yKA_r!dk^tMDq`ZuX+^wcWpJ=6785Lq(1rS z_R(FrfA9%zl<`p&?)ugvZFK$FZ#+t_qjjpX)(>la5v>fn@5gn7CV7}ANJ0C0C!Vdp z9>b4_m=<$LiEHA9xXA_&iL_W`Yx=zM-RI2>g!o^_lp37jdUk+BFB)))w_zO3{2uPZ zmuSHweuutAD_B7MiZ=X?cKpG<_!Eb*g-%h=Z@?jRi72o69vl}Vyx=b*Dkj+F)4ZJL zP$$w{9rTH1^os{LjgQGbi?%J226TL)L)T#lz5zz#--zmH6iu?drK8p8ZES9M3h@-a fOFB|p>@aQDf(M{gN~gj(9a*i3MZQmLA3pmB2Xw<< literal 0 HcmV?d00001 diff --git a/2022/day07/Day07A.java b/2022/day07/Day07A.java index c554153..3d32960 100644 --- a/2022/day07/Day07A.java +++ b/2022/day07/Day07A.java @@ -1,7 +1,50 @@ import java.nio.file.Paths; import java.util.Scanner; import java.io.IOException; +import java.util.Stack; public class Day07A { - + public static void main(String[] args) { + Stack breadCrumbs = new Stack(); + try (Scanner inputFile = new Scanner(Paths.get("input.txt"))) { + boolean passingBack = false; + String[] command = new String[3]; + while (inputFile.hasNext() || passingBack) { + if (!passingBack) { + command = inputFile.nextLine().split(" "); + } + passingBack = false; + switch (command[1]) { + case "cd": { + if (command[2].compareTo("..") == 0) { + breadCrumbs.pop(); + } else if (breadCrumbs.empty()) { + breadCrumbs.push(new Directory(command[2], command[2])); + } else { + breadCrumbs.push(breadCrumbs.peek().moveToSubDir(command[2])); + } + break; + } + case "ls": { + command = inputFile.nextLine().split(" "); + while (!inputFile.hasNext("$") && inputFile.hasNext()) { + if (command[0].compareTo("dir") == 0) { + breadCrumbs.peek().addDir(command[1]); + } else if (command[0].compareTo("$") == 0) { + break; + } else{ + breadCrumbs.peek().addFile(Integer.parseInt(command[0])); + } + command = inputFile.nextLine().split(" "); + } + passingBack = true; + } + } + } + } catch (IOException e) {e.printStackTrace();} + while (breadCrumbs.size() > 1) { + breadCrumbs.pop(); + } + + } } diff --git a/2022/day07/Directory.class b/2022/day07/Directory.class new file mode 100644 index 0000000000000000000000000000000000000000..3252fb03dd0ac6c763f7859710c01ab98579eb5d GIT binary patch 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-; literal 0 HcmV?d00001 diff --git a/2022/day07/Directory.java b/2022/day07/Directory.java index 06de422..c649688 100644 --- a/2022/day07/Directory.java +++ b/2022/day07/Directory.java @@ -3,25 +3,51 @@ import java.util.ArrayList; public class Directory { private String dirName; private String parentDirName; - private ArrayList files; - private ArrayList subDirs; + private ArrayList files = new ArrayList(); + private ArrayList subDirs = new ArrayList(); + private int dirSize; + public Directory() { + + } + public Directory(String name, String parent) { this.dirName = name; this.parentDirName = parent; } - /*public Directory (String name, String parent, int[] filesList, String[] dirsList){ + public Directory (String name, String parent, ArrayList filesList){ this.dirName = name; this.parentDirName = parent; - files.add(filesList); - subDirs.add(); - } this is a really bad idea we'll leave it for later*/ + 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; + } + + private int calcDirSize() { int size = 0; for (Directory dir : this.subDirs) { - size += dir.getDirSize(); + size += dir.calcDirSize(); } for (int i : this.files) { size += i; @@ -33,19 +59,71 @@ public class Directory { this.subDirs.add(new Directory(s, this.dirName)); } - public void addFile(int i) { - this.files.add(i); + public ArrayList getSubsOfCurrentDir() { + this.dirSize = this.calcDirSize(); + return this.subDirs; } - public String getParentDir() { - return this.parentDirName; + public void addDir(String s, ArrayList i) { + this.subDirs.add(new Directory(s, this.dirName)); + + } + + public void addFile(int i) { + this.files.add(i); } public String getDirName() { return this.dirName; } - public ArrayList<> getAllSubDirs() { + 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; + for (Directory d : subDirs) { + if (d.getDirName().compareTo(s) == 0) { + retDir = d; + foundFlag = true; + break; + } + } + if (foundFlag = false) { + this.addDir(s); + } + return retDir; + } + + public String toString() { + StringBuilder s = new StringBuilder(); + for (Integer i : files) { + s.append(i.toString()+"\n"); + } + for (Directory d : subDirs) { + s.append(d.getDirName()+"\n"); + } + 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(); } } \ No newline at end of file