summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--day7/__init__.py181
-rw-r--r--day7/example.txt23
-rw-r--r--day7/input.txt1079
3 files changed, 1283 insertions, 0 deletions
diff --git a/day7/__init__.py b/day7/__init__.py
new file mode 100644
index 0000000..279201a
--- /dev/null
+++ b/day7/__init__.py
@@ -0,0 +1,181 @@
1# -*- coding: utf-8 -*-
2from abc import ABC
3from dataclasses import dataclass, field
4from enum import Enum
5from typing import Set, List, Optional, Tuple, Dict, Iterator, Any
6
7from aoc import BaseAssignment
8
9
10class Action(Enum):
11 ls = "ls"
12 cd = "cd"
13
14
15@dataclass(kw_only=True)
16class Command:
17 action: Tuple[Action, List[str]]
18 output: Optional[List[str]]
19
20 @classmethod
21 def from_input(cls, input: str) -> "Command":
22 action, *args = input[2:].split(" ")
23
24 return Command(action=(Action(action), args), output=[])
25
26
27@dataclass(kw_only=True)
28class Inode(ABC):
29 name: str
30 parent: "Folder" = None
31 size: int = NotImplemented
32
33
34@dataclass(kw_only=True)
35class Folder(Inode):
36 children: Dict[str, Inode] = field(default_factory=dict)
37
38 @property
39 def size(self) -> int:
40 return sum([inode.size for inode in self.children.values()])
41
42 @size.setter
43 def size(self, value: int):
44 pass
45
46 def __iter__(self):
47 yield self
48
49 for inode in self.children.values():
50 if isinstance(inode, Folder):
51 for item in iter(inode):
52 yield item
53 else:
54 yield inode
55
56
57@dataclass(kw_only=True)
58class File(Inode):
59 pass
60
61
62@dataclass
63class FileSystem:
64 current: Folder = None
65 root: Folder = field(default_factory=lambda: Folder(name="/"))
66
67 capacity = 70000000
68
69 @classmethod
70 def from_commands(cls, commands: List[Command]) -> "FileSystem":
71 file_system = cls()
72
73 for command in commands:
74 file_system.parse_command(command)
75
76 return file_system
77
78 def __post_init__(self):
79 self.current = self.root
80
81 def parse_command(self, command: Command):
82 match command.action:
83 case [Action.ls, _]:
84 self.create_inodes(command.output or [])
85 case [Action.cd, arguments]:
86 self.change_directory(*arguments)
87
88 def create_inodes(self, inodes: List[str]):
89 for item in inodes:
90 size, name = item.split(" ")
91
92 inode = (
93 Folder(name=name, parent=self.current)
94 if size == "dir"
95 else File(name=name, parent=self.current, size=int(size))
96 )
97
98 if name in self.current.children:
99 raise Exception(f"File/Folder already exists {name}")
100
101 self.current.children[name] = inode
102
103 def change_directory(self, name: str):
104 match name:
105 case "..":
106 new_dir = self.current.parent
107 case "/":
108 new_dir = self.root
109 case name:
110 new_dir = self.current.children.get(name)
111
112 if new_dir is None or isinstance(new_dir, File):
113 raise Exception(f"No such folder {name}")
114
115 self.current = new_dir
116
117 def __iter__(self):
118 return iter(self.root)
119
120 @property
121 def free_space(self):
122 return self.capacity - self.root.size
123
124
125class Assignment(BaseAssignment, ABC):
126 @staticmethod
127 def parse_terminal_output(output: Iterator[str]) -> List[Command]:
128 commands = []
129 command = None
130
131 for item in output:
132 if item.startswith("$"):
133 if command is not None:
134 commands.append(command)
135
136 command = Command.from_input(item)
137 else:
138 command.output.append(item)
139
140 if command is not None:
141 commands.append(command)
142
143 return commands
144
145
146class AssignmentOne(Assignment):
147 example_result = 95437
148
149 def run(self, input: Iterator) -> Any:
150 commands = self.parse_terminal_output(input)
151 file_system = FileSystem.from_commands(commands)
152
153 items = [
154 inode.size
155 for inode in file_system
156 if isinstance(inode, Folder) and inode.name != "/" and inode.size <= 100000
157 ]
158
159 return sum(items)
160
161
162class AssignmentTwo(Assignment):
163 example_result = 24933642
164
165 def run(self, input: Iterator) -> Any:
166 commands = self.parse_terminal_output(input)
167 file_system = FileSystem.from_commands(commands)
168
169 update_size = 30000000
170 space_to_free = update_size - file_system.free_space
171
172 eligible_for_deletion = sorted(
173 [
174 inode
175 for inode in file_system
176 if isinstance(inode, Folder) and inode.size >= space_to_free
177 ],
178 key=lambda node: node.size,
179 )
180
181 return eligible_for_deletion[0].size
diff --git a/day7/example.txt b/day7/example.txt
new file mode 100644
index 0000000..09a921e
--- /dev/null
+++ b/day7/example.txt
@@ -0,0 +1,23 @@
1$ cd /
2$ ls
3dir a
414848514 b.txt
58504156 c.dat
6dir d
7$ cd a
8$ ls
9dir e
1029116 f
112557 g
1262596 h.lst
13$ cd e
14$ ls
15584 i
16$ cd ..
17$ cd ..
18$ cd d
19$ ls
204060174 j
218033020 d.log
225626152 d.ext
237214296 k
diff --git a/day7/input.txt b/day7/input.txt
new file mode 100644
index 0000000..8f22e2f
--- /dev/null
+++ b/day7/input.txt
@@ -0,0 +1,1079 @@
1$ cd /
2$ ls
3dir dpbwg
4dir dvwfscw
5dir hccpl
6dir jsgbg
7dir lhjmzsl
863532 mwvbpw.mmg
9239480 npj
10dir pngs
11dir qhs
12303649 shvgmwn.vhv
13236905 sjrrgd.phh
14dir sntcp
15dir sqs
16$ cd dpbwg
17$ ls
18dir dgh
19100731 dpbwg
20dir rpwnv
21$ cd dgh
22$ ls
23197049 lhjmzsl.hzj
24$ cd ..
25$ cd rpwnv
26$ ls
2710702 qsgv.fmf
28$ cd ..
29$ cd ..
30$ cd dvwfscw
31$ ls
32dir bvg
33dir fbfjs
34115450 gjftb.mgd
35dir gsmnprgz
36dir hdwdcvv
37dir mhjtrlqz
3875437 qsctddrw
39171722 qsgv.zqz
40$ cd bvg
41$ ls
4256335 cgtzb.szt
43139481 shvgmwn.vhv
44255200 wzqlgr.mhl
45$ cd ..
46$ cd fbfjs
47$ ls
48252977 hmcj
49256083 mbgfn.pmh
50dir qsgv
51$ cd qsgv
52$ ls
53271506 dchsdfz.bbg
54202650 hmcj
5532623 lqgmfcp
5657614 mgp.fbn
57220895 qwzqrrq.wjf
58$ cd ..
59$ cd ..
60$ cd gsmnprgz
61$ ls
62dir dzcsldzw
63dir hrjmfd
64dir lcwv
65dir sdp
6662355 zrncdmd.lmj
67$ cd dzcsldzw
68$ ls
69dir hmcj
70$ cd hmcj
71$ ls
72151947 hgtzldbg
73$ cd ..
74$ cd ..
75$ cd hrjmfd
76$ ls
77dir drjlhbqf
7865599 npj
79$ cd drjlhbqf
80$ ls
81263623 hzfmzs.mlj
8213866 npj
83173713 wtnf.qps
84$ cd ..
85$ cd ..
86$ cd lcwv
87$ ls
8844150 hmcj.lds
89200694 mpbb
90$ cd ..
91$ cd sdp
92$ ls
93dir gcwjj
94dir qzdczvwn
95$ cd gcwjj
96$ ls
97149603 qsgv.srr
98$ cd ..
99$ cd qzdczvwn
100$ ls
101dir gnvbm
102291187 hmcj.rgm
103dir msdt
104dir mwvbpw
105dir shpr
106$ cd gnvbm
107$ ls
108259516 dpbwg
109120868 mpbb
110dir vqrcd
111$ cd vqrcd
112$ ls
113306804 fqqg
11434290 mtctcdgd.nmb
115$ cd ..
116$ cd ..
117$ cd msdt
118$ ls
119168438 mpbb
12067435 nbqcrdjs
121$ cd ..
122$ cd mwvbpw
123$ ls
124dir btzqzvbl
125308719 npj
126$ cd btzqzvbl
127$ ls
128177311 bdnrf.jtw
129122356 qwhmd.vcd
130169153 vzzzccg.hlb
131$ cd ..
132$ cd ..
133$ cd shpr
134$ ls
135290591 nblzc.nmp
136$ cd ..
137$ cd ..
138$ cd ..
139$ cd ..
140$ cd hdwdcvv
141$ ls
14296864 hmcj.tjn
143$ cd ..
144$ cd mhjtrlqz
145$ ls
146dir bzrbsfjp
147238772 fpggqqj
148dir hqzgs
14920155 shvgmwn.vhv
150$ cd bzrbsfjp
151$ ls
152313691 fnscbhfc
15317630 llwfdzgg.bsp
154dir lthr
155$ cd lthr
156$ ls
157237053 bhbbzt.bmt
158$ cd ..
159$ cd ..
160$ cd hqzgs
161$ ls
162295258 gllsgr.nnz
16370743 ptpqd
164dir rnmsdpmj
165205022 rpqh.rpn
166158287 tsm.tdq
167154025 wmfwr.bcm
168$ cd rnmsdpmj
169$ ls
170218043 dpbwg.mls
171149072 mbgfn.pmh
17289388 mwvbpw.qfm
17357207 rszcvm.mqc
174$ cd ..
175$ cd ..
176$ cd ..
177$ cd ..
178$ cd hccpl
179$ ls
180dir blqdjh
181dir hfqw
182dir qsgv
183$ cd blqdjh
184$ ls
185dir fbpg
186$ cd fbpg
187$ ls
188231357 dpbwg
189$ cd ..
190$ cd ..
191$ cd hfqw
192$ ls
193210898 fjblghm.gtg
194286252 hmcj.dgz
195258768 mpbb
196225743 qsgv.pqf
197191717 shvgmwn.vhv
198$ cd ..
199$ cd qsgv
200$ ls
201dir bslqpr
202dir dpbwg
203dir lhjmzsl
204210707 npj
20564435 qhpnrbhq
206dir rpj
207301426 shvgmwn.vhv
208dir stbgbrw
209dir vhzmg
210$ cd bslqpr
211$ ls
2124365 dpbwg
213dir fpj
214dir lhjmzsl
215dir lncmt
216dir mwvbpw
21735725 ncbjtpcb.svf
218dir njhsmb
219dir rjzsddlw
22041533 shvgmwn.vhv
221$ cd fpj
222$ ls
22388146 dpbwg
224$ cd ..
225$ cd lhjmzsl
226$ ls
22757400 fzngdsh.sbn
228198711 mnqz.npt
229$ cd ..
230$ cd lncmt
231$ ls
232192228 qsgv.jss
233$ cd ..
234$ cd mwvbpw
235$ ls
23665217 hmcj.drs
237$ cd ..
238$ cd njhsmb
239$ ls
240157177 dpbwg.wsl
24110919 jhfs
242$ cd ..
243$ cd rjzsddlw
244$ ls
245dir cftp
246dir flcfwml
247dir vpdbl
248$ cd cftp
249$ ls
25089075 dpbwg
25157259 mbgfn.pmh
252237771 zwglrhh
253$ cd ..
254$ cd flcfwml
255$ ls
25651498 pbbgmqn.gfg
257$ cd ..
258$ cd vpdbl
259$ ls
26098690 npj
261$ cd ..
262$ cd ..
263$ cd ..
264$ cd dpbwg
265$ ls
266dir wlmdbjh
267$ cd wlmdbjh
268$ ls
269dir pmldd
270245468 rdgldw.tzb
271$ cd pmldd
272$ ls
273145032 mwvbpw.tpc
274$ cd ..
275$ cd ..
276$ cd ..
277$ cd lhjmzsl
278$ ls
279233642 dpbwg.tbq
280dir frsggjl
281dir hmcj
282dir jmhzlq
283dir jvdtpzd
284251765 npj
285169647 shvgmwn.vhv
286$ cd frsggjl
287$ ls
288dir dshv
289dir fqvpc
290dir lhjmzsl
291313045 npj
292dir rngqmwgr
293$ cd dshv
294$ ls
295dir pptfqn
29685609 wpgz
297dir zfmqls
298$ cd pptfqn
299$ ls
300258817 mtctcdgd.nmb
30139899 npj
302$ cd ..
303$ cd zfmqls
304$ ls
305119006 hlw.mzg
306295107 wstvdqn.wgw
307$ cd ..
308$ cd ..
309$ cd fqvpc
310$ ls
311dir pqpf
312$ cd pqpf
313$ ls
314312566 mpbb
315$ cd ..
316$ cd ..
317$ cd lhjmzsl
318$ ls
319157261 dpbwg.bgc
32076700 mpbb
321$ cd ..
322$ cd rngqmwgr
323$ ls
32442626 dpbwg.dtt
32578765 gjsnmzn.fzb
326$ cd ..
327$ cd ..
328$ cd hmcj
329$ ls
330166183 jntzn
331dir qsgv
332254851 rbcgrdr.vqp
333$ cd qsgv
334$ ls
335256449 dhj.mrm
33649207 fbrhl
33769922 lhjmzsl
338121778 tpdvnb
339$ cd ..
340$ cd ..
341$ cd jmhzlq
342$ ls
343dir bbpqsf
344245813 ftw.jwq
345$ cd bbpqsf
346$ ls
347169373 mwvbpw.tjt
348$ cd ..
349$ cd ..
350$ cd jvdtpzd
351$ ls
352dir brfln
353dir dpbwg
354263586 fsqzfhj.bzh
35585956 lhjmzsl
356dir mwvbpw
357dir tcgwhp
35891473 vjgt.twz
359200413 zlnnrrpn.qqd
360$ cd brfln
361$ ls
36265066 fpvnm
363$ cd ..
364$ cd dpbwg
365$ ls
366dir jtqwgc
367dir lrdjdqn
368281885 mpbb
369$ cd jtqwgc
370$ ls
371219022 spbqn
372$ cd ..
373$ cd lrdjdqn
374$ ls
375116830 hmcj.ptr
376dir mwvbpw
377$ cd mwvbpw
378$ ls
379251737 ccqlb
380$ cd ..
381$ cd ..
382$ cd ..
383$ cd mwvbpw
384$ ls
385226329 fztjpfb
386$ cd ..
387$ cd tcgwhp
388$ ls
389dir grmsl
390$ cd grmsl
391$ ls
392dir hmcj
393197995 wzqlr.fqj
394$ cd hmcj
395$ ls
396239775 mbgfn.pmh
397dir rrvccjp
39895381 shvgmwn.vhv
399$ cd rrvccjp
400$ ls
401dir qsgv
402$ cd qsgv
403$ ls
404192956 mtctcdgd.nmb
405$ cd ..
406$ cd ..
407$ cd ..
408$ cd ..
409$ cd ..
410$ cd ..
411$ cd ..
412$ cd rpj
413$ ls
414dir bwc
415dir ctjwjlzc
416dir dpbwg
417dir lhjmzsl
418249767 npj
419dir wqmlz
420$ cd bwc
421$ ls
42256181 hmcj.dhd
423105111 hvw
42463869 rqw.srq
4258030 shvgmwn.vhv
426dir stff
427$ cd stff
428$ ls
429dir gsjsc
430$ cd gsjsc
431$ ls
432514 mtctcdgd.nmb
433$ cd ..
434$ cd ..
435$ cd ..
436$ cd ctjwjlzc
437$ ls
43839823 qjgnjm.hzn
439$ cd ..
440$ cd dpbwg
441$ ls
442dir lhqrjr
443$ cd lhqrjr
444$ ls
445179949 tmvl.zqf
446$ cd ..
447$ cd ..
448$ cd lhjmzsl
449$ ls
450305735 shvgmwn.vhv
451$ cd ..
452$ cd wqmlz
453$ ls
454141757 fstftggh
455$ cd ..
456$ cd ..
457$ cd stbgbrw
458$ ls
459196003 dpbwg.shs
460dir gbr
461104091 hmcj
462232145 lhjmzsl.nnc
463dir lhv
464dir qqqbtpq
46551208 qsgv.dbm
466235090 vbpzgnr
467dir vqmnsdrt
468$ cd gbr
469$ ls
470101809 npj
471121922 pcqrmmlt.ghh
472125915 ptffhc
473128293 wdz.nsd
474$ cd ..
475$ cd lhv
476$ ls
47775506 qtwlnvv.nbm
47828413 rbwbp
479$ cd ..
480$ cd qqqbtpq
481$ ls
48296300 gdf
483$ cd ..
484$ cd vqmnsdrt
485$ ls
486146229 mwvbpw.qrc
487189540 plldv.vtv
488dir rtng
489$ cd rtng
490$ ls
49142730 hrbs.zpc
492$ cd ..
493$ cd ..
494$ cd ..
495$ cd vhzmg
496$ ls
497dir dcmjvhtt
498dir dpbwg
499$ cd dcmjvhtt
500$ ls
50185508 hhlctr.bbs
502296657 lhjmzsl.zjt
503255803 mbgfn.pmh
504170803 mtctcdgd.nmb
505$ cd ..
506$ cd dpbwg
507$ ls
508156142 hmcj
509dir lhjmzsl
510$ cd lhjmzsl
511$ ls
51213590 mtctcdgd.nmb
513$ cd ..
514$ cd ..
515$ cd ..
516$ cd ..
517$ cd ..
518$ cd jsgbg
519$ ls
520202682 hmcj.tbl
521$ cd ..
522$ cd lhjmzsl
523$ ls
524197308 lhjmzsl
525$ cd ..
526$ cd pngs
527$ ls
528115979 hfpzqf.hjw
529dir lhjmzsl
530125414 mpbb
531dir mwbffchr
532$ cd lhjmzsl
533$ ls
53455108 hwhsjr
535$ cd ..
536$ cd mwbffchr
537$ ls
538249138 czv.lgd
539$ cd ..
540$ cd ..
541$ cd qhs
542$ ls
543108106 ccmhjzp.ppf
544197911 shvgmwn.vhv
545$ cd ..
546$ cd sntcp
547$ ls
548dir cvgtwsbw
549dir dpbwg
550dir dqbzfcq
551dir gfvtsjmz
552dir ljsmjsp
553dir mwvbpw
554dir phfqzwp
555dir rpsnfndl
556dir rrqwcbqm
557dir rtv
558dir vnvft
559dir vqcvbncp
560dir vsgjds
561$ cd cvgtwsbw
562$ ls
563dir bprbr
564dir bpw
565dir dpbwg
566dir jvjs
567dir mwvbpw
568dir nbfzn
569dir pcr
570dir rhgltw
571$ cd bprbr
572$ ls
573126107 dpbwg.jqq
574140931 ljhc.gsm
575120326 pnjv
576dir wbrb
577$ cd wbrb
578$ ls
57928887 ccr.rvd
580dir gwfpgws
58177898 mwvbpw.qrc
582280487 pbfbtb.qjp
583$ cd gwfpgws
584$ ls
585205904 dgm
586313203 vpgzr.jfw
587$ cd ..
588$ cd ..
589$ cd ..
590$ cd bpw
591$ ls
592dir lgstpgrn
593173334 npj
594$ cd lgstpgrn
595$ ls
596dir rngr
597$ cd rngr
598$ ls
599291856 czjz.fzp
600246123 mpbb
601200301 qqfvpnz
602$ cd ..
603$ cd ..
604$ cd ..
605$ cd dpbwg
606$ ls
607265739 mtctcdgd.nmb
608dir mwvbpw
60976505 ntjn.mnp
610227157 pqznms
611312879 qzlmsht
612$ cd mwvbpw
613$ ls
614144523 dpbwg.lgr
61539441 mmtrnzqw.mnv
616285772 mpbb
617306936 rpmgcmqd.qht
618$ cd ..
619$ cd ..
620$ cd jvjs
621$ ls
62251134 lsnvhd.gsj
623$ cd ..
624$ cd mwvbpw
625$ ls
626125428 hmcj.bvd
62740162 npj
628117658 pmzfj.crj
629$ cd ..
630$ cd nbfzn
631$ ls
63211429 mwvbpw.swl
6335582 qsgv.jrm
634$ cd ..
635$ cd pcr
636$ ls
637dir dpbwg
63895858 mtctcdgd.nmb
639$ cd dpbwg
640$ ls
641dir wmsb
642$ cd wmsb
643$ ls
644154498 npj
645$ cd ..
646$ cd ..
647$ cd ..
648$ cd rhgltw
649$ ls
650188447 qsgv.rzs
651$ cd ..
652$ cd ..
653$ cd dpbwg
654$ ls
655261326 cjfszwr
65688528 glp.fgc
657dir lhjmzsl
658270470 shvgmwn.vhv
659310081 vdhmgb
660dir wsc
661$ cd lhjmzsl
662$ ls
663245410 dnnfljbs
664$ cd ..
665$ cd wsc
666$ ls
667dir lhjmzsl
668311302 mbs.tqc
669309985 mpbb
670dir qgpqzr
67120812 vhcc.wpw
672$ cd lhjmzsl
673$ ls
674dir dpbwg
675$ cd dpbwg
676$ ls
677273340 fmvbcphl.crp
678$ cd ..
679$ cd ..
680$ cd qgpqzr
681$ ls
682dir fdwgdhrf
683$ cd fdwgdhrf
684$ ls
685275421 mtctcdgd.nmb
686$ cd ..
687$ cd ..
688$ cd ..
689$ cd ..
690$ cd dqbzfcq
691$ ls
69230930 njnz
693$ cd ..
694$ cd gfvtsjmz
695$ ls
696290134 mbgfn.pmh
697154689 vql
698$ cd ..
699$ cd ljsmjsp
700$ ls
70159894 hwggw.rpd
70226336 mbgfn.pmh
703dir mvzchpq
704dir mwvbpw
705122061 zlcr.jsw
706$ cd mvzchpq
707$ ls
708294618 lhjmzsl.bqm
709dir mwvbpw
710204294 nljhbh.cfc
71179337 ntvt.dbw
712$ cd mwvbpw
713$ ls
714dir njwcqcjh
715309971 nqdv.vmp
716$ cd njwcqcjh
717$ ls
718155159 mtctcdgd.nmb
719$ cd ..
720$ cd ..
721$ cd ..
722$ cd mwvbpw
723$ ls
72443451 lhjmzsl.vjt
725$ cd ..
726$ cd ..
727$ cd mwvbpw
728$ ls
7293144 phvjzs.prf
730$ cd ..
731$ cd phfqzwp
732$ ls
733dir hmcj
734dir hnnrw
735196279 lhjmzsl
73690948 mwvbpw.hvm
737275082 shvgmwn.vhv
738$ cd hmcj
739$ ls
7404346 mtctcdgd.nmb
741$ cd ..
742$ cd hnnrw
743$ ls
744dir lhjmzsl
745103070 qsbrf.tpv
746dir rdf
747$ cd lhjmzsl
748$ ls
749158692 dpbwg.bvl
750$ cd ..
751$ cd rdf
752$ ls
753dir gpj
754dir lbgpm
755$ cd gpj
756$ ls
757136508 shvgmwn.vhv
758$ cd ..
759$ cd lbgpm
760$ ls
761154457 ccpvr
762232065 lhjmzsl
76343787 npj
764189920 rpgmvv
76596362 tlmvpc
766$ cd ..
767$ cd ..
768$ cd ..
769$ cd ..
770$ cd rpsnfndl
771$ ls
772dir pcbtmcwf
773$ cd pcbtmcwf
774$ ls
775dir qsgv
776$ cd qsgv
777$ ls
77845662 npj
779$ cd ..
780$ cd ..
781$ cd ..
782$ cd rrqwcbqm
783$ ls
784dir vjm
785$ cd vjm
786$ ls
787263137 npj
788$ cd ..
789$ cd ..
790$ cd rtv
791$ ls
792dir lhjmzsl
793dir pcwsn
794dir qsgv
795dir vvzbsg
796$ cd lhjmzsl
797$ ls
798dir qzsjhsfn
799$ cd qzsjhsfn
800$ ls
80126909 mbgfn.pmh
802$ cd ..
803$ cd ..
804$ cd pcwsn
805$ ls
806160033 ftz.nbg
807145165 wgdjsgsb.hhm
808$ cd ..
809$ cd qsgv
810$ ls
811dir jqm
812136209 mbgfn.pmh
81379664 mghdlnh.chv
814$ cd jqm
815$ ls
816222831 npj
817$ cd ..
818$ cd ..
819$ cd vvzbsg
820$ ls
82184246 dpbwg.tsq
822$ cd ..
823$ cd ..
824$ cd vnvft
825$ ls
826dir crqrl
827dir scdvzsd
828$ cd crqrl
829$ ls
83013185 dpbwg.twz
831109021 qcdqnhg.jjj
832$ cd ..
833$ cd scdvzsd
834$ ls
835dir hmcj
836$ cd hmcj
837$ ls
838252155 npj
839$ cd ..
840$ cd ..
841$ cd ..
842$ cd vqcvbncp
843$ ls
84472128 crnhb
845dir ddz
846dir dvhzvdn
847dir ffsbcmg
848dir gfs
849dir jghlb
850dir llq
851dir pvn
852dir rvqmmjgr
853$ cd ddz
854$ ls
855232302 gdfqpnj.nhf
856274940 lhjmzsl.mzv
857286217 mpbb
858$ cd ..
859$ cd dvhzvdn
860$ ls
861273183 cfnqn.qpz
862$ cd ..
863$ cd ffsbcmg
864$ ls
8656544 mtctcdgd.nmb
86652511 wndzt.lqb
867$ cd ..
868$ cd gfs
869$ ls
870228312 mwvbpw.tdj
871dir rqjrfzgt
87262100 shc.rtj
873313984 szsplzq.dpd
874dir tqtnp
875$ cd rqjrfzgt
876$ ls
877296460 bvp
878272324 mbgfn.pmh
879221044 npj
880110232 qvcszzv
881$ cd ..
882$ cd tqtnp
883$ ls
88498376 tzwh
885212247 wzjj.scp
886$ cd ..
887$ cd ..
888$ cd jghlb
889$ ls
890dir ddrmsv
891$ cd ddrmsv
892$ ls
893252143 mbgfn.pmh
894$ cd ..
895$ cd ..
896$ cd llq
897$ ls
898dir lhjmzsl
89967341 mbgfn.pmh
900155159 npj
901dir qsgv
902dir vcvnzc
903$ cd lhjmzsl
904$ ls
905151930 ssldrsf.mzm
906$ cd ..
907$ cd qsgv
908$ ls
909233702 ztdmtqb.mhf
910$ cd ..
911$ cd vcvnzc
912$ ls
913168179 lhjmzsl.cwf
914$ cd ..
915$ cd ..
916$ cd pvn
917$ ls
918240160 lbd.slf
919$ cd ..
920$ cd rvqmmjgr
921$ ls
92224809 gwgcrzp.zhj
923dir hmcj
924dir lhjmzsl
925dir mwvbpw
926121997 nbmf
92777886 ntp
928dir qcqrgdm
929$ cd hmcj
930$ ls
931126073 dpbwg.lhh
932dir jchccghv
933dir lhjmzsl
934144075 qsgv.lbw
935288076 swrngbsq.qzw
936$ cd jchccghv
937$ ls
938310277 mpbb
939$ cd ..
940$ cd lhjmzsl
941$ ls
942193576 bwsz.crv
94316002 mbgfn.pmh
94457961 mtctcdgd.nmb
945$ cd ..
946$ cd ..
947$ cd lhjmzsl
948$ ls
949dir bsfwmcz
950dir dpbwg
951121640 mwvbpw
952dir pmrfvzw
953dir qsgv
954$ cd bsfwmcz
955$ ls
956dir fjqqblz
95751952 gqbj.fwd
958dir hmcj
959dir lctt
96081316 lhjmzsl.qqr
9616372 mbgfn.pmh
96222669 shvgmwn.vhv
963130990 zgq.fpv
964$ cd fjqqblz
965$ ls
96626064 zrqrnb.nwf
967$ cd ..
968$ cd hmcj
969$ ls
97014385 mwvbpw.vzq
971$ cd ..
972$ cd lctt
973$ ls
974137397 fbgbs.fjf
975dir jgbzqzq
976dir qrr
977272639 qsgv.vwm
978$ cd jgbzqzq
979$ ls
980135320 mpbb
981$ cd ..
982$ cd qrr
983$ ls
984dir dpbwg
985dir mwvbpw
98654143 pnsl.bbm
987dir wbpzpg
988$ cd dpbwg
989$ ls
990250653 shvgmwn.vhv
991$ cd ..
992$ cd mwvbpw
993$ ls
9942682 fhdh.hmt
995$ cd ..
996$ cd wbpzpg
997$ ls
998dir bqshqpvm
999141398 mtctcdgd.nmb
1000130729 vtnfmjqm.mgp
1001$ cd bqshqpvm
1002$ ls
1003252449 shvgmwn.vhv
1004$ cd ..
1005$ cd ..
1006$ cd ..
1007$ cd ..
1008$ cd ..
1009$ cd dpbwg
1010$ ls
101182216 gwjwmcbf.gwl
1012$ cd ..
1013$ cd pmrfvzw
1014$ ls
1015dir mwvbpw
1016dir wtzgjspz
1017dir zmb
1018$ cd mwvbpw
1019$ ls
102016736 wbzjzz.mqq
1021$ cd ..
1022$ cd wtzgjspz
1023$ ls
1024dir vjb
1025$ cd vjb
1026$ ls
1027301763 drchphtm
1028$ cd ..
1029$ cd ..
1030$ cd zmb
1031$ ls
1032201978 mdj
1033dir qgnffw
1034147889 qzbmwpnm.gjp
1035$ cd qgnffw
1036$ ls
103717740 cwz.dhs
1038222345 mbgfn.pmh
103981554 npj
1040206597 tsnlnzh
1041$ cd ..
1042$ cd ..
1043$ cd ..
1044$ cd qsgv
1045$ ls
1046dir mmsnzr
1047$ cd mmsnzr
1048$ ls
1049160502 tgrztm
1050$ cd ..
1051$ cd ..
1052$ cd ..
1053$ cd mwvbpw
1054$ ls
105540049 qmmdv
1056313418 qsgv.srp
1057$ cd ..
1058$ cd qcqrgdm
1059$ ls
1060202848 wtl.qbj
1061$ cd ..
1062$ cd ..
1063$ cd ..
1064$ cd vsgjds
1065$ ls
1066138690 npj
106722984 tpfbnz.sgj
1068$ cd ..
1069$ cd ..
1070$ cd sqs
1071$ ls
1072dir zms
1073$ cd zms
1074$ ls
1075152096 cvtqph.wwp
1076dir mmwzg
1077$ cd mmwzg
1078$ ls
1079100870 qsgv