Skip to content

Files

Latest commit

907f144 · Jan 18, 2024

History

History

otus-21

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Jan 18, 2024
Jan 18, 2024
Jan 18, 2024
Jan 18, 2024

outs-21

Деревья, графы, зипперы, поиск пути.

Домашнее задание

Вам предстоит решить первую часть задачи дня №7 из серии AdventOfCode 2022.

Суть задачи заключается в том, чтобы суметь декодировать "журнал работы в терминале", имеющий вид:

$ 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 / - переход в корень диска
  • cd .. - переход в родительскую директорию
  • cd name - переход в поддиректорию "name"
  • ls - вывод списка поддиректорий и файлов в текущей директории

Команда cd никогда не делает более одного "движения" за раз: вы либо спускаетесь на один уровень вниз (в поддиректорию) или поднимаетесь на один уровень вверх. Исключение ровно одно — cd /, но оно встречается только в начале журнала.

Содержимое директории выводится в виде списка, содержащего имена поддиректорий в формате dir name и файлы вместе с их размерами <размер-в-байтах> имя.

Вам предстоит подсчитать размер каждой директории, который равен сумме размеров поддиректорий и файлов.

Функция sum-of-sizes должна принимать журнал в виде строки и возвращать сумму размеров тех директорий, которые занимают на диске 100000 байт и меньше. Учитывать вложенность не нужно: если вы встретите две директории нужного размера и при этом окажется, что одна из них находится в другой, то никаких дополнительных действий делать не нужно — вы всё также складываете размеры.