ТЗ проекта «Циклические клеточные автоматы»
Клеточный автомат (КА) — набор клеток, образующих некоторую периодическую решетку с заданными правилами перехода, определяющими состояние клетки в следующий момент времени через состояние этой клетки и окружающих её клеток в текущий момент времени.
Синхронный КА - такой КА, в котором все клетки переходят в новое состояние одновременно, используя при этом старые состояния соседних клеток для определения своего нового состояния.
Детерминированный КА - КА, в котором состояние любой клетки в последующий момент однозначно определяется её состоянием и состоянием её соседей в данный момент времени.
Циклический КА - КА, в котором клетка меняет свои состояния циклично, т.е. все возможные состояния клеток образуют цикличную последовательность.
Программа - рисовалка синхронных детерминированных циклических клеточных автоматов, у которых переход в следующее состояние для каждой клетки определяется только состоянием этой клетки и количеством клеток ближайшего окружения, находящихся в таком же состоянии в данный момент времени. Периодическая решетка - двумерное прямоугольное поле, каждая сторона которого замкнута на противоположную.
У пользователя будет возможность запускать и приостанавливать автомат, а так же менять:
- состояние любой клетки как в запущенном, так и в приостановленном состояниии автомата;
- время перехода в следующее состояние (скорость обновления);
- количество состояний и цвет их отображения;
- размер поля и размер клетки (изменение маштаба изображения);
- условия перехода между состояниями.
Обмен информацией с пользователем будет осуществляться через графический интерфейс. Это окно, которое включает область рисования состояния клеточного автомата, строку меню и информационную область, в которой указывается последовательность переходов между состояниями и для каждого состояния - его цвет и соответствующая клавиша на клавиатуре (см. Управление мышью и клавиатурой). Интерфейс будет на английском языке.
Меню включает следующие пункты:
- файл - открытие и сохранение двух типов файлов (не гарантируется совместимость с любыми другими программами, реализующими КА):
- с описанием клеточного автомата;
- с описанием состояния клеточного автомата.
- действия - старт, стоп, следующий шаг, увеличить скорость, уменьшить скорость, приблизить, отдалить, очистить поле, заполнить поле рандомно;
- параметры - задание параметров автомата, т.е. числа состояний, цвета их отображения и условий перехода в следующее состояние, как количество окружающих клеток, находящихся в таком же состоянии, а так же задание клавиши клавиатуры, соответствующей состоянию.
- документация
Управление мышью и клавиатурой:
- при нажатии и(или) удержании пользователем левой кнопки мыши состояние клетки будет меняться на следующее,
- при нажатии и(или) удержании правой кнопки - на предыдущее,
- при нажатии и(или) удержании пользователем левой кнопки и клавиши на клавиатуре состояние будет меняться на то, которое соответствует данной клавише.
Документация на языке интерфейса. Вызов через меню help. Будет описано только, как пользоваться программой и что она делает. Программа должна будет работать при условии установленного питона.
Программа будет написана на питоне, наличие самодокументации не требуется, оформлена по правилам PEP-8.