isundil 3 years ago
parent
commit
e6e8523d27
2 changed files with 1021 additions and 0 deletions
  1. 965 0
      d7/input
  2. 56 0
      d7/main.js

+ 965 - 0
d7/input

@@ -0,0 +1,965 @@
+$ cd /
+$ ls
+dir cmwrq
+dir ftrccld
+dir jjlbmtw
+dir jpncfpb
+dir mddr
+dir mthvntdd
+55644 pjts.dzh
+dir ptzsl
+dir wmqc
+$ cd cmwrq
+$ ls
+dir dtbzzl
+dir pjnghbm
+16144 rvs
+50956 swngfrsj.pcj
+dir vhvn
+dir vrt
+dir zgrjmtcq
+$ cd dtbzzl
+$ ls
+42503 ljhpmvd.zqf
+dir wwpnn
+$ cd wwpnn
+$ ls
+58541 jjdgzwnq
+dir lwqgsbg
+dir nztw
+dir rdtjztmt
+101609 sqqpcvq.llm
+dir ssdlqcrw
+$ cd lwqgsbg
+$ ls
+207528 cpqhb.jsf
+38543 cqjgspw
+dir dtbzzl
+106337 dtbzzl.njz
+302201 pdv.ppg
+dir pjts
+175215 pvczm.cfw
+dir sbvljdh
+$ cd dtbzzl
+$ ls
+252091 vhvn.zqv
+$ cd ..
+$ cd pjts
+$ ls
+155681 bdbfjbgt.rwg
+219192 dtcz.gqt
+$ cd ..
+$ cd sbvljdh
+$ ls
+dir rdrqc
+dir rtfpcswj
+$ cd rdrqc
+$ ls
+242263 pjts.mbt
+$ cd ..
+$ cd rtfpcswj
+$ ls
+228044 ssgcjt.twr
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd nztw
+$ ls
+30777 vqfsh.smp
+$ cd ..
+$ cd rdtjztmt
+$ ls
+276602 pvczm.cfw
+dir rzbb
+305089 ssdlqcrw.dgb
+$ cd rzbb
+$ ls
+155253 pvczm.cfw
+$ cd ..
+$ cd ..
+$ cd ssdlqcrw
+$ ls
+22423 vqfsh.smp
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd pjnghbm
+$ ls
+189296 ctqfg.ljd
+dir dtbzzl
+dir pjts
+205394 ssdlqcrw.lgv
+$ cd dtbzzl
+$ ls
+239152 fbb.gtn
+dir hlw
+39308 hsnbffzf.qvc
+211316 nhm.zhz
+dir nztw
+dir pvsjpn
+230237 twjq
+$ cd hlw
+$ ls
+dir lfqqrp
+dir nztw
+$ cd lfqqrp
+$ ls
+dir mbmfpz
+dir mdhfdlw
+dir pjts
+dir qzs
+dir ssdlqcrw
+$ cd mbmfpz
+$ ls
+dir fsrbwl
+dir lsmpw
+$ cd fsrbwl
+$ ls
+154657 ftlc.zbr
+dir ltsj
+228929 pvczm.cfw
+dir ssdlqcrw
+234216 tdl
+$ cd ltsj
+$ ls
+51204 vmq.sjg
+$ cd ..
+$ cd ssdlqcrw
+$ ls
+64928 nztw.gpn
+$ cd ..
+$ cd ..
+$ cd lsmpw
+$ ls
+61867 dtbzzl.dgj
+$ cd ..
+$ cd ..
+$ cd mdhfdlw
+$ ls
+92462 dtbzzl.jmq
+239442 tczcgf.zwj
+$ cd ..
+$ cd pjts
+$ ls
+144464 dtbzzl.lnz
+dir pjts
+118500 swgt.smz
+$ cd pjts
+$ ls
+173783 dvztnn
+103088 jlv.pgh
+39332 nhm.zhz
+266947 pppfcg
+$ cd ..
+$ cd ..
+$ cd qzs
+$ ls
+11155 cpqhb.jsf
+$ cd ..
+$ cd ssdlqcrw
+$ ls
+192414 gcwqcwrf.vmb
+$ cd ..
+$ cd ..
+$ cd nztw
+$ ls
+313009 nwt
+$ cd ..
+$ cd ..
+$ cd nztw
+$ ls
+280535 dtbzzl.grj
+269725 ssdlqcrw.tqs
+$ cd ..
+$ cd pvsjpn
+$ ls
+105150 jvjb.mdd
+142501 nztw.cvp
+$ cd ..
+$ cd ..
+$ cd pjts
+$ ls
+dir btc
+dir tpwcmvch
+259357 vqfsh.smp
+$ cd btc
+$ ls
+5264 gdjpql.wqr
+$ cd ..
+$ cd tpwcmvch
+$ ls
+141657 jjdgzwnq
+15650 nhm.zhz
+dir nlrq
+182100 qgf.qgj
+302332 qshf
+244799 vhvn
+dir wvnqzjf
+$ cd nlrq
+$ ls
+dir dtbzzl
+207207 gnd.vmb
+$ cd dtbzzl
+$ ls
+271143 wjbzmc
+$ cd ..
+$ cd ..
+$ cd wvnqzjf
+$ ls
+64128 mtzc.rqb
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd vhvn
+$ ls
+187526 vqfsh.smp
+$ cd ..
+$ cd vrt
+$ ls
+dir drrnm
+dir fqr
+270995 nztw.mfg
+137476 vqfsh.smp
+$ cd drrnm
+$ ls
+250912 pvczm.cfw
+$ cd ..
+$ cd fqr
+$ ls
+229272 nszfcq
+dir nztw
+170643 phh.pdl
+$ cd nztw
+$ ls
+dir bqf
+$ cd bqf
+$ ls
+9998 vqfsh.smp
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd zgrjmtcq
+$ ls
+109025 vhvn
+$ cd ..
+$ cd ..
+$ cd ftrccld
+$ ls
+dir dtbzzl
+dir fvmh
+dir fwztt
+22306 jngjc.mpd
+190320 lnr.jhn
+dir lsvvn
+295676 nztw
+135025 nztw.ssc
+dir pjts
+dir qglhlggq
+dir rslphgp
+247764 ssdlqcrw.jnm
+dir vhvn
+$ cd dtbzzl
+$ ls
+dir fgwh
+$ cd fgwh
+$ ls
+dir dpdvswq
+$ cd dpdvswq
+$ ls
+dir jsstq
+248465 vhvn
+$ cd jsstq
+$ ls
+252517 nztw
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd fvmh
+$ ls
+dir djcn
+dir dtbzzl
+303052 fbnnfsbp.zzg
+77238 mdpcghq.nls
+dir mvppnhr
+238683 ptw
+dir zdqlwnc
+$ cd djcn
+$ ls
+8600 jjdgzwnq
+$ cd ..
+$ cd dtbzzl
+$ ls
+dir sppdjcm
+dir vtnzqtvj
+$ cd sppdjcm
+$ ls
+237925 dvfctpg.zbn
+dir fghb
+dir pfjdsm
+dir pjts
+314661 zfchfq
+$ cd fghb
+$ ls
+280081 cpqhb.jsf
+88448 wbcpnnvs.sjc
+$ cd ..
+$ cd pfjdsm
+$ ls
+256877 bssmgf
+127978 drwttw
+103674 hznr.hjg
+$ cd ..
+$ cd pjts
+$ ls
+191709 qhwwpzn.dsc
+$ cd ..
+$ cd ..
+$ cd vtnzqtvj
+$ ls
+dir rrl
+$ cd rrl
+$ ls
+281036 jjdgzwnq
+dir lzlswv
+dir sjsqnvq
+245082 ssdlqcrw.smq
+$ cd lzlswv
+$ ls
+dir dmh
+$ cd dmh
+$ ls
+41234 hlhgn.mvr
+233542 tgv.csn
+$ cd ..
+$ cd ..
+$ cd sjsqnvq
+$ ls
+221327 qjncmbn
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd mvppnhr
+$ ls
+dir ldwv
+176153 nztw
+dir rmdjdqvl
+dir tmj
+dir vhvn
+$ cd ldwv
+$ ls
+161179 mjsm
+$ cd ..
+$ cd rmdjdqvl
+$ ls
+dir gnztqmhv
+dir lpmhfr
+dir tphjm
+$ cd gnztqmhv
+$ ls
+176043 qlds.mpq
+$ cd ..
+$ cd lpmhfr
+$ ls
+dir jrrdsd
+$ cd jrrdsd
+$ ls
+114477 vqfsh.smp
+$ cd ..
+$ cd ..
+$ cd tphjm
+$ ls
+74809 dcfmjn
+$ cd ..
+$ cd ..
+$ cd tmj
+$ ls
+252001 cpqhb.jsf
+49666 pqpq
+139885 qpj.wpb
+116339 vqfsh.smp
+$ cd ..
+$ cd vhvn
+$ ls
+89397 dtbzzl.hvp
+105454 pvczm.cfw
+280352 zdzm
+$ cd ..
+$ cd ..
+$ cd zdqlwnc
+$ ls
+dir fbhcv
+8676 jjdgzwnq
+99885 nhm.zhz
+234563 pjts.gdj
+dir rsdltnvc
+$ cd fbhcv
+$ ls
+71695 hrzzgwqt
+296401 vqfsh.smp
+$ cd ..
+$ cd rsdltnvc
+$ ls
+41623 gcvtqf
+233747 wdcssvgh.vfs
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd fwztt
+$ ls
+96594 jjdgzwnq
+245415 mtp.szl
+129782 pjts.jjr
+308104 pvczm.cfw
+dir ssdlqcrw
+155109 vhvn.smj
+dir vvzsr
+$ cd ssdlqcrw
+$ ls
+dir bzd
+292228 dtbzzl.tdb
+107505 ssdlqcrw
+181384 tfnrpsd
+$ cd bzd
+$ ls
+84648 brdc
+171457 vhvn
+$ cd ..
+$ cd ..
+$ cd vvzsr
+$ ls
+dir bcdqrs
+147437 jjdgzwnq
+dir ssdlqcrw
+197054 ssdlqcrw.dpz
+dir vhvn
+dir wthshgg
+$ cd bcdqrs
+$ ls
+297401 pspd.dlq
+136072 pvczm.cfw
+$ cd ..
+$ cd ssdlqcrw
+$ ls
+293104 dtbzzl.pdh
+$ cd ..
+$ cd vhvn
+$ ls
+178932 gvrht.cbm
+$ cd ..
+$ cd wthshgg
+$ ls
+dir dppwvtmp
+dir ljgszd
+88822 pcmw.bbq
+255776 pvczm.cfw
+163501 ssdlqcrw
+dir vbjsmgp
+dir vzqc
+dir zmpdrpd
+$ cd dppwvtmp
+$ ls
+45608 dtbzzl.lfq
+164648 gdch.bzp
+65225 nhm.zhz
+$ cd ..
+$ cd ljgszd
+$ ls
+125627 vqfsh.smp
+$ cd ..
+$ cd vbjsmgp
+$ ls
+236951 zpbgb.zmv
+$ cd ..
+$ cd vzqc
+$ ls
+234565 fjfpbjjp
+254986 jjdgzwnq
+164495 nztw.qhz
+dir vhvn
+$ cd vhvn
+$ ls
+199196 nztw
+$ cd ..
+$ cd ..
+$ cd zmpdrpd
+$ ls
+123210 bznqq.dbv
+141163 jjdgzwnq
+302352 wjf.tdv
+92016 wljnwsh
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd lsvvn
+$ ls
+282867 phv.ncc
+$ cd ..
+$ cd pjts
+$ ls
+40866 jjdgzwnq
+$ cd ..
+$ cd qglhlggq
+$ ls
+19577 dtbzzl.ngb
+21171 jjdgzwnq
+136074 pvczm.cfw
+212428 rlpjjf.lvh
+dir vhvn
+274669 wcqlws.ndv
+dir wpvq
+$ cd vhvn
+$ ls
+183301 cbppfp.vbc
+84069 cqnz
+dir dtbzzl
+dir mdng
+126627 pjts.pvp
+dir ptqq
+47594 pvczm.cfw
+154978 qlnnfbvd
+$ cd dtbzzl
+$ ls
+50385 ccgbrdmb.hrr
+22427 rzlwl.jbt
+$ cd ..
+$ cd mdng
+$ ls
+dir gdqqtvnp
+224013 gtv.tbz
+121884 jjdgzwnq
+dir nrmhpblm
+142950 nztw
+9710 pvczm.cfw
+dir vhvn
+$ cd gdqqtvnp
+$ ls
+292349 vhvn.nfr
+$ cd ..
+$ cd nrmhpblm
+$ ls
+52703 jbvd.mlc
+78268 pfns.lpr
+$ cd ..
+$ cd vhvn
+$ ls
+274549 pjts
+$ cd ..
+$ cd ..
+$ cd ptqq
+$ ls
+257967 jqppq.lgb
+166450 nhm.zhz
+$ cd ..
+$ cd ..
+$ cd wpvq
+$ ls
+173437 vqfsh.smp
+$ cd ..
+$ cd ..
+$ cd rslphgp
+$ ls
+29192 pvczm.cfw
+18984 ttpfnqvn.cdr
+302301 vqfsh.smp
+291211 vsvtc.wwf
+$ cd ..
+$ cd vhvn
+$ ls
+dir ssdlqcrw
+$ cd ssdlqcrw
+$ ls
+76864 jpwvws.fwv
+26365 nztw.css
+185966 vqfsh.smp
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd jjlbmtw
+$ ls
+211239 ctfhmm.ssv
+230020 nztw
+109641 sqtjn
+$ cd ..
+$ cd jpncfpb
+$ ls
+dir hjgwcmh
+286054 pcffhsw.bdm
+260831 pvczm.cfw
+dir vhvn
+$ cd hjgwcmh
+$ ls
+92277 bbjhc
+dir fmst
+dir gzjq
+$ cd fmst
+$ ls
+105833 cpqhb.jsf
+315858 nhm.zhz
+233459 nztw
+$ cd ..
+$ cd gzjq
+$ ls
+dir prjqfwf
+dir ssdlqcrw
+$ cd prjqfwf
+$ ls
+151003 jnmgdb.rhn
+$ cd ..
+$ cd ssdlqcrw
+$ ls
+103688 cpqhb.jsf
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd vhvn
+$ ls
+14901 cpqhb.jsf
+98212 tztzq
+$ cd ..
+$ cd ..
+$ cd mddr
+$ ls
+dir qpfjp
+$ cd qpfjp
+$ ls
+dir cfhv
+$ cd cfhv
+$ ls
+dir ssdlqcrw
+$ cd ssdlqcrw
+$ ls
+134280 vvnpvrqb.hdv
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd mthvntdd
+$ ls
+dir bcdcz
+dir cngbf
+62389 cwtvl
+dir mqjjbq
+dir nhblb
+6743 pvczm.cfw
+dir ssdlqcrw
+dir ttvgr
+dir vdmm
+dir wnhnwjm
+dir zdvbsb
+$ cd bcdcz
+$ ls
+213688 dtbzzl.hsv
+dir lbvbc
+100222 nndbhrf
+115627 rqnsfbz.rmf
+dir tvgclpsc
+258672 vqfsh.smp
+163927 whgmd
+$ cd lbvbc
+$ ls
+224836 fpfpwtf.zfz
+103806 nztw
+$ cd ..
+$ cd tvgclpsc
+$ ls
+76900 cpqhb.jsf
+282820 qtffdmsg
+$ cd ..
+$ cd ..
+$ cd cngbf
+$ ls
+dir hstph
+12089 jqvnttq.dsh
+38052 nztw.sqj
+dir qrnpjz
+$ cd hstph
+$ ls
+172788 pjts.qmt
+$ cd ..
+$ cd qrnpjz
+$ ls
+dir blzc
+dir rvl
+dir zvhtzqqc
+$ cd blzc
+$ ls
+108342 nhm.zhz
+$ cd ..
+$ cd rvl
+$ ls
+dir bcrf
+dir sjbr
+$ cd bcrf
+$ ls
+182498 cpqhb.jsf
+dir dcb
+14228 ggsq
+dir gnhvtgm
+$ cd dcb
+$ ls
+dir zlgjzcjv
+$ cd zlgjzcjv
+$ ls
+18316 cpqhb.jsf
+$ cd ..
+$ cd ..
+$ cd gnhvtgm
+$ ls
+110236 nhm.zhz
+$ cd ..
+$ cd ..
+$ cd sjbr
+$ ls
+133009 cscbp
+315907 vtpmnwt
+$ cd ..
+$ cd ..
+$ cd zvhtzqqc
+$ ls
+dir fglfpn
+dir gtzrq
+dir hfgdcf
+274977 ltbzhjn
+dir msc
+dir ssdlqcrw
+$ cd fglfpn
+$ ls
+39153 dvhjpfc
+$ cd ..
+$ cd gtzrq
+$ ls
+60625 sqljdlpz.wpw
+$ cd ..
+$ cd hfgdcf
+$ ls
+36016 qdvnn.pbt
+$ cd ..
+$ cd msc
+$ ls
+56601 cpqhb.jsf
+dir hrz
+dir vlhllqz
+$ cd hrz
+$ ls
+241511 fhngt.mlb
+286505 nhm.zhz
+$ cd ..
+$ cd vlhllqz
+$ ls
+157880 nhm.zhz
+$ cd ..
+$ cd ..
+$ cd ssdlqcrw
+$ ls
+121507 dssrvr
+295897 lvtwlb.whn
+12047 pjts.gqc
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd mqjjbq
+$ ls
+157818 blbmb.fcv
+119103 ccppbmqb.pbt
+141463 cpqhb.jsf
+197900 drhmws.fdd
+dir fmvp
+dir rhldnjlt
+175029 vqfsh.smp
+$ cd fmvp
+$ ls
+dir dhnn
+dir dlcvwqw
+131432 hnv.tlr
+dir jzqt
+98127 nhm.zhz
+dir nvsdbjj
+dir pjts
+9179 pvczm.cfw
+121310 vqfsh.smp
+$ cd dhnn
+$ ls
+173921 qcjsdg.zfg
+58654 vhvn.csb
+$ cd ..
+$ cd dlcvwqw
+$ ls
+285116 zjb
+$ cd ..
+$ cd jzqt
+$ ls
+104478 clmzwnf
+299622 cpqhb.jsf
+301236 jjdgzwnq
+dir nsvlqq
+136737 vhvn
+dir vmp
+12932 wrd.jsz
+$ cd nsvlqq
+$ ls
+111712 dtbzzl.htn
+213593 hvzlmtj.ztr
+$ cd ..
+$ cd vmp
+$ ls
+104275 jjdgzwnq
+$ cd ..
+$ cd ..
+$ cd nvsdbjj
+$ ls
+180999 jjdgzwnq
+219819 vhvn
+$ cd ..
+$ cd pjts
+$ ls
+111715 npzn
+$ cd ..
+$ cd ..
+$ cd rhldnjlt
+$ ls
+dir ffhcbvmf
+dir vprlq
+$ cd ffhcbvmf
+$ ls
+247668 cpqhb.jsf
+$ cd ..
+$ cd vprlq
+$ ls
+168090 jmmtz.fzt
+68360 nhm.zhz
+304580 vqfsh.smp
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd nhblb
+$ ls
+154794 hrgsrbnj.tch
+dir nfwl
+dir ptc
+dir rng
+50110 swtt.tct
+dir vhvn
+dir vlj
+$ cd nfwl
+$ ls
+dir lqs
+dir mlvnlz
+$ cd lqs
+$ ls
+dir mbcft
+dir ntmvt
+dir nztw
+$ cd mbcft
+$ ls
+78188 bdnr
+194668 pjts
+$ cd ..
+$ cd ntmvt
+$ ls
+75647 nhm.zhz
+186651 scsvrqpf.jhb
+$ cd ..
+$ cd nztw
+$ ls
+164920 vqfsh.smp
+$ cd ..
+$ cd ..
+$ cd mlvnlz
+$ ls
+289891 wjf
+$ cd ..
+$ cd ..
+$ cd ptc
+$ ls
+190002 pjts.vmh
+$ cd ..
+$ cd rng
+$ ls
+39093 nhm.zhz
+$ cd ..
+$ cd vhvn
+$ ls
+275854 hbv
+$ cd ..
+$ cd vlj
+$ ls
+dir qqqrm
+203390 ssdlqcrw
+$ cd qqqrm
+$ ls
+dir wcpllh
+$ cd wcpllh
+$ ls
+dir pwg
+$ cd pwg
+$ ls
+19102 dtbzzl.qvp
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ..
+$ cd ssdlqcrw
+$ ls
+181610 vqfsh.smp
+$ cd ..
+$ cd ttvgr
+$ ls
+dir vpcpd
+$ cd vpcpd
+$ ls
+28102 mbb.szv
+304017 rshrzjhn
+$ cd ..
+$ cd ..
+$ cd vdmm
+$ ls
+95079 tssjcd.lfg
+$ cd ..
+$ cd wnhnwjm
+$ ls
+67931 mmhcgsc.zjf
+22062 nqpzsf.ccc
+219285 trr.vcn
+$ cd ..
+$ cd zdvbsb
+$ ls
+293736 dtbzzl.ftj
+$ cd ..
+$ cd ..
+$ cd ptzsl
+$ ls
+26404 jnsdzmbd
+$ cd ..
+$ cd wmqc
+$ ls
+dir dtbzzl
+dir hdzmzc
+dir nmmpwqvz
+dir qjnm
+$ cd dtbzzl
+$ ls
+dir hpzgnb
+$ cd hpzgnb
+$ ls
+189696 sbmdrbm
+$ cd ..
+$ cd ..
+$ cd hdzmzc
+$ ls
+143510 dtbzzl.dmp
+$ cd ..
+$ cd nmmpwqvz
+$ ls
+276725 nhm.zhz
+$ cd ..
+$ cd qjnm
+$ ls
+202264 cpqhb.jsf
+

+ 56 - 0
d7/main.js

@@ -0,0 +1,56 @@
+
+const path = require('path');
+const fs = require('fs');
+const readline = require('readline');
+
+function computeSize(directories, root) {
+    let sum = 0;
+    if (directories[root].size)
+        return directories[root].size;
+    for (let i of directories[root].content) {
+        if (i.size === null)
+            i.size = computeSize(directories, path.join(root, i.name));
+        sum += i.size;
+    }
+    directories[root].size = sum;
+    return sum;
+}
+
+async function main() {
+    let wd = '/';
+    let currentDirContent = null;
+    let allDirectories = {};
+    for await (let line of readline.createInterface({ input: process.stdin })) {
+        if (!line || !line.length)
+            break;
+        if (line.startsWith('$')) {
+            if (currentDirContent) {
+                allDirectories[wd] = { size: null, content: currentDirContent };
+                currentDirContent = null;
+            }
+            if (line === '$ ls')
+                currentDirContent = [];
+            else if (line.startsWith('$ cd '))
+                wd = path.join(wd, line.substring(4).trim())
+        } else if (currentDirContent) {
+            let l = line.split(" ");
+            const size = parseInt(l.shift());
+            currentDirContent.push({
+                size: isNaN(size) ? null : size,
+                isDir: isNaN(size),
+                name: l.join(" ")
+            });
+        }
+    }
+    if (currentDirContent)
+        allDirectories[wd] = { size: null, content: currentDirContent };
+    computeSize(allDirectories, '/');
+
+    // Part 1
+    console.log(Object.keys(allDirectories).map(i => allDirectories[i].size).filter(i => i < 100000).reduce((tmp, i) => tmp + i));
+    // Part 2
+    console.log(Object.keys(allDirectories).map(i => allDirectories[i].size).filter(i => i >= allDirectories['/'].size-40000000).reduce((tmp, i) => Math.min(tmp, i)));
+};
+
+(main());
+