...

Основная задача, над репозиторием zsh

Задача

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

  1. Склонируйте репозиторий zsh.
  2. Посчитайте, сколько наборов файлов-дубликатов есть в исходном коде
  3. Какое самое большое количество повторений одного и того же содержимого?
  4. Посчитайте, сколько файлов в исходном коде дублируются и содержимым, и именами
  5. Какие именно файлы дублируются содержимым?

В п.5 выведите ответ в таком формате:

### set of cardinality 2
./dir1/file1
./dir2/file2
### set of cardinality 2
./dir3/file3
./dir3/file4
### set of cardinality 3
./dir1/dir11/file5
./dir2/dir21/file6
./dir3/file7

Детали

zsh на гитхабе: здесь.
Или сразу: git clone https://github.com/zsh-users/zsh.git

Погнали?

  • Сколько времени заняло решение?
  • Сколько времени работает полученная программа или команда?
  • Если бы в репозитории было в 10 раз больше файлов, насколько дольше работала бы программа или команда?

Дополнительная задача: подготовка тестовых данных

Задача

  1. Создайте случайную структуру из вложенных каталогов
    • общее количество каталогов – несколько десятков (но можно и больше)
    • глубина вложенности каталогов – до 10 (но можно и больше)
  2. В случайных местах этой структуры создайте файлы со случайными именами и случайным содержимым, и чтобы некоторые файлы совпадали по содержимому

Посчитайте статистику по дубликатам.

Дополнительная-дополнительная задача

Поменяйте параметры генерации:

  • количество каталогов
  • максимальная вложенность
  • кустистость
  • общее количество файлов
  • количество и распределение дубликатов (сколько дубликатов, какое максимальное количество повторений)

Снова посчитайте статистику.

Погнали?

  • Сколько времени заняла подготовка тестовых данных?
  • Что оказалось сложнее/интереснее – основная задача или подготовка тестовых данных?