/FigureChecker

Figure checker.

Primary LanguageC++

Задача

Данная программа решает следующую задачу:

Имеется текстовый файл, в нём записано 15 строк, в каждой строке – 15 символов. Символы могут быть только ‘0’ или ‘1’. В этом файле «нарисована» одна фигура из единиц – закрашенный квадрат или круг. Известно, что фигура полностью помещается в границах изображения (крайние строки изображения всегда полностью заполнены нулями). Также известно, что диаметр круга или сторона квадрата может быть от 5 до 10 символов включительно. Однако, где точно на картинке расположена фигура и какая она – неизвестно.

Требуется выяснить что за фигура, вывести её название и основные параметры. Также следует вывести степень уверенности в правельности решения.

Пример входных данных:

000000000000000
000111111000000
000111111000000
000111111000000
000111111000000
000111111000000
000111111000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000

Сборка проекта

Для сборки находясь в директории с проектом выполните:

$ make

В результате в директории проекта в папке bin вы получите исполняемый файл check.

Описание

Ввод:

Программа принимает на стандартный ввод данные формат которых описан в пункте Задача.

!!!

Входные данные на которых проходило тестирование можно найти в папке test в директории проекта.

Вывод программы:

Вывод программы имеет следующий вид:

распознаная фигура
ошибка
описание
  • распознаная фигура - "круг", "квадрат" или "неизвестная фигура". В последнем случае осталные пункты не будут выведены.
  • ошибка - Отношение несовпавшей площади эталонной модели и площади исходных данных.
  • описание - Описание основных параметров фигуры.

Utils

В папке проекта в директории utils можно найти несколько полезных скриптов:

  • showarea - утилита позволяющая отображать входные данные. Для этого ей первым параметром нужно указать файл с корректными входными данными.
  • areagen - скрипт позволяющий генерировать входные данные.
  • tester - скрипт выполняющий тестирование программы. Результаты тестирования складываются в папку log.

Алгоритм

Суть алгоритма в том что бы по проекциям на оси X и Y входных данных расчитать параметры фигуры предполагая зарание её вид. После чего построить эталонные проекции этой фигуру и сравнить с исходными. По различающейса площади можно судить о том на сколько мы близки к истине. Так же для того что бы обистечить устойчивость алгоритма к помехам был реализован фильтр.