README.md

    Open in Visual Studio Code

    Лабораторная работа 3

    Задача

    Реализовать упрощенную модель песчаной кучи, которая позволяет сохранять свои состояния в картинку в формате BMP.

    Изначальное состояние задается входным файлом.

    Размер сетки может изменяться в процессе работы программы.

    Реализация - консольное приложение, поддерживающее следующие аргументы командной строки:

    -i, –input - tsv-файл (tab-separated values) c начальными данными

    -o, –output - путь к директории для сохранения картинок

    -m, –max-iter - максимальное количество итераций модели

    -f, –freq - частота, с которой должны сохранятся картинки (если 0, то сохраняется только последнее состояние)

    Начальное состояние

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

    Формат файла: Каждая строчка содержит информацию об одной ячейке, в виде (x-координаты, y-координаты, количество песчинок), разделенных символом табуляции. Количество песчинок гарантированно влезет в uint64_t, координаты гарантированно влезают в int16_t

    Примечания к модели

    1. Новые песчинки добавляются только при инициализации.

    2. Состояние следующего поколения ячеек зависит только от предыдущего состояния сетки.

    3. В случае если песчинки пытаются обвалиться за границу сетки, ее размер увеличивается на 1 в соответствующую сторону.

    Результат работы - программа

    Программа должна пересчитывать состояние модели согласно начальным данным, а также сохранять промежуточные состояния с заданной частотой в виде картинки в формате bmp.

    Картинка для текущего состояния формируется по следующим правилам:

    1. Размер картинки равен размеру поля.

    2. Каждый пиксель соответствует ячейке поля.

    3. Цвет пикселя зависит от количества песчинок в ячейке.

      • 0 - белый
      • 1 - зеленый
      • 2 - желтый
      • 3 - фиолетовый
      • > 3 - черный
    4. Кодирование 1 пикселя должно занимать не более 4 бит.

    Программа должна закончить свою работу в случае если модель достигла стабильного состояния, либо номера заданной изначально итерации.

    Ограничения

    1. Пользовать сторонними библиотеками, кроме стандартной, запрещено. В частности это означает, что Вы должны сами спроектировать и реализовать функции для работы с картинками в формате bmp.

    2. Использование контейнеров стандартной библиотеки (std::vector, std::list и тд) - запрещено.

    Примечание

    1. Для реализации Вам может пригодиться библиотека для работы с файловой системой из стандартной библиотеки.
    2. В данной лабе Вам дано только описание. Структура проекта и организация сборки также ваша задача. Использовать для сборки не cmake - запрещено.
    3. Важно помнить, что размер структуры может быть не равен сумме размеров ее полей за счет выравнивания. Данную проблему можно решить за счет директив препроцессора.

    Deadline

    1. 31.10.23 24:00 - 0.8
    2. 07.11.23 24:00 - 0.65
    3. 14.11.23 24:00 - 0.5

    Данная работа оценивается 15 баллами.

    Описание

    Реализация математической модели бесконечной песчаной кучи с возможностью сохранения состояния кучи в BMP картинку

    Конвейеры
    0 успешных
    0 с ошибкой