Визуализация клеточных автоматов

Описание

Клеточный автомат — дискретная модель, включающая в себя регулярную решётку ячеек, каждая из которых может находиться в одном из конечного множества состояний, таких как 1 и 0. Решетка может быть любой размерности. Для каждой ячейки определено множество ячеек, называемых окрестностью. Для работы клеточного автомата требуется задание начального состояния всех ячеек и правил перехода ячеек из одного состояния в другое. На каждой итерации, используя правила перехода и состояния ячеек из окрестности, определяется новое состояние каждой ячейки.

В этом варианте задания предлагается реализовать приложение, визуализирующее эволюции различных клеточных автоматов из заранее выбранного набора. Этот набор может включать в себя такие автоматы, как:

Муравей Лэнгтона.

Минимальные требования (базовая часть)

Базовая реализация проекта, в которой должны разбираться все участники, должна содержать:

  • выбор клеточного автомата из каталога с описанием (не менее 4 различных автоматов);
  • визуализацию и моделирование фиксированной сцены для выбранного автомата;

Расширенный интерфейс (индивидуальная часть)

Расширенный интерфейс должен добавлять хотя бы 2 различные возможности к базовому интерфейсу. Ниже перечислены возможные варианты расширения интерфейса, однако этим списком они не ограничены:

  • меню выбора сцены;
  • интерфейс сохранения/загрузки;
  • настройки поля-вселенной (размер поля, цвет клеток и т.п.);
  • редактор сцены (указание начального состояния);
  • управление моделированием:
    • пауза/продолжение;
    • ускорение/замедление;
    • перемотка;
  • и т.д.

Работа с базой данных (индивидуальная часть)

Модуль для работы с базой данных должен предоставлять хотя бы 2 различных возможности:

  • база сцен;
  • база объектов;
  • и т.д.