Add aoc 2022 day 7
This commit is contained in:
parent
92c3047a5e
commit
11fe32c81e
|
@ -0,0 +1,14 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "common"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "day7"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"common",
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
[package]
|
||||
name = "day7"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
common = { path = "../common" }
|
|
@ -0,0 +1,979 @@
|
|||
$ cd /
|
||||
$ ls
|
||||
dir plws
|
||||
dir pwlbgbz
|
||||
dir pwtpltr
|
||||
dir szn
|
||||
$ cd plws
|
||||
$ ls
|
||||
dir ffpzc
|
||||
dir frcmjzts
|
||||
92461 nbvnzg
|
||||
dir phqcg
|
||||
21621 vqgsglwq
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
48459 dzdfc.vqq
|
||||
143107 jql.jzl
|
||||
208330 mmnvqn.hqb
|
||||
290122 svjvhflz
|
||||
218008 wjlmgq
|
||||
$ cd ..
|
||||
$ cd frcmjzts
|
||||
$ ls
|
||||
dir bsltmjz
|
||||
dir jfzgrbm
|
||||
$ cd bsltmjz
|
||||
$ ls
|
||||
34237 dzdfc.vqq
|
||||
58741 mdgdhqgw
|
||||
$ cd ..
|
||||
$ cd jfzgrbm
|
||||
$ ls
|
||||
132811 fcmpng
|
||||
103661 lgt.swt
|
||||
173031 vqgsglwq
|
||||
29134 wprjfg.zbr
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd phqcg
|
||||
$ ls
|
||||
955 jgfs.zjw
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd pwlbgbz
|
||||
$ ls
|
||||
dir gbg
|
||||
dir mjzhcwrd
|
||||
dir njcscpj
|
||||
dir sphbzn
|
||||
dir tbgjpphc
|
||||
55938 tvrfpczc.djm
|
||||
4840 twd
|
||||
$ cd gbg
|
||||
$ ls
|
||||
287003 fcsjl.bzm
|
||||
dir wgq
|
||||
$ cd wgq
|
||||
$ ls
|
||||
22963 fcsjl.fcm
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd mjzhcwrd
|
||||
$ ls
|
||||
228632 clfnpmbq.zmb
|
||||
28276 dzdfc.vqq
|
||||
2982 tdbg.wgn
|
||||
$ cd ..
|
||||
$ cd njcscpj
|
||||
$ ls
|
||||
dir dqzgqgv
|
||||
275186 ffpzc
|
||||
192491 gjnflc.plq
|
||||
$ cd dqzgqgv
|
||||
$ ls
|
||||
70309 dzdfc.vqq
|
||||
56139 fcsjl
|
||||
142095 sgwz.cdz
|
||||
dir snjntth
|
||||
dir sphbzn
|
||||
284618 wjlmgq
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
51918 ffpzc
|
||||
dir vrfgfds
|
||||
$ cd vrfgfds
|
||||
$ ls
|
||||
155233 jlscz
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd sphbzn
|
||||
$ ls
|
||||
dir qbzwrrw
|
||||
dir qwpzn
|
||||
$ cd qbzwrrw
|
||||
$ ls
|
||||
278531 fcsjl.tqj
|
||||
211591 snjntth.gpd
|
||||
$ cd ..
|
||||
$ cd qwpzn
|
||||
$ ls
|
||||
174183 vqgsglwq
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd sphbzn
|
||||
$ ls
|
||||
185471 bsltmjz.fqz
|
||||
dir bsvh
|
||||
dir fvzcs
|
||||
dir ndw
|
||||
dir nlml
|
||||
dir pcbt
|
||||
286260 zhcmrpvt
|
||||
$ cd bsvh
|
||||
$ ls
|
||||
130814 wjlmgq
|
||||
$ cd ..
|
||||
$ cd fvzcs
|
||||
$ ls
|
||||
dir cgmv
|
||||
dir ggzwljr
|
||||
298241 qvzghdpw.lms
|
||||
dir snjntth
|
||||
dir sphbzn
|
||||
$ cd cgmv
|
||||
$ ls
|
||||
46843 dzdfc.vqq
|
||||
dir lmqcbbm
|
||||
dir rstcqsmd
|
||||
215261 snjntth
|
||||
$ cd lmqcbbm
|
||||
$ ls
|
||||
229898 bdmbvgp
|
||||
25529 ffpzc.stm
|
||||
16871 lnpjzvg.qlj
|
||||
$ cd ..
|
||||
$ cd rstcqsmd
|
||||
$ ls
|
||||
289038 zrbbbwng.smf
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ggzwljr
|
||||
$ ls
|
||||
198200 bcthn
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
191672 fwp.phf
|
||||
68229 hzs.zpg
|
||||
dir pggcwb
|
||||
222426 qbv.bwj
|
||||
dir snjntth
|
||||
155354 vmqcm
|
||||
$ cd pggcwb
|
||||
$ ls
|
||||
154272 fqztwvnv.lvv
|
||||
dir pdjg
|
||||
62393 vqgsglwq
|
||||
dir wjhrtg
|
||||
$ cd pdjg
|
||||
$ ls
|
||||
260644 gvhlrcf
|
||||
209906 wpls.pbd
|
||||
$ cd ..
|
||||
$ cd wjhrtg
|
||||
$ ls
|
||||
148640 dljf.zrq
|
||||
172168 dzdfc.vqq
|
||||
196203 hjdphcfm
|
||||
247620 sgwz.cdz
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
37467 ndlshlmj.cjq
|
||||
257404 snjntth.nsf
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd sphbzn
|
||||
$ ls
|
||||
64082 bfdv.lwv
|
||||
dir bsltmjz
|
||||
58942 dzdfc.vqq
|
||||
dir snjntth
|
||||
$ cd bsltmjz
|
||||
$ ls
|
||||
dir bsqqdr
|
||||
266007 fcsjl.gfm
|
||||
dir ffpzc
|
||||
dir frsmrd
|
||||
72122 nthnhzwf
|
||||
286705 wjlmgq
|
||||
$ cd bsqqdr
|
||||
$ ls
|
||||
117496 wcqt
|
||||
$ cd ..
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
280224 mmnvqn.hqb
|
||||
105346 vrr
|
||||
$ cd ..
|
||||
$ cd frsmrd
|
||||
$ ls
|
||||
111509 sphbzn.shz
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
177491 mplj
|
||||
9029 pvbz.jwn
|
||||
92891 snjntth.zrv
|
||||
203356 vnnnw.gql
|
||||
134728 vqgsglwq
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ndw
|
||||
$ ls
|
||||
241303 bht.rpj
|
||||
173068 vqgsglwq
|
||||
$ cd ..
|
||||
$ cd nlml
|
||||
$ ls
|
||||
228982 hzglfpvq.ftt
|
||||
114981 sgwz.cdz
|
||||
$ cd ..
|
||||
$ cd pcbt
|
||||
$ ls
|
||||
dir bsltmjz
|
||||
dir ffpzc
|
||||
dir fjsjwfg
|
||||
dir fwm
|
||||
dir jvwt
|
||||
227943 tmr.jdc
|
||||
dir vwpqzdwh
|
||||
31258 wjlmgq
|
||||
$ cd bsltmjz
|
||||
$ ls
|
||||
177750 bsltmjz.spj
|
||||
dir ffpzc
|
||||
dir flrpwfs
|
||||
138824 mtmdtcpv.cfj
|
||||
165770 wzqwczj.qwn
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
179645 snjntth.dss
|
||||
$ cd ..
|
||||
$ cd flrpwfs
|
||||
$ ls
|
||||
60566 wvjq.gmm
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
97847 qzhhtmd.bhw
|
||||
1197 vqgsglwq
|
||||
$ cd ..
|
||||
$ cd fjsjwfg
|
||||
$ ls
|
||||
152232 dnsdd.jgz
|
||||
181301 gsb.wsh
|
||||
dir jqpb
|
||||
dir jscbg
|
||||
dir snjntth
|
||||
227677 snjntth.vvg
|
||||
dir sphbzn
|
||||
75358 vqgsglwq
|
||||
2589 wjlmgq
|
||||
$ cd jqpb
|
||||
$ ls
|
||||
253403 mmnvqn.hqb
|
||||
108325 rvq.mrc
|
||||
$ cd ..
|
||||
$ cd jscbg
|
||||
$ ls
|
||||
dir dtm
|
||||
dir gsdnz
|
||||
208269 prh
|
||||
25977 qdzljgh
|
||||
169262 vmnq.mth
|
||||
$ cd dtm
|
||||
$ ls
|
||||
80072 gzqnb
|
||||
$ cd ..
|
||||
$ cd gsdnz
|
||||
$ ls
|
||||
dir dsqzjs
|
||||
297895 sgwz.cdz
|
||||
129983 vqgsglwq
|
||||
$ cd dsqzjs
|
||||
$ ls
|
||||
2621 jqrlsf.gzs
|
||||
164844 snjntth
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
118553 cbhql
|
||||
dir ffpzc
|
||||
dir snjntth
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
dir lmn
|
||||
12104 tvlwn.vhh
|
||||
$ cd lmn
|
||||
$ ls
|
||||
46401 bsltmjz
|
||||
96888 shrnqhvq
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
dir snjntth
|
||||
dir vlnfhbq
|
||||
dir wpwl
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
dir ctj
|
||||
$ cd ctj
|
||||
$ ls
|
||||
82485 fcsjl.lfl
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd vlnfhbq
|
||||
$ ls
|
||||
250106 qvf
|
||||
$ cd ..
|
||||
$ cd wpwl
|
||||
$ ls
|
||||
153950 cmsd.rlg
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd sphbzn
|
||||
$ ls
|
||||
dir glgq
|
||||
$ cd glgq
|
||||
$ ls
|
||||
285182 wjlmgq
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd fwm
|
||||
$ ls
|
||||
251865 ffpzc.qgb
|
||||
279522 zvvpfqtp
|
||||
$ cd ..
|
||||
$ cd jvwt
|
||||
$ ls
|
||||
48990 bsltmjz.nzp
|
||||
219604 ffpzc
|
||||
69573 mvmdfzr.lwb
|
||||
$ cd ..
|
||||
$ cd vwpqzdwh
|
||||
$ ls
|
||||
267581 pvcch
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd tbgjpphc
|
||||
$ ls
|
||||
255571 dstpcgr.tfq
|
||||
dir fdbwbrpp
|
||||
dir gjzwh
|
||||
dir hjvrtjt
|
||||
dir rhzczj
|
||||
292888 sgwz.cdz
|
||||
dir wlzhr
|
||||
149395 wnfzrqgz.dtn
|
||||
$ cd fdbwbrpp
|
||||
$ ls
|
||||
dir ffpzc
|
||||
dir qbrth
|
||||
51164 qprp
|
||||
dir slpt
|
||||
117026 sphbzn
|
||||
295685 vqgsglwq
|
||||
dir znmj
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
dir jhnzrdvb
|
||||
$ cd jhnzrdvb
|
||||
$ ls
|
||||
217775 ffpzc.sgw
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd qbrth
|
||||
$ ls
|
||||
183969 lpbwgfjv.vcg
|
||||
47333 wjlmgq
|
||||
$ cd ..
|
||||
$ cd slpt
|
||||
$ ls
|
||||
32343 tqhtj.jwz
|
||||
$ cd ..
|
||||
$ cd znmj
|
||||
$ ls
|
||||
55058 mmnvqn.hqb
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd gjzwh
|
||||
$ ls
|
||||
dir dvcbcd
|
||||
202530 dzdfc.vqq
|
||||
dir fsgz
|
||||
dir hfrrqq
|
||||
54897 jlzn.qsn
|
||||
16097 ldzqsbb.jzl
|
||||
225078 pswccrd
|
||||
dir rqqmldw
|
||||
292464 rzrdhbp.vld
|
||||
dir ssqbqqp
|
||||
dir zsztqrc
|
||||
$ cd dvcbcd
|
||||
$ ls
|
||||
187837 dzdfc.vqq
|
||||
dir jlwtvf
|
||||
dir jnjvshs
|
||||
164053 nrf.fqd
|
||||
5665 tlp.jmt
|
||||
13801 wjlmgq
|
||||
$ cd jlwtvf
|
||||
$ ls
|
||||
219985 sphbzn.dvj
|
||||
$ cd ..
|
||||
$ cd jnjvshs
|
||||
$ ls
|
||||
dir bsltmjz
|
||||
dir nrpm
|
||||
$ cd bsltmjz
|
||||
$ ls
|
||||
152972 qgdqj
|
||||
$ cd ..
|
||||
$ cd nrpm
|
||||
$ ls
|
||||
18509 wjlmgq
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd fsgz
|
||||
$ ls
|
||||
224576 mmnvqn.hqb
|
||||
$ cd ..
|
||||
$ cd hfrrqq
|
||||
$ ls
|
||||
dir bwgsnfvb
|
||||
dir fcsjl
|
||||
294608 ffpzc.gvm
|
||||
136880 qjcgtw
|
||||
dir sphbzn
|
||||
$ cd bwgsnfvb
|
||||
$ ls
|
||||
29735 dzdfc.vqq
|
||||
dir wstmzfml
|
||||
$ cd wstmzfml
|
||||
$ ls
|
||||
158447 bnvhbvvc.nrt
|
||||
59889 jclclgd
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd fcsjl
|
||||
$ ls
|
||||
138297 ffpzc.szw
|
||||
$ cd ..
|
||||
$ cd sphbzn
|
||||
$ ls
|
||||
dir wqdths
|
||||
$ cd wqdths
|
||||
$ ls
|
||||
8326 cgvtw.jpz
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd rqqmldw
|
||||
$ ls
|
||||
226757 dzdfc.vqq
|
||||
115055 mwb.btc
|
||||
dir qpts
|
||||
298524 sgwz.cdz
|
||||
$ cd qpts
|
||||
$ ls
|
||||
60860 bsltmjz.frp
|
||||
dir fcsjl
|
||||
94904 sgwz.cdz
|
||||
dir wnmqqspz
|
||||
$ cd fcsjl
|
||||
$ ls
|
||||
25082 mmnvqn.hqb
|
||||
$ cd ..
|
||||
$ cd wnmqqspz
|
||||
$ ls
|
||||
165529 sgwz.cdz
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ssqbqqp
|
||||
$ ls
|
||||
192477 pvrgm
|
||||
$ cd ..
|
||||
$ cd zsztqrc
|
||||
$ ls
|
||||
254053 lht.htn
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd hjvrtjt
|
||||
$ ls
|
||||
189942 fwps
|
||||
$ cd ..
|
||||
$ cd rhzczj
|
||||
$ ls
|
||||
36502 bmtfr
|
||||
dir ffjz
|
||||
35148 nctfhmzm.vsz
|
||||
dir qdgjzcz
|
||||
208196 rwql
|
||||
79863 sgwz.cdz
|
||||
dir snjntth
|
||||
$ cd ffjz
|
||||
$ ls
|
||||
dir grsvhwm
|
||||
$ cd grsvhwm
|
||||
$ ls
|
||||
50231 fwj.rdv
|
||||
dir snjntth
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
dir dtbgb
|
||||
$ cd dtbgb
|
||||
$ ls
|
||||
150245 vdflm.lmq
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd qdgjzcz
|
||||
$ ls
|
||||
222389 dzdfc.vqq
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
56794 mmnvqn.hqb
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd wlzhr
|
||||
$ ls
|
||||
116628 bsltmjz
|
||||
60122 jqpbsgnr.fgb
|
||||
252605 lfss
|
||||
300065 qwjdl.vhr
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd pwtpltr
|
||||
$ ls
|
||||
dir dplsvrhl
|
||||
140951 gwtfzqvd.znb
|
||||
dir jbvdb
|
||||
dir jst
|
||||
dir qhjv
|
||||
dir snjntth
|
||||
$ cd dplsvrhl
|
||||
$ ls
|
||||
272101 fcsjl
|
||||
dir ffpzc
|
||||
58852 mmnvqn.hqb
|
||||
dir mnhntjz
|
||||
91899 sgwz.cdz
|
||||
228077 snjntth.btv
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
5499 bsltmjz
|
||||
dir qmfwpjhl
|
||||
dir rsrb
|
||||
dir wgt
|
||||
$ cd qmfwpjhl
|
||||
$ ls
|
||||
300362 dzdfc.vqq
|
||||
$ cd ..
|
||||
$ cd rsrb
|
||||
$ ls
|
||||
252983 dzdfc.vqq
|
||||
107744 ltssrgqb.zvj
|
||||
214895 rhglgcwr.wpw
|
||||
249727 sgwz.cdz
|
||||
$ cd ..
|
||||
$ cd wgt
|
||||
$ ls
|
||||
141984 dzdfc.vqq
|
||||
194686 mmnvqn.hqb
|
||||
258023 pgr
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd mnhntjz
|
||||
$ ls
|
||||
dir bdvght
|
||||
dir jprwchh
|
||||
dir snjntth
|
||||
$ cd bdvght
|
||||
$ ls
|
||||
243166 vpsvjdq.wsn
|
||||
$ cd ..
|
||||
$ cd jprwchh
|
||||
$ ls
|
||||
178943 bmpc.bjb
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
dir nlbm
|
||||
dir zjmjntff
|
||||
$ cd nlbm
|
||||
$ ls
|
||||
33050 fcsjl.rcc
|
||||
dir sphbzn
|
||||
17446 wjlmgq
|
||||
$ cd sphbzn
|
||||
$ ls
|
||||
214563 prrfhff.pbp
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd zjmjntff
|
||||
$ ls
|
||||
82134 sgwz.cdz
|
||||
52203 vrtlgdq.crp
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd jbvdb
|
||||
$ ls
|
||||
dir wmtjh
|
||||
$ cd wmtjh
|
||||
$ ls
|
||||
dir ggvwn
|
||||
$ cd ggvwn
|
||||
$ ls
|
||||
192285 spqvmf.sdh
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd jst
|
||||
$ ls
|
||||
dir bsltmjz
|
||||
212740 dzdfc.vqq
|
||||
dir gncztvtb
|
||||
dir jsqjcqnt
|
||||
286257 jvs
|
||||
36654 sdcsm.mbg
|
||||
192040 sgwz.cdz
|
||||
dir tbqphzb
|
||||
dir vdcqgts
|
||||
285843 wjlmgq
|
||||
$ cd bsltmjz
|
||||
$ ls
|
||||
215705 snjntth.gpv
|
||||
213665 wjlmgq
|
||||
$ cd ..
|
||||
$ cd gncztvtb
|
||||
$ ls
|
||||
229298 vqgsglwq
|
||||
$ cd ..
|
||||
$ cd jsqjcqnt
|
||||
$ ls
|
||||
dir bsltmjz
|
||||
dir fcsjl
|
||||
dir ffpzc
|
||||
dir sphbzn
|
||||
70864 vqgsglwq
|
||||
$ cd bsltmjz
|
||||
$ ls
|
||||
14981 pqzffzjc
|
||||
$ cd ..
|
||||
$ cd fcsjl
|
||||
$ ls
|
||||
140328 jwhczwbc
|
||||
$ cd ..
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
213650 mmnvqn.hqb
|
||||
$ cd ..
|
||||
$ cd sphbzn
|
||||
$ ls
|
||||
dir psmtphhq
|
||||
dir sphbzn
|
||||
$ cd psmtphhq
|
||||
$ ls
|
||||
dir ffpzc
|
||||
123131 tzgwd
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
49737 cfngvmd
|
||||
dir gcnrp
|
||||
172799 gmd.cwl
|
||||
dir llnztjf
|
||||
dir nbqs
|
||||
79661 rrqz
|
||||
$ cd gcnrp
|
||||
$ ls
|
||||
283 vqnrgl.vwp
|
||||
$ cd ..
|
||||
$ cd llnztjf
|
||||
$ ls
|
||||
63263 tjhm.bwh
|
||||
$ cd ..
|
||||
$ cd nbqs
|
||||
$ ls
|
||||
dir vssmq
|
||||
$ cd vssmq
|
||||
$ ls
|
||||
88980 dzdfc.vqq
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd sphbzn
|
||||
$ ls
|
||||
20140 fcsjl.zrs
|
||||
260579 snjntth
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd tbqphzb
|
||||
$ ls
|
||||
93470 sgwz.cdz
|
||||
$ cd ..
|
||||
$ cd vdcqgts
|
||||
$ ls
|
||||
223564 dzdfc.vqq
|
||||
dir ffpzc
|
||||
dir gwhfgwf
|
||||
dir nbjtqnng
|
||||
dir snjntth
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
42813 qwwmw.nmt
|
||||
$ cd ..
|
||||
$ cd gwhfgwf
|
||||
$ ls
|
||||
59918 jvfv.mpm
|
||||
dir mjl
|
||||
211039 pcwl
|
||||
$ cd mjl
|
||||
$ ls
|
||||
13004 pgjb.tpq
|
||||
195995 tms.fjz
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd nbjtqnng
|
||||
$ ls
|
||||
107058 dzdfc.vqq
|
||||
dir ldrsd
|
||||
111631 vqgsglwq
|
||||
104599 wbzmdljw.tjq
|
||||
155747 wjlmgq
|
||||
$ cd ldrsd
|
||||
$ ls
|
||||
107439 jvjm
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
242680 fgrt.gng
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd qhjv
|
||||
$ ls
|
||||
dir bmnm
|
||||
68453 hjjpdgn.hwl
|
||||
dir sjlbj
|
||||
dir vqnrj
|
||||
$ cd bmnm
|
||||
$ ls
|
||||
1238 vqgsglwq
|
||||
$ cd ..
|
||||
$ cd sjlbj
|
||||
$ ls
|
||||
44239 wzzbtmrz.gml
|
||||
$ cd ..
|
||||
$ cd vqnrj
|
||||
$ ls
|
||||
3286 bsltmjz.qlc
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
130833 blm.wmt
|
||||
dir snjntth
|
||||
dir tcnmbcgg
|
||||
218869 wjlmgq
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
dir snmrdfbt
|
||||
$ cd snmrdfbt
|
||||
$ ls
|
||||
281025 bzrsds.lfg
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd tcnmbcgg
|
||||
$ ls
|
||||
194998 fcsjl
|
||||
dir qdrmpqgn
|
||||
dir rzqd
|
||||
dir tcsds
|
||||
$ cd qdrmpqgn
|
||||
$ ls
|
||||
165713 qmzgt.tnc
|
||||
$ cd ..
|
||||
$ cd rzqd
|
||||
$ ls
|
||||
dir cwhnmlv
|
||||
57819 fcsjl
|
||||
246864 pjnzdvd.gjm
|
||||
$ cd cwhnmlv
|
||||
$ ls
|
||||
287539 mmnvqn.hqb
|
||||
215636 pbnjt.zbn
|
||||
124638 sqd
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd tcsds
|
||||
$ ls
|
||||
78812 gfmgb.wqj
|
||||
218987 hnhfvz.dln
|
||||
209640 mzzhqlq.zqp
|
||||
102492 nml.ppg
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd szn
|
||||
$ ls
|
||||
dir fcsjl
|
||||
dir snjntth
|
||||
dir zjbp
|
||||
$ cd fcsjl
|
||||
$ ls
|
||||
158019 jsv.pmz
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
229510 dfvpvp
|
||||
191061 fgplbptq.jlt
|
||||
dir lfb
|
||||
234911 lfsrwr.wcb
|
||||
dir lrfcgzl
|
||||
48031 stbbw
|
||||
219691 vqgsglwq
|
||||
dir zshh
|
||||
$ cd lfb
|
||||
$ ls
|
||||
dir btj
|
||||
99591 dhrjbvvg.gwm
|
||||
137224 dzdfc.vqq
|
||||
201972 jtzmqsvj.wnd
|
||||
9704 mmnvqn.hqb
|
||||
dir pwg
|
||||
200308 snjntth.css
|
||||
dir wcmhcfm
|
||||
dir zwhvmln
|
||||
$ cd btj
|
||||
$ ls
|
||||
dir rnbzdfgn
|
||||
51799 wdhsm
|
||||
dir wvf
|
||||
$ cd rnbzdfgn
|
||||
$ ls
|
||||
117095 bsltmjz.tlv
|
||||
$ cd ..
|
||||
$ cd wvf
|
||||
$ ls
|
||||
dir ffpzc
|
||||
dir ncbmgpsc
|
||||
dir wtwrmjnt
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
249919 lsth.fmf
|
||||
$ cd ..
|
||||
$ cd ncbmgpsc
|
||||
$ ls
|
||||
147899 dzdfc.vqq
|
||||
$ cd ..
|
||||
$ cd wtwrmjnt
|
||||
$ ls
|
||||
252366 pvpdv.jwz
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd pwg
|
||||
$ ls
|
||||
280845 fcsjl.fjz
|
||||
44300 sgwz.cdz
|
||||
dir snjntth
|
||||
229605 vqgsglwq
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
2053 pflvsnzs
|
||||
143522 sgwz.cdz
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd wcmhcfm
|
||||
$ ls
|
||||
229329 qsznhwlw.vjg
|
||||
$ cd ..
|
||||
$ cd zwhvmln
|
||||
$ ls
|
||||
dir ffpzc
|
||||
dir tjjzbf
|
||||
dir wzcq
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
dir ncnj
|
||||
37497 vqgsglwq
|
||||
$ cd ncnj
|
||||
$ ls
|
||||
40920 htbjhjq
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd tjjzbf
|
||||
$ ls
|
||||
47522 mczn.spd
|
||||
$ cd ..
|
||||
$ cd wzcq
|
||||
$ ls
|
||||
56662 ffpzc.vwp
|
||||
dir snjntth
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
117276 wjlmgq
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd lrfcgzl
|
||||
$ ls
|
||||
267485 rsjmpph.qqz
|
||||
$ cd ..
|
||||
$ cd zshh
|
||||
$ ls
|
||||
dir ffpzc
|
||||
dir gmn
|
||||
dir snjntth
|
||||
150048 tgtlh
|
||||
32020 thfr
|
||||
72152 vqgsglwq
|
||||
$ cd ffpzc
|
||||
$ ls
|
||||
dir snjntth
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
224945 dpfpz
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd gmn
|
||||
$ ls
|
||||
238996 sgwz.cdz
|
||||
$ cd ..
|
||||
$ cd snjntth
|
||||
$ ls
|
||||
86775 dzdfc.vqq
|
||||
19560 vshcmjj
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd ..
|
||||
$ cd zjbp
|
||||
$ ls
|
||||
dir fcsjl
|
||||
41522 nlvpb.fpf
|
||||
dir nmtjtd
|
||||
$ cd fcsjl
|
||||
$ ls
|
||||
276802 fcsjl.psm
|
||||
197934 sgwz.cdz
|
||||
$ cd ..
|
||||
$ cd nmtjtd
|
||||
$ ls
|
||||
47477 dvqmqlgw.ths
|
||||
51081 vqgsglwq
|
|
@ -0,0 +1,249 @@
|
|||
use std::str::FromStr;
|
||||
|
||||
fn main() {
|
||||
let mut t = Tree::create();
|
||||
let mut current_directory: usize = 0;
|
||||
|
||||
let input_file = common::parse_args_input_file(&mut std::env::args());
|
||||
let content = std::fs::read_to_string(input_file).expect("Couldn't read input file");
|
||||
for line in content.lines() {
|
||||
if line.eq("") {
|
||||
continue;
|
||||
}
|
||||
if line.chars().nth(0) == Some('$') {
|
||||
// Parse command
|
||||
let words: std::vec::Vec<& str> = line.split(' ').collect();
|
||||
if words[1].eq("cd") {
|
||||
if words[2].eq("..") {
|
||||
let cd = t.nodes[current_directory].as_ref().unwrap();
|
||||
if cd.parent.is_none() {
|
||||
unreachable!();
|
||||
}
|
||||
current_directory = cd.parent.unwrap();
|
||||
}
|
||||
else if words[2].eq("/") {
|
||||
current_directory = 0;
|
||||
}
|
||||
else {
|
||||
current_directory = t.find_child_by_name(current_directory, words[2]).unwrap();
|
||||
}
|
||||
println!("Changed directory to index: {}", current_directory);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// In this 'puzzle', the only entries without '$ ' prefix are
|
||||
// results from '$ ls'.
|
||||
t.add_node_by_parse_line(current_directory, line);
|
||||
}
|
||||
}
|
||||
|
||||
let mut part1 = 0;
|
||||
let mut part2_idx = 0;
|
||||
let mut part2_value = t.get_size(0);
|
||||
let fs_size = 70000000;
|
||||
let used_space = part2_value;
|
||||
let threshold = 30000000;
|
||||
t.nodes[0].as_ref().unwrap().print(&t, 0);
|
||||
for (idx, node) in t.nodes.iter().enumerate() {
|
||||
if node.as_ref().unwrap().node_type == NodeType::Directory {
|
||||
let size = t.get_size(idx);
|
||||
if size <= 100000 {
|
||||
part1 += size;
|
||||
}
|
||||
println!("Size of directory '{}': {}", node.as_ref().unwrap().name, size);
|
||||
|
||||
// Potential space freed by deletion
|
||||
let new_used_space_if_deleted = used_space - size;
|
||||
let new_free_space = fs_size - new_used_space_if_deleted;
|
||||
if new_free_space >= threshold {
|
||||
// Deleting this directory could let the update run
|
||||
// however, we want the largest "used_space" remaining (so the
|
||||
// smallest directory deleted).
|
||||
println!("Deleting directory index {} ('{}') would leave {} free", idx, node.as_ref().unwrap().name, new_free_space);
|
||||
if size < part2_value {
|
||||
part2_value = size;
|
||||
part2_idx = idx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
println!("[PART 1] {}", part1);
|
||||
println!("[PART 2] Deleting directory index {} size {}", part2_idx, part2_value);
|
||||
}
|
||||
|
||||
#[derive(PartialEq)]
|
||||
enum NodeType {
|
||||
Directory,
|
||||
File,
|
||||
}
|
||||
|
||||
struct Node {
|
||||
parent: Option<usize>,
|
||||
name: String,
|
||||
node_type: NodeType,
|
||||
size: u32,
|
||||
children: std::vec::Vec<usize>,
|
||||
}
|
||||
|
||||
impl Node {
|
||||
fn parse(line: &str) -> Node {
|
||||
let words: std::vec::Vec<&str> = line.split(' ').collect();
|
||||
let mut n = Node {
|
||||
parent: None,
|
||||
name: words[1].to_string(),
|
||||
node_type: NodeType::Directory,
|
||||
size: 0,
|
||||
children: std::vec::Vec::<usize>::new(),
|
||||
};
|
||||
if !words[0].eq("dir") {
|
||||
n.node_type = NodeType::File;
|
||||
n.size = u32::from_str(words[0]).expect("File size is not an integer value");
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
fn print(&self, tree: &Tree, indent: usize) {
|
||||
for _ in 0..indent {
|
||||
print!(" ");
|
||||
}
|
||||
print!("- {} ", self.name);
|
||||
if self.node_type == NodeType::Directory {
|
||||
println!("(dir)");
|
||||
}
|
||||
else {
|
||||
println!("(file, size={})", self.size);
|
||||
}
|
||||
for c_id in self.children.iter() {
|
||||
tree.nodes[*c_id].as_ref().unwrap().print(tree, indent + 2);
|
||||
}
|
||||
}
|
||||
|
||||
fn get_size(&self, tree: &Tree) -> u32 {
|
||||
if self.node_type == NodeType::File {
|
||||
return self.size;
|
||||
}
|
||||
else {
|
||||
let mut size: u32 = 0;
|
||||
for c in self.children.iter() {
|
||||
size += tree.get_size(*c);
|
||||
}
|
||||
return size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct Tree {
|
||||
nodes: std::vec::Vec<Option<Node>>,
|
||||
}
|
||||
|
||||
impl Tree {
|
||||
|
||||
fn create() -> Tree {
|
||||
let mut t = Tree {
|
||||
nodes: std::vec::Vec::<Option<Node>>::new(),
|
||||
};
|
||||
t.nodes.push(Some(Node {
|
||||
parent: None,
|
||||
name: "/".to_string(),
|
||||
node_type: NodeType::Directory,
|
||||
size: 0,
|
||||
children: std::vec::Vec::<usize>::new(),
|
||||
}));
|
||||
return t;
|
||||
}
|
||||
|
||||
fn find_by_name(&self, name: &str) -> Option<usize> {
|
||||
let mut index = 0;
|
||||
for x in &self.nodes {
|
||||
if x.is_none() {
|
||||
index += 1;
|
||||
continue;
|
||||
}
|
||||
if x.as_ref().unwrap().name.eq(name) {
|
||||
return Some(index);
|
||||
}
|
||||
index += 1;
|
||||
}
|
||||
return None;
|
||||
}
|
||||
|
||||
fn find_child_by_name(&self, start: usize, name: &str) -> Option<usize> {
|
||||
for n_id in self.nodes[start].as_ref().unwrap().children.iter() {
|
||||
let n = &self.nodes[*n_id];
|
||||
if n.as_ref().unwrap().name.eq(name) {
|
||||
return Some(*n_id);
|
||||
}
|
||||
}
|
||||
return None;
|
||||
}
|
||||
|
||||
fn add_node_by_parse_line(&mut self, parent: usize, line: &str) -> Result<usize, &'static str> {
|
||||
if self.nodes.get_mut(parent).expect("Not in storage").is_none() {
|
||||
return Result::Err("Parent node not found by id");
|
||||
}
|
||||
let mut n = Node::parse(line);
|
||||
n.parent = Some(parent);
|
||||
self.nodes.push(Some(n));
|
||||
let new_index = self.nodes.len() - 1;
|
||||
let p = self.nodes.get_mut(parent).expect("Not in storage");
|
||||
p.as_mut().unwrap().children.push(new_index);
|
||||
return Ok(new_index);
|
||||
}
|
||||
|
||||
fn add_node_by_parent_string_parse_line(&mut self, parent: &str, line: &str) -> Result<usize, &'static str> {
|
||||
let p = self.find_by_name(parent);
|
||||
if p.is_none() {
|
||||
return Result::Err("Parent node not found by name");
|
||||
}
|
||||
return self.add_node_by_parse_line(p.unwrap(), line);
|
||||
}
|
||||
|
||||
// fn invalidate_directory_size_cache(&mut self, start: usize) {
|
||||
// let mut n = self.nodes.get_mut(start).expect("start node doesn't exist");
|
||||
// while n.is_some() {
|
||||
// if n.as_ref().unwrap().node_type == NodeType::Directory {
|
||||
// n.as_mut().unwrap().dir_size_cache_dirty = true;
|
||||
// }
|
||||
// if n.as_ref().unwrap().parent.is_none() {
|
||||
// break;
|
||||
// }
|
||||
// let p = n.as_ref().unwrap().parent.unwrap();
|
||||
// n = self.nodes.get_mut(p).expect("parent node doesn't exist");
|
||||
// }
|
||||
// }
|
||||
|
||||
fn get_size(&self, start: usize) -> u32 {
|
||||
return self.nodes[start].as_ref().unwrap().get_size(self);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_find_by_name() {
|
||||
let mut t = Tree::create();
|
||||
t.nodes.push(Some(Node::parse("dir a")));
|
||||
t.nodes.push(Some(Node::parse("14848514 b.txt")));
|
||||
t.nodes.push(Some(Node::parse("8504156 c.dat")));
|
||||
assert_eq!(t.find_by_name("b.txt"), Some(2));
|
||||
assert_eq!(t.find_by_name("c.txt"), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_add_by_parsing() {
|
||||
let mut t = Tree::create();
|
||||
let a_idx = t.add_node_by_parent_string_parse_line("/", "dir a").unwrap();
|
||||
assert!(t.nodes[0].as_ref().unwrap().children.contains(&a_idx));
|
||||
let b_idx = t.add_node_by_parent_string_parse_line("/", "14848514 b.txt").unwrap();
|
||||
assert!(t.nodes[0].as_ref().unwrap().children.contains(&b_idx));
|
||||
let c_idx = t.add_node_by_parent_string_parse_line("a", "8504156 c.dat").unwrap();
|
||||
assert!(t.nodes[a_idx].as_ref().unwrap().children.contains(&c_idx));
|
||||
|
||||
let x = t.find_by_name("c.dat");
|
||||
assert_eq!(x, Some(c_idx));
|
||||
let c = t.nodes.get(x.unwrap()).unwrap();
|
||||
assert_eq!(c.as_ref().unwrap().parent, Some(a_idx));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
$ 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
|
Loading…
Reference in New Issue