diff --git a/lab1/report/report.tex b/lab1/report/report.tex index 3a87e82..de031ef 100644 --- a/lab1/report/report.tex +++ b/lab1/report/report.tex @@ -701,8 +701,15 @@ int main() \addcontentsline{toc}{section}{Заключение} - В результате выполнения лабораторной работы было разработано консольное приложение, ... + В ходе выполнения лабораторной работы был реализован двумерный клеточный автомат в консоли с окрестностью фон Неймана в соответствии с заданным номером 109063350. Двоичное представление этого числа, дополненное ведущими нулями, соответствует вектору значений функции переходов рассматриваемого клеточного автомата. Анализ паттернов был проведён для трёх вариантов граничных условий: единичные, нулевые и тороидальные. Было обнаружено как минимум 6 различных циклических паттернов для поля размером 5 на 5. Для поля размером 20 на 20 и нулевых начальных условий был также проведён анализ сходимости и построены графики количества <<живых>> клеток для различных начальных конфигураций. Также по результатам анализа, было определено, что рассматриваемый автомат относится к третьему классу по классификации Стивена Вольфрама. + Из достоинств выполнения лабораторной работы можно выделить структурирование кода за счёт использования ООП. Вся логика работы клеточного автомата вынесена в отдельный класс \texttt{CellularAutomaton}, который может быть переиспользован в других программах. Также достоинством является то, что приложение позволяет пользователю выбирать граничные условия. + + Во время разработки упор был сделан на упрощении и понятности кода, поэтому в качестве недостатка можно отметить не самую лучшую его эффективность, в особенности в использовании памяти. Поскольку каждая клетка может быть в одном из двух состояний можно было бы использовать битовые структуры для хранения поля, однако в работе для этих целей используются векторы целых чисел. Таким образом для хранения состояния каждой отдельной клетки выделяется по 32 бита, вместо одного необходимого. + + Функционал программы достаточно несложно масштабировать. Например, сейчас функция переходов жёстко задаётся в классе \texttt{CellularAutomaton}, с помощью незначительных изменений кода можно было бы предоставить пользователю возможность задавать функцию перехода, посредством ввода вектора значений функции или натурального числа, двоичное представление которого соответствовало бы вектору значений функции переходов. + + Работа выполнена в среде разработки Visual Studio 2022, стандарт ISO C++ 14, компилятор Microsoft (R) C/C++ версии 19.33.31629. \newpage \section*{Список литературы}