Opened 6 years ago

Closed 6 years ago

#226 closed ожидается проверка (задача сдана)

Проверка ДЗ №2

Reported by: tankov.vladislav Owned by: rutsky,grabovoy.philipp
Priority: проверка Milestone: ha2-deadline
Component: HA#2 huffman Version:
Keywords: Cc:

Description


Change History (6)

comment:1 Changed 6 years ago by Филипп

Milestone: ha2-milestone2ha2-deadline
Type: ожидается проверкаожидаются исправления

Привет!

Замечания:

  1. Название бинарника
  2. Файлик abababababababab.in сжимается неоптимальным образом.
  3. Приведения типов предпочтительно делать через *_cast-операторы. Подробнее будет дальше в курсе.
  4. std::string coding_table[size_of_alph]{}; -- лучше использовать std::vector<bool>, так как этот контейнер соптимизирован для хранения битиков нулей и единиц.
  5. Логику смерживания дерева было бы легче заимплементить с использованием кучи (std::priority_queue) -- у этого контейнера лучше асимптотика на доступ/удаление минимального элемента.
  6. В printTree можно не заводить лишний контейтер с последующей сортировкой, а сразу печатать данные из coding_table.
  7. HuffmanTree::BitWriter::write(std::string cur_bitset) -- передавать строку стоит по константной ссылке.

Стилистические вещи:

  1. При чтении лучше проверять результат через приведение к bool объекта-стрима: if (input_file.read(...)) -- работа с файлом могла быть неуспешной не только из-за EOF.
  2. Предпочтительно более явное именование переменных: symbols_table можно уточнить до symbols_freqs; HuffmanTree::printTree -- это скорее HuffmanTree::printCodes и т.д.
  3. Если HuffmanTree параметризуется стримами для чтения/записи данных текста, было бы правильно printStat и printTree тоже параметризовать output-стримами :)

comment:2 Changed 6 years ago by tankov.vladislav

  1. Поправил на huffman
  2. Была ошибка с тем, что дописывался лишний байт в конец. Поправил
  3. Использовал reinterpret_cast
  4. Заменил на vector bool
  5. Заменил на priority_queue
  6. В задании сказано, что выводить нужно в лексикографическом порядке кодов, а не букв. Я не очень понимаю -- как при таком условии за один проход это вывести?
  7. Исправил

comment:3 Changed 6 years ago by tankov.vladislav

Type: ожидаются исправленияожидается проверка

comment:4 Changed 6 years ago by Филипп

Type: ожидается проверкаожидаются исправления

Привет!

Все круто, 1 момент: для очереди с приоритетами нет гарантий на порядок элементов, поэтому компаратор надо сделать "однозначным" для нашего случая. И для листьев, и для обычных элементов дерева.

Посмотри, пожалуйста, в течение 60 часов.

comment:5 Changed 6 years ago by tankov.vladislav

Type: ожидаются исправленияожидается проверка

comment:6 Changed 6 years ago by Филипп

Resolution: задача сдана
Status: newclosed
Note: See TracTickets for help on using tickets.