Opened 4 years ago
Closed 4 years ago
#975 closed ожидается проверка (задача сдана)
HW #3
Reported by: | Milyausha Sabirova | Owned by: | Vasily Alferov |
---|---|---|---|
Component: | HW #3 (Huffman) | Version: | 2.0 |
Keywords: | Cc: |
Description
У меня не получилось отдебажить алгоритм архивирования/разархивирования, закоммитила пока только то, что есть :(
Change History (3)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
(я не думала, что ты будешь это проверять, тот коммит был, чтобы показать, что я что-то активно пыталась сделать)
Теперь работает и даже компилируется (я надеюсь). Про беды с валгриндом при сжатии знаю, тесты не успела написать:(
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Так гораздо лучше.
Баллы в таблице умножаются на 0.5.
Корректность 6/9
Тесты 0/8 (отсутствуют)
Архитектура 3/5
Стиль 6/8
Траблов с валгриндом я не заметил, а вот некоторые бинарные файлы виснут. Например, содержащий все байты.
По архитектуре: в основном ОК, но публичные поля у классов — не ОК.
Стиль. Строчки длинные, местами не очень читаемые, в src/Huffman.cpp
нет пустой строки после инклюдов.
auto compare = [](const HuffmanNode *first, const HuffmanNode *second) { return first->frequency > second->frequency; }; std::priority_queue<HuffmanNode*, std::vector<HuffmanNode*>, decltype(compare)> min_heap(compare);
Это, конечно, выглядит не очень. В контест было бы ок, в реальном коде за такое ласково гладят по голове.
Несколько вариантов, как можно было бы улучшить:
- Структурка-функтор.
- Темплейтный тайпдеф
template<class T, class Compare> using heap = std::priority_queue<T, std::vector<T>, Compare>;
- Тайпдеф на компаратор
using Compare = decltype(compare); // или даже так: using Compare = std::function<bool (HuffmanNode*, HuffmanNode*)>;
- А лучше комбинация 2 + (1 или 3).
И на будущее.
В современном мире эксепшны можно писать так:
class CLI_exception : public std::runtime_error { /* не std::exception, а его наследник */ public: CLI_exception(const std::string& message) : std::runtime_error(message) {} };
='((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
Оно не компилируется с точностью до лишних точек с запятой и не работает совсем.
Я не знаю, что тут проверять :(
Можно досдавать до 22:59 понедельника с понижением оценки на 0.5. Правила этой акции Егор недавно кидал на почту.