mirror of
https://github.com/rjNemo/advent_of_code_2022
synced 2026-06-12 05:26:47 +00:00
day7 part 1
This commit is contained in:
parent
1aa2e47170
commit
cbb38cb1a1
4 changed files with 1210 additions and 0 deletions
128
day7/README.md
Normal file
128
day7/README.md
Normal file
|
|
@ -0,0 +1,128 @@
|
||||||
|
# Day 7: No Space Left On Device
|
||||||
|
|
||||||
|
You can hear birds chirping and raindrops hitting leaves as the expedition proceeds. Occasionally, you can even hear
|
||||||
|
much louder sounds in the distance; how big do the animals get out here, anyway?
|
||||||
|
|
||||||
|
The device the Elves gave you has problems with more than just its communication system. You try to run a system update:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ system-update --please --pretty-please-with-sugar-on-top
|
||||||
|
Error: No space left on device
|
||||||
|
```
|
||||||
|
|
||||||
|
Perhaps you can delete some files to make space for the update?
|
||||||
|
|
||||||
|
You browse around the filesystem to assess the situation and save the resulting terminal output (your puzzle input). For
|
||||||
|
example:
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
$ 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
|
||||||
|
```
|
||||||
|
|
||||||
|
The filesystem consists of a tree of files (plain data) and directories (which can contain other directories or files).
|
||||||
|
The outermost directory is called `/`. You can navigate around the filesystem, moving into or out of directories and
|
||||||
|
listing the contents of the directory you're currently in.
|
||||||
|
|
||||||
|
Within the terminal output, lines that begin with `$` are **commands you executed**, very much like some modern
|
||||||
|
computers:
|
||||||
|
|
||||||
|
- `cd` means **change directory**. This changes which directory is the current directory, but the specific result
|
||||||
|
depends on the argument:
|
||||||
|
- `cd x` moves in one level: it looks in the current directory for the directory named x and makes it the current
|
||||||
|
directory.
|
||||||
|
- `cd ..` moves **out** one level: it finds the directory that contains the current directory, then makes that
|
||||||
|
directory the current directory.
|
||||||
|
- `cd /` switches the current directory to the outermost directory, `/`.
|
||||||
|
- `ls` means **list**. It prints out all the files and directories immediately contained by the current directory:
|
||||||
|
- `123 abc` means that the current directory contains a file named `abc` with size `123`.
|
||||||
|
- `dir xyz` means that the current directory contains a directory named `xyz`.
|
||||||
|
|
||||||
|
Given the commands and output in the example above, you can determine that the filesystem looks visually like this:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
- / (dir)
|
||||||
|
- a (dir)
|
||||||
|
- e (dir)
|
||||||
|
- i (file, size=584)
|
||||||
|
- f (file, size=29116)
|
||||||
|
- g (file, size=2557)
|
||||||
|
- h.lst (file, size=62596)
|
||||||
|
- b.txt (file, size=14848514)
|
||||||
|
- c.dat (file, size=8504156)
|
||||||
|
- d (dir)
|
||||||
|
- j (file, size=4060174)
|
||||||
|
- d.log (file, size=8033020)
|
||||||
|
- d.ext (file, size=5626152)
|
||||||
|
- k (file, size=7214296)
|
||||||
|
```
|
||||||
|
|
||||||
|
Here, there are four directories: `/` (the outermost directory), `a` and `d` (which are in `/`), and `e` (which is in
|
||||||
|
`a`). These directories also contain files of various sizes.
|
||||||
|
|
||||||
|
Since the disk is full, your first step should probably be to find directories that are good candidates for deletion. To
|
||||||
|
do this, you need to determine the **total size** of each directory. The total size of a directory is the sum of the
|
||||||
|
sizes of the files it contains, directly or indirectly. (Directories themselves do not count as having any intrinsic
|
||||||
|
size.)
|
||||||
|
|
||||||
|
The total sizes of the directories above can be found as follows:
|
||||||
|
|
||||||
|
- The total size of directory `e` is **584** because it contains a single file `i` of size 584 and no other directories.
|
||||||
|
- The directory `a` has total size **94853** because it contains files `f` (size 29116), `g` (size 2557), and `h.lst` (
|
||||||
|
size 62596), plus file `i` indirectly (`a` contains `e` which contains `i`).
|
||||||
|
- Directory `d` has total size **24933642**.
|
||||||
|
- As the outermost directory, `/` contains every file. Its total size is **48381165**, the sum of the size of every
|
||||||
|
file.
|
||||||
|
|
||||||
|
To begin, find all of the directories with a total size of **at most 100000**, then calculate the sum of their total
|
||||||
|
sizes. In the example above, these directories are a and e; the sum of their total sizes is **95437** (94853 + 584). (As
|
||||||
|
in this example, this process can count files more than once!)
|
||||||
|
|
||||||
|
Find all of the directories with a total size of at most 100000. **What is the sum of the total sizes of those
|
||||||
|
directories?**
|
||||||
|
|
||||||
|
## Part Two
|
||||||
|
|
||||||
|
Now, you're ready to choose a directory to delete.
|
||||||
|
|
||||||
|
The total disk space available to the filesystem is `70000000`. To run the update, you need unused space of at least
|
||||||
|
`30000000`. You need to find a directory you can delete that will **free up enough space** to run the update.
|
||||||
|
|
||||||
|
In the example above, the total size of the outermost directory (and thus the total amount of used space) is `48381165`;
|
||||||
|
this means that the size of the **unused** space must currently be `21618835`, which isn't quite the `30000000` required
|
||||||
|
by the update. Therefore, the update still requires a directory with total size of at least `8381165` to be deleted
|
||||||
|
before it can run.
|
||||||
|
|
||||||
|
To achieve this, you have the following options:
|
||||||
|
|
||||||
|
- Delete directory `e`, which would increase unused space by `584`.
|
||||||
|
- Delete directory `a`, which would increase unused space by `94853`.
|
||||||
|
- Delete directory `d`, which would increase unused space by `24933642`.
|
||||||
|
- Delete directory `/`, which would increase unused space by `48381165`.
|
||||||
|
|
||||||
|
Directories `e` and `a` are both too small; deleting them would not free up enough space. However, directories `d`
|
||||||
|
and `/` are both big enough! Between these, choose the **smallest**: `d`, increasing unused space by **24933642**.
|
||||||
|
|
||||||
|
Find the smallest directory that, if deleted, would free up enough space on the filesystem to run the update.\
|
||||||
|
**What is the total size of that directory?**
|
||||||
0
day7/__init__.py
Normal file
0
day7/__init__.py
Normal file
967
day7/input.txt
Normal file
967
day7/input.txt
Normal file
|
|
@ -0,0 +1,967 @@
|
||||||
|
$ cd /
|
||||||
|
$ ls
|
||||||
|
dir fcqv
|
||||||
|
dir fcv
|
||||||
|
72939 hdpgfcwd
|
||||||
|
236918 jlncjqh.csz
|
||||||
|
dir jvwfwrg
|
||||||
|
dir tzwpllhq
|
||||||
|
dir vglf
|
||||||
|
28586 wzljr.zvp
|
||||||
|
$ cd fcqv
|
||||||
|
$ ls
|
||||||
|
dir fhg
|
||||||
|
277152 qldfrhm.qnr
|
||||||
|
269351 qsd
|
||||||
|
dir thbb
|
||||||
|
$ cd fhg
|
||||||
|
$ ls
|
||||||
|
dir jljrdvw
|
||||||
|
$ cd jljrdvw
|
||||||
|
$ ls
|
||||||
|
101940 vsvgjg.tpn
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd thbb
|
||||||
|
$ ls
|
||||||
|
144311 cchngzcc.lcd
|
||||||
|
178246 fbsj.wtl
|
||||||
|
48521 gfsqtssb.vtg
|
||||||
|
284713 jwl.hll
|
||||||
|
96717 wdqqqv.pcr
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd fcv
|
||||||
|
$ ls
|
||||||
|
dir ffhwwg
|
||||||
|
275505 fprcz.hrd
|
||||||
|
179689 jwn
|
||||||
|
69265 tfnws.drt
|
||||||
|
38365 twvt.dbs
|
||||||
|
dir vcqsrw
|
||||||
|
247592 zldbq
|
||||||
|
dir znzpm
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
dir hlqf
|
||||||
|
$ cd hlqf
|
||||||
|
$ ls
|
||||||
|
30443 vrdbrwp.dss
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd vcqsrw
|
||||||
|
$ ls
|
||||||
|
dir bzlnsjmv
|
||||||
|
dir rvbtnz
|
||||||
|
224487 slr
|
||||||
|
255340 vrdbrwp.dss
|
||||||
|
$ cd bzlnsjmv
|
||||||
|
$ ls
|
||||||
|
272548 qwqlzvzv
|
||||||
|
$ cd ..
|
||||||
|
$ cd rvbtnz
|
||||||
|
$ ls
|
||||||
|
165670 jwl.lhn
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd znzpm
|
||||||
|
$ ls
|
||||||
|
dir mjwnsw
|
||||||
|
$ cd mjwnsw
|
||||||
|
$ ls
|
||||||
|
219638 bzcb
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jvwfwrg
|
||||||
|
$ ls
|
||||||
|
dir ffhwwg
|
||||||
|
42104 hmphb.qvq
|
||||||
|
dir hzjpg
|
||||||
|
dir jwl
|
||||||
|
dir nmz
|
||||||
|
243217 qldfrhm.rws
|
||||||
|
dir tdjtv
|
||||||
|
dir wdn
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
179995 hcbf.dhw
|
||||||
|
176263 lgssjp.mnl
|
||||||
|
$ cd ..
|
||||||
|
$ cd hzjpg
|
||||||
|
$ ls
|
||||||
|
241535 ddlcslcs.zjh
|
||||||
|
dir ddrwfq
|
||||||
|
dir mqwww
|
||||||
|
29329 qwqlzvzv
|
||||||
|
91380 vrdbrwp.dss
|
||||||
|
dir wctwz
|
||||||
|
210633 wdqqqv.pcr
|
||||||
|
dir wlrmbtdg
|
||||||
|
172051 zldbq
|
||||||
|
$ cd ddrwfq
|
||||||
|
$ ls
|
||||||
|
11756 ffhwwg
|
||||||
|
$ cd ..
|
||||||
|
$ cd mqwww
|
||||||
|
$ ls
|
||||||
|
149750 wlfmbv.cgp
|
||||||
|
$ cd ..
|
||||||
|
$ cd wctwz
|
||||||
|
$ ls
|
||||||
|
277720 qldfrhm.bph
|
||||||
|
$ cd ..
|
||||||
|
$ cd wlrmbtdg
|
||||||
|
$ ls
|
||||||
|
14154 ffhwwg
|
||||||
|
dir hgdjv
|
||||||
|
dir qldfrhm
|
||||||
|
48920 qwqlzvzv
|
||||||
|
101228 wdqqqv.pcr
|
||||||
|
159676 zldbq
|
||||||
|
$ cd hgdjv
|
||||||
|
$ ls
|
||||||
|
dir hlw
|
||||||
|
$ cd hlw
|
||||||
|
$ ls
|
||||||
|
229687 cdzwfzww.wcv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qldfrhm
|
||||||
|
$ ls
|
||||||
|
254189 nfbp.gcg
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jwl
|
||||||
|
$ ls
|
||||||
|
277778 drtw
|
||||||
|
dir ghgf
|
||||||
|
dir gqlmq
|
||||||
|
163875 jwl.pmm
|
||||||
|
dir mjm
|
||||||
|
dir qgq
|
||||||
|
$ cd ghgf
|
||||||
|
$ ls
|
||||||
|
181540 zsgjptrm.thf
|
||||||
|
$ cd ..
|
||||||
|
$ cd gqlmq
|
||||||
|
$ ls
|
||||||
|
dir ffhwwg
|
||||||
|
283989 hzpwn
|
||||||
|
dir jwl
|
||||||
|
dir pqdqntr
|
||||||
|
62581 vrdbrwp.dss
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
242533 qwqlzvzv
|
||||||
|
21991 wdqqqv.pcr
|
||||||
|
$ cd ..
|
||||||
|
$ cd jwl
|
||||||
|
$ ls
|
||||||
|
179926 jfgbmb.qsd
|
||||||
|
dir zjv
|
||||||
|
$ cd zjv
|
||||||
|
$ ls
|
||||||
|
102693 ffhwwg.hrt
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd pqdqntr
|
||||||
|
$ ls
|
||||||
|
159376 nqwcsdmv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd mjm
|
||||||
|
$ ls
|
||||||
|
273410 hdbmpnfv
|
||||||
|
8169 qwqlzvzv
|
||||||
|
87728 tfgq.vbt
|
||||||
|
221237 vrdbrwp.dss
|
||||||
|
$ cd ..
|
||||||
|
$ cd qgq
|
||||||
|
$ ls
|
||||||
|
dir dgq
|
||||||
|
dir hlw
|
||||||
|
164971 jvwfwrg
|
||||||
|
dir jwl
|
||||||
|
158534 qftjvcz.pfv
|
||||||
|
251561 qzzpmh
|
||||||
|
282035 wsz
|
||||||
|
$ cd dgq
|
||||||
|
$ ls
|
||||||
|
dir ffhwwg
|
||||||
|
237291 nfqzn
|
||||||
|
70142 qfnrvmp.vbb
|
||||||
|
55607 zldbq
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
117790 sqhrdmd.thc
|
||||||
|
186465 tfctr.scc
|
||||||
|
236863 wdqqqv.pcr
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd hlw
|
||||||
|
$ ls
|
||||||
|
244567 wrnplfgg.pcw
|
||||||
|
$ cd ..
|
||||||
|
$ cd jwl
|
||||||
|
$ ls
|
||||||
|
105997 lpsg.jjl
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd nmz
|
||||||
|
$ ls
|
||||||
|
51802 qwqlzvzv
|
||||||
|
128617 zldbq
|
||||||
|
$ cd ..
|
||||||
|
$ cd tdjtv
|
||||||
|
$ ls
|
||||||
|
dir jvwfwrg
|
||||||
|
dir mdmwf
|
||||||
|
dir rlpbrq
|
||||||
|
$ cd jvwfwrg
|
||||||
|
$ ls
|
||||||
|
35406 wdqqqv.pcr
|
||||||
|
$ cd ..
|
||||||
|
$ cd mdmwf
|
||||||
|
$ ls
|
||||||
|
dir ffhwwg
|
||||||
|
15609 rdpwqw.pfv
|
||||||
|
205721 zldbq
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
117473 hdcv.cwj
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd rlpbrq
|
||||||
|
$ ls
|
||||||
|
120058 dgddvmt.fnv
|
||||||
|
194704 ffhwwg
|
||||||
|
256467 qwqlzvzv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd wdn
|
||||||
|
$ ls
|
||||||
|
170094 bzqsnv
|
||||||
|
dir gqmghw
|
||||||
|
150252 gwgz.fnf
|
||||||
|
243953 jfgbmb.qsd
|
||||||
|
123382 qwqlzvzv
|
||||||
|
96220 wpc.swm
|
||||||
|
dir ztqbhjr
|
||||||
|
$ cd gqmghw
|
||||||
|
$ ls
|
||||||
|
dir tlgbcrh
|
||||||
|
$ cd tlgbcrh
|
||||||
|
$ ls
|
||||||
|
281457 ztjhcrwf.ljf
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ztqbhjr
|
||||||
|
$ ls
|
||||||
|
271212 jfgbmb.qsd
|
||||||
|
dir nbhq
|
||||||
|
dir vfmmj
|
||||||
|
260079 vrdbrwp.dss
|
||||||
|
$ cd nbhq
|
||||||
|
$ ls
|
||||||
|
179096 hlw.hrh
|
||||||
|
150184 wdqqqv.pcr
|
||||||
|
$ cd ..
|
||||||
|
$ cd vfmmj
|
||||||
|
$ ls
|
||||||
|
57445 hlw.pfb
|
||||||
|
40329 qldfrhm
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tzwpllhq
|
||||||
|
$ ls
|
||||||
|
33596 cmwwd
|
||||||
|
16963 hlw.jrw
|
||||||
|
161107 hlw.npq
|
||||||
|
dir jwv
|
||||||
|
152431 nqf.jjg
|
||||||
|
dir qldfrhm
|
||||||
|
dir swmwvl
|
||||||
|
dir wzpth
|
||||||
|
$ cd jwv
|
||||||
|
$ ls
|
||||||
|
dir bgswd
|
||||||
|
188795 hlw
|
||||||
|
dir jvwfwrg
|
||||||
|
dir jwl
|
||||||
|
dir mbcb
|
||||||
|
dir qldfrhm
|
||||||
|
30173 qwqlzvzv
|
||||||
|
193577 zldbq
|
||||||
|
$ cd bgswd
|
||||||
|
$ ls
|
||||||
|
dir hdgt
|
||||||
|
216966 ldbg.dzh
|
||||||
|
$ cd hdgt
|
||||||
|
$ ls
|
||||||
|
70441 fnv.bpl
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jvwfwrg
|
||||||
|
$ ls
|
||||||
|
dir mctsws
|
||||||
|
69374 qldfrhm
|
||||||
|
$ cd mctsws
|
||||||
|
$ ls
|
||||||
|
257337 qsgvbj
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jwl
|
||||||
|
$ ls
|
||||||
|
161061 ffhwwg
|
||||||
|
$ cd ..
|
||||||
|
$ cd mbcb
|
||||||
|
$ ls
|
||||||
|
dir fbhhq
|
||||||
|
dir rgjwh
|
||||||
|
$ cd fbhhq
|
||||||
|
$ ls
|
||||||
|
dir vnn
|
||||||
|
$ cd vnn
|
||||||
|
$ ls
|
||||||
|
55629 cthtjm.wbt
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd rgjwh
|
||||||
|
$ ls
|
||||||
|
7826 wrhpmqd.fvw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qldfrhm
|
||||||
|
$ ls
|
||||||
|
14471 hlw.lwh
|
||||||
|
163165 jnpgzcmt
|
||||||
|
10880 qwqlzvzv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qldfrhm
|
||||||
|
$ ls
|
||||||
|
dir ffhwwg
|
||||||
|
dir jwl
|
||||||
|
15164 ldmm
|
||||||
|
188544 pwg.zsf
|
||||||
|
255566 qjlggt
|
||||||
|
dir tbngqwb
|
||||||
|
59898 zldbq
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
218749 ffhwwg.ztr
|
||||||
|
$ cd ..
|
||||||
|
$ cd jwl
|
||||||
|
$ ls
|
||||||
|
40245 cbhtl.frv
|
||||||
|
268818 fmwvvg
|
||||||
|
161866 nqp
|
||||||
|
dir nsvjcpc
|
||||||
|
dir nwdvblg
|
||||||
|
171528 qldfrhm
|
||||||
|
dir qqmb
|
||||||
|
282266 wdqqqv.pcr
|
||||||
|
$ cd nsvjcpc
|
||||||
|
$ ls
|
||||||
|
43660 wtnhh.zgw
|
||||||
|
$ cd ..
|
||||||
|
$ cd nwdvblg
|
||||||
|
$ ls
|
||||||
|
dir cltj
|
||||||
|
dir fds
|
||||||
|
$ cd cltj
|
||||||
|
$ ls
|
||||||
|
86970 dlzsw.whj
|
||||||
|
111805 qwqlzvzv
|
||||||
|
247438 zldbq
|
||||||
|
$ cd ..
|
||||||
|
$ cd fds
|
||||||
|
$ ls
|
||||||
|
49560 fsrvhv.lhd
|
||||||
|
234970 jvwfwrg.pfd
|
||||||
|
133376 qgbmc
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qqmb
|
||||||
|
$ ls
|
||||||
|
139542 qzm.jjz
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tbngqwb
|
||||||
|
$ ls
|
||||||
|
dir jwl
|
||||||
|
273706 vcfmt.jqv
|
||||||
|
76731 wdqqqv.pcr
|
||||||
|
$ cd jwl
|
||||||
|
$ ls
|
||||||
|
45969 ltvvm
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd swmwvl
|
||||||
|
$ ls
|
||||||
|
32187 dzn.rnz
|
||||||
|
dir gsj
|
||||||
|
83763 jfgbmb.qsd
|
||||||
|
93113 vrdbrwp.dss
|
||||||
|
$ cd gsj
|
||||||
|
$ ls
|
||||||
|
dir fpzj
|
||||||
|
152202 wntpsp.tbf
|
||||||
|
$ cd fpzj
|
||||||
|
$ ls
|
||||||
|
83665 btwqdhnf.qwz
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd wzpth
|
||||||
|
$ ls
|
||||||
|
dir snhss
|
||||||
|
$ cd snhss
|
||||||
|
$ ls
|
||||||
|
dir hlw
|
||||||
|
$ cd hlw
|
||||||
|
$ ls
|
||||||
|
15123 qwqlzvzv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd vglf
|
||||||
|
$ ls
|
||||||
|
dir gdjmt
|
||||||
|
dir hnnw
|
||||||
|
dir htqzfcc
|
||||||
|
dir nqf
|
||||||
|
269558 qldfrhm
|
||||||
|
116732 rqg.zbf
|
||||||
|
dir tvmqzwmn
|
||||||
|
72822 vrdbrwp.dss
|
||||||
|
$ cd gdjmt
|
||||||
|
$ ls
|
||||||
|
214742 jfgbmb.qsd
|
||||||
|
$ cd ..
|
||||||
|
$ cd hnnw
|
||||||
|
$ ls
|
||||||
|
dir ffhwwg
|
||||||
|
217384 jfgbmb.qsd
|
||||||
|
153385 jvwfwrg
|
||||||
|
dir jwl
|
||||||
|
dir shdt
|
||||||
|
143935 vrdbrwp.dss
|
||||||
|
90319 zldbq
|
||||||
|
101043 zqvwfhrz.rfz
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
dir dsqwrdnq
|
||||||
|
261158 jvwfwrg.plf
|
||||||
|
$ cd dsqwrdnq
|
||||||
|
$ ls
|
||||||
|
129823 pngjr.rpg
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jwl
|
||||||
|
$ ls
|
||||||
|
dir bzq
|
||||||
|
215828 hpqtdllh
|
||||||
|
dir jjmndb
|
||||||
|
dir pjzqjbd
|
||||||
|
dir pmslv
|
||||||
|
dir smfg
|
||||||
|
dir wmjjwh
|
||||||
|
$ cd bzq
|
||||||
|
$ ls
|
||||||
|
199534 jvwfwrg.tnt
|
||||||
|
$ cd ..
|
||||||
|
$ cd jjmndb
|
||||||
|
$ ls
|
||||||
|
dir cbfdqtc
|
||||||
|
dir gnjlnz
|
||||||
|
dir hlw
|
||||||
|
201443 lgdvsvc.wvp
|
||||||
|
dir lzlwstch
|
||||||
|
175514 nlvh.rjc
|
||||||
|
dir qldfrhm
|
||||||
|
144450 qwqlzvzv
|
||||||
|
dir ssh
|
||||||
|
dir tbdhtqn
|
||||||
|
150014 ttp.zqf
|
||||||
|
240619 wdqqqv.pcr
|
||||||
|
$ cd cbfdqtc
|
||||||
|
$ ls
|
||||||
|
39125 ffhwwg.fpg
|
||||||
|
264178 jpnslr.qqt
|
||||||
|
180897 wjmfvtvn
|
||||||
|
$ cd ..
|
||||||
|
$ cd gnjlnz
|
||||||
|
$ ls
|
||||||
|
217994 jwl.ddh
|
||||||
|
$ cd ..
|
||||||
|
$ cd hlw
|
||||||
|
$ ls
|
||||||
|
dir chgwjl
|
||||||
|
dir dsz
|
||||||
|
165192 ffhwwg.qfc
|
||||||
|
40771 gzph.mvb
|
||||||
|
46495 jvwfwrg
|
||||||
|
122203 lhgfb.blq
|
||||||
|
175167 qwqlzvzv
|
||||||
|
dir ttr
|
||||||
|
$ cd chgwjl
|
||||||
|
$ ls
|
||||||
|
284909 jwl.qqp
|
||||||
|
$ cd ..
|
||||||
|
$ cd dsz
|
||||||
|
$ ls
|
||||||
|
47411 bsshfjl.wbd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ttr
|
||||||
|
$ ls
|
||||||
|
dir fgbgl
|
||||||
|
dir qsflswrq
|
||||||
|
5609 sfz
|
||||||
|
250311 vrdbrwp.dss
|
||||||
|
$ cd fgbgl
|
||||||
|
$ ls
|
||||||
|
203288 scclvct
|
||||||
|
$ cd ..
|
||||||
|
$ cd qsflswrq
|
||||||
|
$ ls
|
||||||
|
222611 ffhwwg
|
||||||
|
143339 thrwtw.nsg
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd lzlwstch
|
||||||
|
$ ls
|
||||||
|
dir ffhwwg
|
||||||
|
dir hwmzp
|
||||||
|
dir jvwfwrg
|
||||||
|
dir ndpbn
|
||||||
|
dir qllzhd
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
51165 hlw.hdn
|
||||||
|
$ cd ..
|
||||||
|
$ cd hwmzp
|
||||||
|
$ ls
|
||||||
|
54571 qwqlzvzv
|
||||||
|
$ cd ..
|
||||||
|
$ cd jvwfwrg
|
||||||
|
$ ls
|
||||||
|
130055 qldfrhm
|
||||||
|
$ cd ..
|
||||||
|
$ cd ndpbn
|
||||||
|
$ ls
|
||||||
|
160215 hptz.zms
|
||||||
|
$ cd ..
|
||||||
|
$ cd qllzhd
|
||||||
|
$ ls
|
||||||
|
41306 hwnllpw.vjp
|
||||||
|
162845 vrdbrwp.dss
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qldfrhm
|
||||||
|
$ ls
|
||||||
|
dir bwcg
|
||||||
|
dir ffhwwg
|
||||||
|
$ cd bwcg
|
||||||
|
$ ls
|
||||||
|
181254 wpzpd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
240618 cdmlz.wsf
|
||||||
|
dir ffhwwg
|
||||||
|
201345 jfww
|
||||||
|
128709 jwl.gwc
|
||||||
|
284209 pswsrf.wwt
|
||||||
|
dir qldfrhm
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
13278 wcc.qmr
|
||||||
|
165094 wdqqqv.pcr
|
||||||
|
$ cd ..
|
||||||
|
$ cd qldfrhm
|
||||||
|
$ ls
|
||||||
|
104797 ccgfmcnc.jrg
|
||||||
|
273814 hlw.pnt
|
||||||
|
182685 jvwfwrg.szl
|
||||||
|
190595 stjhgqd
|
||||||
|
dir stpvb
|
||||||
|
105499 vbqw.vwc
|
||||||
|
dir zldj
|
||||||
|
$ cd stpvb
|
||||||
|
$ ls
|
||||||
|
221672 vrdbrwp.dss
|
||||||
|
$ cd ..
|
||||||
|
$ cd zldj
|
||||||
|
$ ls
|
||||||
|
dir jwl
|
||||||
|
$ cd jwl
|
||||||
|
$ ls
|
||||||
|
130858 jhqhfrbp.nff
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ssh
|
||||||
|
$ ls
|
||||||
|
65814 jfgbmb.qsd
|
||||||
|
dir jvwfwrg
|
||||||
|
70744 zqhftjbs.jwd
|
||||||
|
$ cd jvwfwrg
|
||||||
|
$ ls
|
||||||
|
212356 jfgf.szv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tbdhtqn
|
||||||
|
$ ls
|
||||||
|
37228 ffhwwg.vvc
|
||||||
|
69069 nrtgtbmp.qlv
|
||||||
|
dir rmrwm
|
||||||
|
166294 zldbq
|
||||||
|
$ cd rmrwm
|
||||||
|
$ ls
|
||||||
|
118846 qldfrhm.hns
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd pjzqjbd
|
||||||
|
$ ls
|
||||||
|
259092 cqlfdc.qdp
|
||||||
|
89322 nmpvmdlp
|
||||||
|
$ cd ..
|
||||||
|
$ cd pmslv
|
||||||
|
$ ls
|
||||||
|
82637 jwl.lhz
|
||||||
|
$ cd ..
|
||||||
|
$ cd smfg
|
||||||
|
$ ls
|
||||||
|
dir gfbpcr
|
||||||
|
dir sghtlzqv
|
||||||
|
$ cd gfbpcr
|
||||||
|
$ ls
|
||||||
|
23958 hnpgr.htf
|
||||||
|
$ cd ..
|
||||||
|
$ cd sghtlzqv
|
||||||
|
$ ls
|
||||||
|
275943 jfgbmb.qsd
|
||||||
|
149592 qwqlzvzv
|
||||||
|
285215 sgptfc.msd
|
||||||
|
179076 zldbq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd wmjjwh
|
||||||
|
$ ls
|
||||||
|
198333 jfgbmb.qsd
|
||||||
|
59553 qwqlzvzv
|
||||||
|
91883 wdqqqv.pcr
|
||||||
|
7054 zldbq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd shdt
|
||||||
|
$ ls
|
||||||
|
27781 hlw.vcl
|
||||||
|
255994 jpd
|
||||||
|
dir mrgppm
|
||||||
|
dir mwvgmjmb
|
||||||
|
dir nsbrbcq
|
||||||
|
263384 rbwbqf.qjc
|
||||||
|
251640 tgr.rdc
|
||||||
|
16959 zldbq
|
||||||
|
$ cd mrgppm
|
||||||
|
$ ls
|
||||||
|
dir ghzhzzp
|
||||||
|
dir jwl
|
||||||
|
dir tgpm
|
||||||
|
$ cd ghzhzzp
|
||||||
|
$ ls
|
||||||
|
dir bqplqq
|
||||||
|
dir vtqgwsj
|
||||||
|
$ cd bqplqq
|
||||||
|
$ ls
|
||||||
|
234131 lntldzhp
|
||||||
|
$ cd ..
|
||||||
|
$ cd vtqgwsj
|
||||||
|
$ ls
|
||||||
|
260109 qrzrfzr
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jwl
|
||||||
|
$ ls
|
||||||
|
112258 ffhwwg.wvp
|
||||||
|
$ cd ..
|
||||||
|
$ cd tgpm
|
||||||
|
$ ls
|
||||||
|
dir hlw
|
||||||
|
167788 zldbq
|
||||||
|
$ cd hlw
|
||||||
|
$ ls
|
||||||
|
70960 qwqlzvzv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd mwvgmjmb
|
||||||
|
$ ls
|
||||||
|
142087 pvpw.wtv
|
||||||
|
$ cd ..
|
||||||
|
$ cd nsbrbcq
|
||||||
|
$ ls
|
||||||
|
dir hljjp
|
||||||
|
$ cd hljjp
|
||||||
|
$ ls
|
||||||
|
125853 jfgbmb.qsd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd htqzfcc
|
||||||
|
$ ls
|
||||||
|
dir cqs
|
||||||
|
dir dsnpcnv
|
||||||
|
dir ffhwwg
|
||||||
|
90664 jfgbmb.qsd
|
||||||
|
92316 lsjtfbvt
|
||||||
|
dir mftm
|
||||||
|
dir mmgn
|
||||||
|
dir qqvzvw
|
||||||
|
166400 qwqlzvzv
|
||||||
|
dir vtf
|
||||||
|
dir wrbwbdt
|
||||||
|
$ cd cqs
|
||||||
|
$ ls
|
||||||
|
232548 nnv.wph
|
||||||
|
35933 rwqj.crp
|
||||||
|
$ cd ..
|
||||||
|
$ cd dsnpcnv
|
||||||
|
$ ls
|
||||||
|
115805 ffhwwg.tvt
|
||||||
|
$ cd ..
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
dir qldfrhm
|
||||||
|
dir wjj
|
||||||
|
$ cd qldfrhm
|
||||||
|
$ ls
|
||||||
|
221567 qwqlzvzv
|
||||||
|
dir rsztzjcm
|
||||||
|
33248 vrdbrwp.dss
|
||||||
|
114731 wdqqqv.pcr
|
||||||
|
276521 zldbq
|
||||||
|
$ cd rsztzjcm
|
||||||
|
$ ls
|
||||||
|
268313 frdpwjsh.wsh
|
||||||
|
283644 jfgbmb.qsd
|
||||||
|
dir jhdcdm
|
||||||
|
84130 jvwfwrg.vsd
|
||||||
|
31286 jwl.rth
|
||||||
|
$ cd jhdcdm
|
||||||
|
$ ls
|
||||||
|
212461 qwqlzvzv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd wjj
|
||||||
|
$ ls
|
||||||
|
89758 jvwfwrg.mmg
|
||||||
|
163105 vrdbrwp.dss
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd mftm
|
||||||
|
$ ls
|
||||||
|
278389 bbth.bht
|
||||||
|
$ cd ..
|
||||||
|
$ cd mmgn
|
||||||
|
$ ls
|
||||||
|
28122 zldbq
|
||||||
|
$ cd ..
|
||||||
|
$ cd qqvzvw
|
||||||
|
$ ls
|
||||||
|
dir mjw
|
||||||
|
dir qldfrhm
|
||||||
|
dir zbmpdwtc
|
||||||
|
$ cd mjw
|
||||||
|
$ ls
|
||||||
|
dir cvn
|
||||||
|
dir dlgzc
|
||||||
|
10631 jfgbmb.qsd
|
||||||
|
206351 qldfrhm.hgf
|
||||||
|
136824 qwqlzvzv
|
||||||
|
116870 qwzczrcf
|
||||||
|
$ cd cvn
|
||||||
|
$ ls
|
||||||
|
146142 ggtd.jlp
|
||||||
|
$ cd ..
|
||||||
|
$ cd dlgzc
|
||||||
|
$ ls
|
||||||
|
130120 wpc
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qldfrhm
|
||||||
|
$ ls
|
||||||
|
260238 bpf.jbv
|
||||||
|
270180 cwdnf
|
||||||
|
dir czwwzj
|
||||||
|
50884 jvwfwrg.fmq
|
||||||
|
dir mjpzgbww
|
||||||
|
252028 qtdzw.bmb
|
||||||
|
dir rzqj
|
||||||
|
$ cd czwwzj
|
||||||
|
$ ls
|
||||||
|
dir cpwwqrph
|
||||||
|
19863 jfgbmb.qsd
|
||||||
|
dir snl
|
||||||
|
83915 vrdbrwp.dss
|
||||||
|
$ cd cpwwqrph
|
||||||
|
$ ls
|
||||||
|
dir jvwfwrg
|
||||||
|
$ cd jvwfwrg
|
||||||
|
$ ls
|
||||||
|
176717 jfgbmb.qsd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd snl
|
||||||
|
$ ls
|
||||||
|
dir btngcvt
|
||||||
|
dir ffhwwg
|
||||||
|
53428 gchwbc.jtf
|
||||||
|
220232 vrdbrwp.dss
|
||||||
|
$ cd btngcvt
|
||||||
|
$ ls
|
||||||
|
172859 jwl.smp
|
||||||
|
dir tgcqmbrn
|
||||||
|
$ cd tgcqmbrn
|
||||||
|
$ ls
|
||||||
|
149905 jvwfwrg
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
145399 qldfrhm.hbg
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd mjpzgbww
|
||||||
|
$ ls
|
||||||
|
52355 bwzwfjtc.rmn
|
||||||
|
5856 ffhwwg.tnh
|
||||||
|
146211 scbdnlgl
|
||||||
|
$ cd ..
|
||||||
|
$ cd rzqj
|
||||||
|
$ ls
|
||||||
|
dir jmjszd
|
||||||
|
134481 vgr
|
||||||
|
187382 vrdbrwp.dss
|
||||||
|
$ cd jmjszd
|
||||||
|
$ ls
|
||||||
|
81971 qldfrhm
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd zbmpdwtc
|
||||||
|
$ ls
|
||||||
|
193744 jvntrn
|
||||||
|
231403 qwqlzvzv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd vtf
|
||||||
|
$ ls
|
||||||
|
2562 vzngcbq
|
||||||
|
$ cd ..
|
||||||
|
$ cd wrbwbdt
|
||||||
|
$ ls
|
||||||
|
dir brzwbmc
|
||||||
|
29261 hlw
|
||||||
|
$ cd brzwbmc
|
||||||
|
$ ls
|
||||||
|
dir ggh
|
||||||
|
174287 jfgbmb.qsd
|
||||||
|
dir jwl
|
||||||
|
247329 mpdz
|
||||||
|
dir thm
|
||||||
|
83546 vrdbrwp.dss
|
||||||
|
231269 wmwhhhmn.rms
|
||||||
|
$ cd ggh
|
||||||
|
$ ls
|
||||||
|
dir cqrmsltg
|
||||||
|
18724 mrlwwdv.ffb
|
||||||
|
$ cd cqrmsltg
|
||||||
|
$ ls
|
||||||
|
dir ffhwwg
|
||||||
|
dir jvwfwrg
|
||||||
|
41263 pmrmh.zmn
|
||||||
|
dir tcjr
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
dir hlw
|
||||||
|
$ cd hlw
|
||||||
|
$ ls
|
||||||
|
139875 ljnfchr.frr
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jvwfwrg
|
||||||
|
$ ls
|
||||||
|
141078 zldbq
|
||||||
|
$ cd ..
|
||||||
|
$ cd tcjr
|
||||||
|
$ ls
|
||||||
|
dir hnngpdc
|
||||||
|
153685 jwl
|
||||||
|
93502 nwlsf.dbq
|
||||||
|
226658 qwqlzvzv
|
||||||
|
$ cd hnngpdc
|
||||||
|
$ ls
|
||||||
|
243203 gchtc.sst
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jwl
|
||||||
|
$ ls
|
||||||
|
62087 hfp.cfv
|
||||||
|
$ cd ..
|
||||||
|
$ cd thm
|
||||||
|
$ ls
|
||||||
|
228008 dfqgcd.frc
|
||||||
|
167850 glblcw
|
||||||
|
dir jvwfwrg
|
||||||
|
$ cd jvwfwrg
|
||||||
|
$ ls
|
||||||
|
dir ffhwwg
|
||||||
|
dir jgvf
|
||||||
|
170488 qmc.vgf
|
||||||
|
$ cd ffhwwg
|
||||||
|
$ ls
|
||||||
|
258985 jfgbmb.qsd
|
||||||
|
$ cd ..
|
||||||
|
$ cd jgvf
|
||||||
|
$ ls
|
||||||
|
150671 rdplqftl
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd nqf
|
||||||
|
$ ls
|
||||||
|
dir rglrpqd
|
||||||
|
$ cd rglrpqd
|
||||||
|
$ ls
|
||||||
|
276785 nnbs.dhr
|
||||||
|
224128 qwqlzvzv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tvmqzwmn
|
||||||
|
$ ls
|
||||||
|
47655 jfgbmb.qsd
|
||||||
|
233646 qwqlzvzv
|
||||||
|
237245 rqfp
|
||||||
|
185131 whntfvm.sfz
|
||||||
115
day7/main.py
Normal file
115
day7/main.py
Normal file
|
|
@ -0,0 +1,115 @@
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
from typing import Self
|
||||||
|
|
||||||
|
from common.file import read_data
|
||||||
|
|
||||||
|
DIRECTORY = "directory"
|
||||||
|
FILE = "file"
|
||||||
|
|
||||||
|
test_data = [
|
||||||
|
"$ 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",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Node:
|
||||||
|
node_type: str
|
||||||
|
name: str
|
||||||
|
_size: int = 0
|
||||||
|
children: list[Self] = field(default_factory=list)
|
||||||
|
parent: Self | None = None
|
||||||
|
|
||||||
|
def add(self, leaf: Self):
|
||||||
|
leaf.parent = self
|
||||||
|
self.children.append(leaf)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def size(self) -> int:
|
||||||
|
if self.node_type == DIRECTORY:
|
||||||
|
self.size = sum(child.size for child in self.children)
|
||||||
|
return self._size
|
||||||
|
|
||||||
|
@size.setter
|
||||||
|
def size(self, value: int):
|
||||||
|
self._size = value
|
||||||
|
|
||||||
|
|
||||||
|
def new_leaf(command: str) -> Node:
|
||||||
|
a, b = command.split(" ")
|
||||||
|
|
||||||
|
if a == "dir":
|
||||||
|
node_type = DIRECTORY
|
||||||
|
name = b
|
||||||
|
size = 0
|
||||||
|
else:
|
||||||
|
node_type = FILE
|
||||||
|
name = b
|
||||||
|
size = int(a)
|
||||||
|
|
||||||
|
node = Node(node_type=node_type, name=name)
|
||||||
|
node.size = size
|
||||||
|
return node
|
||||||
|
|
||||||
|
|
||||||
|
def move_to(tree: Node, directory: str) -> Node:
|
||||||
|
if directory == "..":
|
||||||
|
return tree.parent
|
||||||
|
return [node for node in tree.children if node.name == directory][0]
|
||||||
|
|
||||||
|
|
||||||
|
def build_tree(data: list[str]) -> int:
|
||||||
|
root = Node(node_type=DIRECTORY, name="/")
|
||||||
|
current = root
|
||||||
|
|
||||||
|
directories = []
|
||||||
|
|
||||||
|
i = 1
|
||||||
|
while i < len(data[1:]):
|
||||||
|
if "$ cd" in data[i]:
|
||||||
|
_, _, directory = data[i].split(" ")
|
||||||
|
current = move_to(current, directory)
|
||||||
|
i += 1
|
||||||
|
if "$ ls" in data[i]:
|
||||||
|
i += 1
|
||||||
|
while i <= len(data[1:]) and data[i][0] != "$":
|
||||||
|
leaf = new_leaf(data[i])
|
||||||
|
if leaf.node_type == DIRECTORY:
|
||||||
|
directories.append(leaf)
|
||||||
|
current.add(leaf)
|
||||||
|
i += 1
|
||||||
|
return sum(directory.size for directory in directories if directory.size < 100_000)
|
||||||
|
|
||||||
|
|
||||||
|
def total_files_size(data: list[str]) -> int:
|
||||||
|
return build_tree(data)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
dataset = read_data()
|
||||||
|
|
||||||
|
res = total_files_size(test_data)
|
||||||
|
assert res == 95437, f"{res} is not the right value, want 95437"
|
||||||
|
|
||||||
|
print(total_files_size(dataset))
|
||||||
Loading…
Reference in a new issue