diff --git a/Cargo.toml b/Cargo.toml index f587e00..551c369 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,6 +34,10 @@ path="src/day05/solve.rs" name="day06" path="src/day06/solve.rs" +[[bin]] +name="day07" +path="src/day07/solve.rs" + [dependencies] regex="1" once_cell = "1.16.0" diff --git a/src/day07/fileTree.rs b/src/day07/fileTree.rs new file mode 100644 index 0000000..57c81e9 --- /dev/null +++ b/src/day07/fileTree.rs @@ -0,0 +1,21 @@ +use std::{rc::{Weak, Rc}, cell::RefCell}; + +#[derive(Debug)] +pub struct Dir { + parent: Option>>, + name: String, + children: Vec>> +} + +#[derive(Debug)] +pub struct File{ + dir: Weak>, + size: usize, + name: String +} + +#[derive(Debug)] +pub enum FileOrDir{ + File(File), + Dir(Dir), +} diff --git a/src/day07/input.txt b/src/day07/input.txt index e69de29..a8fc774 100644 --- a/src/day07/input.txt +++ b/src/day07/input.txt @@ -0,0 +1,1031 @@ +$ cd / +$ ls +dir bhtvbj +dir bmlllrl +dir dhm +dir mnp +dir nwqgchw +$ cd bhtvbj +$ ls +dir dmd +dir fjblqtdp +25595 mdmtpjq.wmf +dir qhm +dir rjr +dir smtrp +dir tbdsml +$ cd dmd +$ ls +232616 ngmqbc.mdj +75367 vqqcvgts.vrc +$ cd .. +$ cd fjblqtdp +$ ls +dir czvcf +dir jnzwf +245590 lcpgtrc.dqm +141631 nwqgchw +37152 nwqgchw.ppg +80432 rbj.twt +$ cd czvcf +$ ls +dir cqzcp +dir czvcf +$ cd cqzcp +$ ls +dir bshmsns +55418 svhphd +232179 vqqcvgts.vrc +$ cd bshmsns +$ ls +243135 rbhprlgq.gbh +$ cd .. +$ cd .. +$ cd czvcf +$ ls +158882 lhfsc.lrh +266626 ntsrpn +$ cd .. +$ cd .. +$ cd jnzwf +$ ls +108142 btmz +$ cd .. +$ cd .. +$ cd qhm +$ ls +162986 bnqbdmm.dfh +dir hqbhr +201987 hwvdlfl +dir lvdrr +143900 nwcjvb +dir rgtcchh +297583 wdcsgg.cjt +$ cd hqbhr +$ ls +175196 btmz +dir fcm +221851 ngmqbc +dir qnlssvn +263872 rdzsz.grd +dir vvbgt +dir wwzwqqh +$ cd fcm +$ ls +66471 sfddtgp.flr +$ cd .. +$ cd qnlssvn +$ ls +dir czvcf +dir gngvc +75812 lbthznl.llq +182104 nwqgchw.nlq +161446 rrvwdw.nzv +dir rzssqpcj +260877 wdcsgg.cjt +$ cd czvcf +$ ls +202850 vqqcvgts.vrc +$ cd .. +$ cd gngvc +$ ls +154834 rdzsz.hst +$ cd .. +$ cd rzssqpcj +$ ls +66116 bdzdp +$ cd .. +$ cd .. +$ cd vvbgt +$ ls +288775 cpsmvwq +dir fbfddwqz +81857 jcpj.wpf +dir nwjps +49905 tlrlbg.mgz +64870 wdcsgg.cjt +131013 zbc.rhl +$ cd fbfddwqz +$ ls +100619 wdcsgg.cjt +$ cd .. +$ cd nwjps +$ ls +96526 cjrvb.tdv +$ cd .. +$ cd .. +$ cd wwzwqqh +$ ls +dir czvcf +$ cd czvcf +$ ls +256121 nrjfpjc.wcg +$ cd .. +$ cd .. +$ cd .. +$ cd lvdrr +$ ls +27488 lhfsc.lrh +$ cd .. +$ cd rgtcchh +$ ls +19285 bfdfz.rln +166070 btmz +222301 vqqcvgts.vrc +$ cd .. +$ cd .. +$ cd rjr +$ ls +dir dbb +121292 drv.ljf +dir ntbbd +228025 rphtjh.ngl +133033 wrlwdgz +$ cd dbb +$ ls +158756 btmz +130326 czvcf.trn +dir fdgh +dir grr +20181 wdcsgg.cjt +$ cd fdgh +$ ls +24629 rph.rsl +299233 wdcsgg.cjt +$ cd .. +$ cd grr +$ ls +259732 tqvvp +$ cd .. +$ cd .. +$ cd ntbbd +$ ls +dir cwwhvghw +dir hggcq +169994 jrvt.srj +dir jtzbw +dir ptr +215668 smcngpwr +dir tfshcbw +$ cd cwwhvghw +$ ls +dir czvcf +167719 dzltv +dir mdgqwdjq +265831 pcfcw.jrd +86965 qsdv +71709 tdbtjwzp.msg +dir vtbr +$ cd czvcf +$ ls +dir ntj +dir nwqgchw +dir rdzsz +202867 vqqcvgts.vrc +$ cd ntj +$ ls +214072 ntplhvnn.zpt +$ cd .. +$ cd nwqgchw +$ ls +228489 qfphslzt +15383 zfpdpds.bjt +$ cd .. +$ cd rdzsz +$ ls +dir jrvt +6415 jrvt.vjt +290773 mhfwsc.nlr +82027 wdcsgg.cjt +$ cd jrvt +$ ls +85079 mnq.jvr +$ cd .. +$ cd .. +$ cd .. +$ cd mdgqwdjq +$ ls +223814 phghj +172175 wwpvcb +$ cd .. +$ cd vtbr +$ ls +134023 frwc.dhg +26692 fvgscmns.mpj +148404 wnlgfmdr.dch +$ cd .. +$ cd .. +$ cd hggcq +$ ls +19064 btmz +200043 lswzn +dir mlrj +49427 rcwmzz.nsn +dir wjznmcw +$ cd mlrj +$ ls +10869 czvcf.fvc +277796 gprlsg.tbt +$ cd .. +$ cd wjznmcw +$ ls +43168 bzwn +dir dznz +4102 lcpgtrc.dqm +dir ltcpgcdf +228100 nwqgchw.mgc +dir tbdqsnb +dir tmzswrgt +19984 whgmsm.bjj +$ cd dznz +$ ls +59403 msqdt.mlm +$ cd .. +$ cd ltcpgcdf +$ ls +dir czvcf +10727 jgphjm.pdw +309167 nwqgchw +dir pwbt +dir qznbn +203154 ztpcdmb.rrs +$ cd czvcf +$ ls +173609 pntjz.vzq +292292 trvbpz.djc +111008 wdcsgg.cjt +107437 wjvv.hsj +265353 wsbff.pzh +$ cd .. +$ cd pwbt +$ ls +307172 jtdtlbsh +dir lgz +$ cd lgz +$ ls +dir fnlsq +$ cd fnlsq +$ ls +161356 jrvt.ljb +$ cd .. +$ cd .. +$ cd .. +$ cd qznbn +$ ls +12354 bdgvj +59582 cslzb.qnq +dir czvcf +dir psnpf +136432 vlsswwgv +99861 vqqcvgts.vrc +39898 wzllwpmr.mqc +$ cd czvcf +$ ls +dir dqnpjjrv +13244 ztcpzzr +$ cd dqnpjjrv +$ ls +233675 ngmqbc.srp +$ cd .. +$ cd .. +$ cd psnpf +$ ls +1986 lhfsc.lrh +$ cd .. +$ cd .. +$ cd .. +$ cd tbdqsnb +$ ls +170099 hbcnv.gmj +$ cd .. +$ cd tmzswrgt +$ ls +118969 btmz +dir czvcf +51649 hbb.jcb +$ cd czvcf +$ ls +163330 hhcf +159514 wdhw +22876 wtn.pnb +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd jtzbw +$ ls +55634 rdzsz.dgf +$ cd .. +$ cd ptr +$ ls +49447 wdcsgg.cjt +$ cd .. +$ cd tfshcbw +$ ls +193480 btmz +44402 sjsgfmts.dtc +115952 vqncb.ssf +$ cd .. +$ cd .. +$ cd .. +$ cd smtrp +$ ls +dir hlpzdbwp +307696 jrvt.hds +300691 lcpgtrc.dqm +dir nflt +dir qcph +dir qlrdf +$ cd hlpzdbwp +$ ls +dir czvcf +dir frzvnrb +dir jrvt +$ cd czvcf +$ ls +155141 lcpgtrc.dqm +$ cd .. +$ cd frzvnrb +$ ls +71241 btmz +dir rdzsz +dir vdb +$ cd rdzsz +$ ls +35362 jngsmcrm.pwt +$ cd .. +$ cd vdb +$ ls +239928 jrvt.nbf +16883 ngmqbc +$ cd .. +$ cd .. +$ cd jrvt +$ ls +dir lcchtcz +$ cd lcchtcz +$ ls +199091 qzsh.fst +$ cd .. +$ cd .. +$ cd .. +$ cd nflt +$ ls +219987 nwqgchw.qpf +dir rdzsz +257069 wdcsgg.cjt +$ cd rdzsz +$ ls +dir zmgf +$ cd zmgf +$ ls +dir vwcvbff +$ cd vwcvbff +$ ls +157598 qsp +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd qcph +$ ls +158708 cdj.bch +dir drdpdzj +dir jrvt +109459 lhfsc.lrh +dir ngmqbc +164488 rtnvpg +23729 vqqcvgts.vrc +115775 wdcsgg.cjt +$ cd drdpdzj +$ ls +dir ngwcr +dir pwffm +dir vcclwq +$ cd ngwcr +$ ls +76003 rqjbn +84407 vqqcvgts.vrc +$ cd .. +$ cd pwffm +$ ls +284565 rzdjrmn.jdz +$ cd .. +$ cd vcclwq +$ ls +137044 czvcf.qll +3433 nwqgchw +18027 vqqcvgts.vrc +$ cd .. +$ cd .. +$ cd jrvt +$ ls +57605 vljs +$ cd .. +$ cd ngmqbc +$ ls +217554 btmz +96485 lhfsc.lrh +dir lpcr +dir sltwgmjv +dir snll +dir tsq +218323 vqqcvgts.vrc +150009 wdcsgg.cjt +$ cd lpcr +$ ls +227650 qhfz.grc +$ cd .. +$ cd sltwgmjv +$ ls +39536 fncjl.vlr +248067 lcpgtrc.dqm +$ cd .. +$ cd snll +$ ls +70368 btmz +195228 svmdc.pcv +$ cd .. +$ cd tsq +$ ls +271904 vqqcvgts.vrc +104043 wbgwpcl +$ cd .. +$ cd .. +$ cd .. +$ cd qlrdf +$ ls +dir dqgln +dir ngmqbc +dir ntngh +$ cd dqgln +$ ls +dir qdrszjvm +$ cd qdrszjvm +$ ls +199245 lcpgtrc.dqm +$ cd .. +$ cd .. +$ cd ngmqbc +$ ls +171851 czvcf.jft +dir ngmqbc +dir qdffn +$ cd ngmqbc +$ ls +14596 jjhmhzs.dww +$ cd .. +$ cd qdffn +$ ls +dir czvcf +$ cd czvcf +$ ls +130227 jhqhd.fdz +$ cd .. +$ cd .. +$ cd .. +$ cd ntngh +$ ls +243908 bqjfjnl.pcl +112351 btmz +30167 lcpgtrc.dqm +249181 mfwcvc.zdg +dir qlhw +157482 vqqcvgts.vrc +$ cd qlhw +$ ls +267233 gfhthp.prr +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd tbdsml +$ ls +44152 btmz +143454 cpzlrsh +47848 crdvhbt.dfr +dir gvjhlqdd +171842 mgljcrw.trm +dir nqsq +dir rdzsz +$ cd gvjhlqdd +$ ls +177040 ffbm +$ cd .. +$ cd nqsq +$ ls +dir fchtl +dir jrvt +dir nsgbjwbt +dir qcz +dir vqlnqvwn +55184 wlspgz +dir wzm +dir zpw +$ cd fchtl +$ ls +193793 btmz +164089 jrvt.hzn +53839 lpv.gtg +dir qmfwds +dir sqznc +dir tdqg +dir zvd +$ cd qmfwds +$ ls +dir dqtbp +236341 lcpgtrc.dqm +101548 rdzsz.vqr +180341 wzpdq.gjr +$ cd dqtbp +$ ls +56177 hdgnthn.dff +56834 jrvt.nmg +$ cd .. +$ cd .. +$ cd sqznc +$ ls +282988 dpdfvn.spw +248737 tzfd.pfd +$ cd .. +$ cd tdqg +$ ls +251266 rdzsz.dhb +$ cd .. +$ cd zvd +$ ls +124979 ngmqbc +$ cd .. +$ cd .. +$ cd jrvt +$ ls +206684 dbbppj.sds +189832 jvst.fzr +$ cd .. +$ cd nsgbjwbt +$ ls +32810 btmz +$ cd .. +$ cd qcz +$ ls +dir bjbsl +dir brvgznjr +98771 btmz +dir gbfhz +dir ngmqbc +88248 rccpzctp.gwn +dir rdzsz +39060 tqswrdh.wfc +dir ztnv +$ cd bjbsl +$ ls +1312 rdzsz.qtl +$ cd .. +$ cd brvgznjr +$ ls +98988 lhfsc.lrh +$ cd .. +$ cd gbfhz +$ ls +96203 hgldz +28558 nwqgchw +dir qrzd +240140 wjww.hjf +$ cd qrzd +$ ls +231108 hjfcwvtq +$ cd .. +$ cd .. +$ cd ngmqbc +$ ls +dir cpjvd +dir vrbfcwc +$ cd cpjvd +$ ls +142549 btmz +dir ngmqbc +$ cd ngmqbc +$ ls +62008 vqqcvgts.vrc +$ cd .. +$ cd .. +$ cd vrbfcwc +$ ls +dir czj +$ cd czj +$ ls +48640 btmz +$ cd .. +$ cd .. +$ cd .. +$ cd rdzsz +$ ls +dir czvcf +dir fmgmgmp +dir jrvt +308389 lhfsc.lrh +dir nfdh +dir ptgsd +dir qmg +244691 vqqcvgts.vrc +$ cd czvcf +$ ls +dir fqjrb +dir jbtgpl +dir jstzjf +299095 lcpgtrc.dqm +122426 lhfsc.lrh +dir wczwphjh +219013 wdcsgg.cjt +$ cd fqjrb +$ ls +dir fpspthg +dir hdmtsv +118041 mwlsw.fvs +dir rdzsz +99976 wdcsgg.cjt +$ cd fpspthg +$ ls +280707 hmwsq +$ cd .. +$ cd hdmtsv +$ ls +102842 btmz +72949 fpzqpqb.zjp +$ cd .. +$ cd rdzsz +$ ls +36159 sjtwbsvc +$ cd .. +$ cd .. +$ cd jbtgpl +$ ls +139817 lhfsc.lrh +139333 nwqgchw.wrz +$ cd .. +$ cd jstzjf +$ ls +dir gngbnq +54929 lcpgtrc.dqm +dir pdbdwmc +$ cd gngbnq +$ ls +dir bfvsz +dir pndfrjhz +$ cd bfvsz +$ ls +283370 mdf.wvc +$ cd .. +$ cd pndfrjhz +$ ls +252824 lhfsc.lrh +$ cd .. +$ cd .. +$ cd pdbdwmc +$ ls +dir nwqgchw +dir sdmfntl +266823 vqqcvgts.vrc +$ cd nwqgchw +$ ls +dir bnfhbvmr +$ cd bnfhbvmr +$ ls +62602 lrmmtjmv +$ cd .. +$ cd .. +$ cd sdmfntl +$ ls +93365 njfgsgm.jtv +$ cd .. +$ cd .. +$ cd .. +$ cd wczwphjh +$ ls +164840 lcpgtrc.dqm +$ cd .. +$ cd .. +$ cd fmgmgmp +$ ls +292610 jglzqc.mss +dir rdzsz +dir rrrjw +$ cd rdzsz +$ ls +295660 lcpgtrc.dqm +$ cd .. +$ cd rrrjw +$ ls +dir lsc +$ cd lsc +$ ls +280045 dljtrq.tll +dir nwqgchw +$ cd nwqgchw +$ ls +162525 lhfsc.lrh +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd jrvt +$ ls +227518 pcsqv +$ cd .. +$ cd nfdh +$ ls +304769 ngmqbc.qhd +$ cd .. +$ cd ptgsd +$ ls +281593 cpfzhhd +123541 hhlhssqb.szt +250182 lcpgtrc.dqm +dir ngmqbc +229226 pppmnp +dir wntfhzqf +dir zchjnbz +$ cd ngmqbc +$ ls +202162 vqqcvgts.vrc +$ cd .. +$ cd wntfhzqf +$ ls +dir czvcf +dir rdzsz +dir wvhznt +$ cd czvcf +$ ls +250212 bzwsvd.lhc +$ cd .. +$ cd rdzsz +$ ls +244145 ngmqbc.lfb +236278 plnjrm.rgs +$ cd .. +$ cd wvhznt +$ ls +264719 czvcf.cgn +$ cd .. +$ cd .. +$ cd zchjnbz +$ ls +dir jrvt +dir msrs +dir vtrcs +$ cd jrvt +$ ls +154825 jrvt +44966 rdzsz +198819 vnnrqcbr.fjf +$ cd .. +$ cd msrs +$ ls +188969 cwbq.ltd +$ cd .. +$ cd vtrcs +$ ls +2014 jmvvq.pvn +$ cd .. +$ cd .. +$ cd .. +$ cd qmg +$ ls +dir dqfs +dir hwnbws +dir ngmqbc +$ cd dqfs +$ ls +130929 smwcjg.vjm +$ cd .. +$ cd hwnbws +$ ls +dir vsq +$ cd vsq +$ ls +196984 twlvvd.qlc +$ cd .. +$ cd .. +$ cd ngmqbc +$ ls +212410 cdzjjw +$ cd .. +$ cd .. +$ cd .. +$ cd ztnv +$ ls +167568 pwrsss +64234 rlprpl +$ cd .. +$ cd .. +$ cd vqlnqvwn +$ ls +19448 lcpgtrc.dqm +$ cd .. +$ cd wzm +$ ls +123271 lhfsc.lrh +dir ngmqbc +dir qvvvdl +$ cd ngmqbc +$ ls +dir bdjfhmvz +101745 cqg +dir ngmqbc +119605 ngmqbc.lnd +dir tnfr +dir wfzct +$ cd bdjfhmvz +$ ls +104287 jrvt.nnj +$ cd .. +$ cd ngmqbc +$ ls +88793 nwqgchw +$ cd .. +$ cd tnfr +$ ls +dir nggnpj +161400 vqqcvgts.vrc +$ cd nggnpj +$ ls +308915 btmz +81154 jjtwrbtw.bln +50902 sfppg.hvn +dir tpg +$ cd tpg +$ ls +143630 vqqcvgts.vrc +$ cd .. +$ cd .. +$ cd .. +$ cd wfzct +$ ls +71154 bzhzl.zcg +$ cd .. +$ cd .. +$ cd qvvvdl +$ ls +185898 nwqgchw.tvr +$ cd .. +$ cd .. +$ cd zpw +$ ls +167347 bcfj.lch +dir fldmgj +dir jspslmwp +199949 rdsz.dng +$ cd fldmgj +$ ls +154330 sbftm.wmt +$ cd .. +$ cd jspslmwp +$ ls +75378 jrvt.jdw +26174 mzthsl.qtv +214743 njjdqsr +29213 tsdnqwj +$ cd .. +$ cd .. +$ cd .. +$ cd rdzsz +$ ls +263486 cfjb.mfc +77949 fjnfp.lcl +262618 lcpgtrc.dqm +124555 lhfsc.lrh +dir pngmr +$ cd pngmr +$ ls +305791 fdvbthn.cvs +32332 rdjvldmt.lfw +dir rwwqsl +dir rzgv +$ cd rwwqsl +$ ls +158602 bmqnqtz +dir cvphd +dir hpb +$ cd cvphd +$ ls +119828 hfhvv.ffp +dir qbvcjq +257077 wdcsgg.cjt +$ cd qbvcjq +$ ls +dir nwqgchw +$ cd nwqgchw +$ ls +127576 lcpgtrc.dqm +$ cd .. +$ cd .. +$ cd .. +$ cd hpb +$ ls +176379 nwqgchw +166831 qhdgmsvv.bdr +$ cd .. +$ cd .. +$ cd rzgv +$ ls +56544 pngtztnf.gdt +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd bmlllrl +$ ls +270146 chqqnfpn.dfs +dir ngmqbc +dir rdzsz +70712 vqqcvgts.vrc +$ cd ngmqbc +$ ls +dir rgcrvvgj +301804 vqqcvgts.vrc +$ cd rgcrvvgj +$ ls +219577 jwrlwq +$ cd .. +$ cd .. +$ cd rdzsz +$ ls +290477 nwqgchw.rng +$ cd .. +$ cd .. +$ cd dhm +$ ls +127736 npznvgqn.bdd +59221 smmlzfj.lhh +22345 zhfpvppf.gtn +$ cd .. +$ cd mnp +$ ls +dir gdntwv +dir qlsfmcqp +dir schlsbb +$ cd gdntwv +$ ls +133571 btmz +$ cd .. +$ cd qlsfmcqp +$ ls +244176 bffzdczp.gqf +12060 cqlvm.wdd +dir jnl +14040 ldczcfl +dir nwqgchw +243637 sphmmcv +290808 wdcsgg.cjt +$ cd jnl +$ ls +252674 lcpgtrc.dqm +$ cd .. +$ cd nwqgchw +$ ls +258944 btmz +$ cd .. +$ cd .. +$ cd schlsbb +$ ls +dir fpbrwnz +dir hnrh +101456 rtqfwbl +$ cd fpbrwnz +$ ls +232867 btmz +150179 cmq.tgm +249603 jztmgg.dlb +dir mqhz +62465 wdcsgg.cjt +$ cd mqhz +$ ls +232359 rdzsz.lhj +25201 vpjbmjd.zvt +277414 vqqcvgts.vrc +$ cd .. +$ cd .. +$ cd hnrh +$ ls +dir dmghrm +290254 lcpgtrc.dqm +dir tbbp +104510 vqqcvgts.vrc +$ cd dmghrm +$ ls +16799 vqqcvgts.vrc +$ cd .. +$ cd tbbp +$ ls +14688 jrvt +45492 wdcsgg.cjt +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd nwqgchw +$ ls +21374 lhfsc.lrh +121726 wdcsgg.cjt + diff --git a/src/day07/parser.rs b/src/day07/parser.rs new file mode 100644 index 0000000..54c7d96 --- /dev/null +++ b/src/day07/parser.rs @@ -0,0 +1,155 @@ +use crate::fileTree::*; +use once_cell::sync::Lazy; +use regex::Regex; + +#[derive(Debug, PartialEq, Eq)] +pub enum Command { + CdRoot, + CdUp, + Cd(String), + Ls(Vec), +} +#[derive(Debug, PartialEq, Eq)] +pub enum LsEntry { + Dir(String), + File(ParseFile), +} + +#[derive(Debug, PartialEq, Eq)] +pub struct ParseFile { + size: usize, + name: String, +} +pub fn parse(input: &str) -> Dir { + unimplemented!() +} + +pub fn parse_to_tree(input: Vec) -> Dir { + unimplemented!() +} + +//parses a single line +pub fn parse_to_commands(input: &str) -> Vec { + static PARSE_COMMAND_REGEX: Lazy = Lazy::new(|| Regex::new(r"^$").unwrap()); + unimplemented!() +} + +#[cfg(test)] +mod tests { + use super::*; + + /* #[test] + fn test_parse() { + let input = "$ cd / +$ ls +dir a +14848514 b.txt +8504156 c.dat +dir d +$ cd a +$ ls +dir e +29116 f +2557 g +62596 h.lst +$ cd e +$ ls +584 i +$ cd .. +$ cd .. +$ cd d +$ ls +4060174 j +8033020 d.log +5626152 d.ext +7214296 k"; + assert_eq!(parse(input), 0); + } */ + + #[test] + fn test_parse_to_commands() { + let input = "$ cd / +$ ls +dir a +14848514 b.txt +8504156 c.dat +dir d +$ cd a +$ ls +dir e +29116 f +2557 g +62596 h.lst +$ cd e +$ ls +584 i +$ cd .. +$ cd .. +$ cd d +$ ls +4060174 j +8033020 d.log +5626152 d.ext +7214296 k"; + assert_eq!( + parse_to_commands(input), + vec![ + Command::CdRoot, + Command::Ls(vec![ + LsEntry::Dir(String::from("a")), + LsEntry::File(ParseFile { + size: 14848514, + name: String::from("b.txt") + }), + LsEntry::File(ParseFile { + size: 8504156, + name: String::from("c.dat") + }), + LsEntry::Dir(String::from("d")) + ]), + Command::Cd(String::from("a")), + Command::Ls(vec![ + LsEntry::Dir(String::from("e")), + LsEntry::File(ParseFile { + size: 29116, + name: String::from("f") + }), + LsEntry::File(ParseFile { + size: 2557, + name: String::from("g") + }), + LsEntry::File(ParseFile { + size: 62596, + name: String::from("h.lst") + }), + ]), + Command::Cd(String::from("e")), + Command::Ls(vec![LsEntry::File(ParseFile { + size: 484, + name: String::from("i") + }),]), + Command::CdUp, + Command::CdUp, + Command::Cd(String::from("d")), + Command::Ls(vec![ + LsEntry::File(ParseFile { + size: 4060174, + name: String::from("j") + }), + LsEntry::File(ParseFile { + size: 8033020, + name: String::from("d.log") + }), + LsEntry::File(ParseFile { + size: 5626152, + name: String::from("d.ext") + }), + LsEntry::File(ParseFile { + size: 7214296, + name: String::from("k") + }), + ]), + ] + ) + } +} diff --git a/src/day07/part1.rs b/src/day07/part1.rs index 4074daf..147423b 100644 --- a/src/day07/part1.rs +++ b/src/day07/part1.rs @@ -1,4 +1,5 @@ -use crate::utilities::*; +use crate::fileTree::*; +use crate::parser::*; pub fn part1() -> usize { unimplemented!() diff --git a/src/day07/part2.rs b/src/day07/part2.rs index 246b113..82d67bd 100644 --- a/src/day07/part2.rs +++ b/src/day07/part2.rs @@ -1,4 +1,5 @@ -use crate::utilities::*; +use crate::fileTree::*; +use crate::parser::*; pub fn part2() -> usize { unimplemented!() diff --git a/src/day07/solve.rs b/src/day07/solve.rs index c613d23..d090dcf 100644 --- a/src/day07/solve.rs +++ b/src/day07/solve.rs @@ -1,10 +1,11 @@ mod part1; mod part2; -mod utilities; +mod parser; +mod fileTree; fn main() { let _input = include_str!("./input.txt"); - let _structured_input = utilities::parse(_input); + let _structured_input = parser::parse(_input); println!("Part One"); println!("Result: {}", part1::part1()); diff --git a/src/day07/utilities.rs b/src/day07/utilities.rs deleted file mode 100644 index be3e53c..0000000 --- a/src/day07/utilities.rs +++ /dev/null @@ -1,16 +0,0 @@ -pub fn parse(input: &str) -> usize { - unimplemented!() -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_parse() { - let input = -"test" -; - assert_eq!(parse(input), 0); - } -}