From 9feacee54e58520d9bfb87fabe935eaedb487a1f Mon Sep 17 00:00:00 2001 From: Aleksey Lobanov Date: Mon, 29 Jun 2020 10:45:07 +0300 Subject: [PATCH] Readme improvement --- README.md | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 46a2569..dd6f6c2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,40 @@ # cmc-pseudo-polynomials -Курсовой проект за первый курс магистратуры ВМК МГУ \ No newline at end of file +Курсовой проект за первый курс магистратуры ВМК МГУ + +## Сборка +Требуется cmake и компилятор C++ с поддержкой C++14. +Если это не gcc, возможно, потребуется поправить CMakeLists.txt. + +Команды для сборки могут быть такими: +``` +mkdir build +cd build +cmake .. +make +``` + +Количество аргументов у функции изменяются в коде через изменение `ARGS_COUNT` в файле `main.cpp`. +Поддерживаются значения от 2 до 5. +Также может быть полезно отключить генерацию разбиения по классам эквивалентности, это параметр `ONLY_CREATE_CLASSES` в том же классе. +Это может ускорить полную генерацию и значительно сократит потребление памяти. + +## Запуск +Для запуска достаточно собрать проект и вызвать +``` +./main +```` + + +## Анализ результатов +Результаты записываются в файлы вида `base_4_rank_3.txt` в рабочей директории. +Первое число означает число аргументов у функции, а второе длину функций в классе ПСПФ. +Сам файл представляет собой вектор битов, +где бит N выставлен если функция принадлежит множеству функций с фиксированным числом аргументов и длиной в классе ПСПФ. + +Для анализа этих файлов удобно использовать `get_function_len.py` (требуется Python3). Для экономии места эти файлы можно предварительно сжать в XZ архивы. Есть несколько вариантов использования: + +1. Получить длину некоторой функции. Пример `python3 get_function_len.py 10101010`, где `10101010` -- вектор значений функции. +2. Подсчёт количества функций по классам. Пример: `python3 get_function_len.py count_lens 3`, где 3 -- количество аргументов у функций. + +