Релазовать упрощенную Модель песчаной кучи, позволяющую сохранять свои состояния в картинку в формате BMP.
Изначальное состояние и размер сетки задается.
Размер сетки может изменяться в процессе*
Реализация - консольное приложение, поддерживающее следующие аргументы командной строки:
-l, --length - длина сетки (гарантированно влезет в uint16_t)
-w, --width - ширина сетки (гарантированно влезет в uint16_t)
-i, --input - tsv-файл (tab-separated values) c начальными данными
-o, --output - путь к директории, для сохранения картинок
-m, --max-iter - максимальное количество итераций модели
-f, --freq - частота с которой должны сохранятся картинки (если 0, то сохраняется только последнее состояние)
Начальное состояние задается размерами сетки, переданными в качестве аргументов программы и файлом с изначальным количеством песчинок в каждой ячейке, кроме пустых.
Формат файла: Каждая сторчка содержит информацию об обной ячейке, в виде (x-координаты, y-координаты, количестве песчинок), разделенных символом табуляции. Количество песчинок гарантированно влезет в uint64_t.
-
Новые песчинки добавляются только при инициализации.
-
Состояние след поколения ячейки зависит только от предыдущего состояния сетки
-
В случае если песчинки обваливаютя за сетку, они пропадают / В случае если песчинки обваливаютя за сетку, размер сетки увеличивается на 1 в соответсвующу стороны*
Программа должна пересчитывать состояние модели, согласно начальным данным, а также сохранять промежуточные состояния с заданной частотой в картинку в формате bmp.
Картинка для текущего состояния формируется по след правилам:
-
Размер картинки равен размеру поля
-
Каждый пиксель соответствует ячейке поля
-
Цвет пикселя зависит от количество песчинок в ячейке: 0 - белый, 1 - зеленый, 2 - фиолетовый, 3 - желтый, > 3 - черный.
Программа должна закончить свою работу в случае если модель достигла стабильного состояния, либо номера итерации заданной изначально.
- Для реализации Вам может пригодиться библиотека для работы с файловой системы из стандартной библиоткеи
- Пользовать сторонними библиотеками, кроме стандартной запрещено. Это в частности означает, что вы должны сами спроектировать и реализовать функции для работы с картинками в формате bmp
- В данной лабе вам дано только описание, структура проекта, и организация сборки - так же ваша задача.
- 30.10.22 24:00 - 0.8
- 06.11.22 24:00 - 0.65
- 13.11.22 24:00 - 0.5
Данная оценивается 15 баллами и первый дедлайн через 3 недели.