GithubHelp home page GithubHelp logo

colormap's Introduction

Задание

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

Реализация

Структура программы

  • Creator.py
  • Reader.py
  • Geometry.py
  • Graphs.py
  • GeoTests.py
  • Visual.py
  • task_map.py
  • file1.txt
  • file2.txt

Описание

Creator.py

Модуль, хранящий класс для создания карты по умолчанию.Легко дописываются нужные страны в виде: страна = (отрезок, отрезок, отрехок....), отрезок=(точка, точка), точка=(х,у), итого: страна=(((х0,у0),(х1,у1)),((х1,у1),(х2,у2)), ... , ((.,.),(х0,у0)));

Имеет два метода записи в файл: текстовый (для текстового чтения) и сериализация pickle Также в этом модуле хранится функция записи карты из памяти в текстовый файл.

Reader.py

Модуль, хранящий класс для чтения карты из файла.(два типа файлов)

Текстовый файл с картой представляет из себя: В первой строке натуральное число - количество стран. Каждая последующая строка - отдельная страна. Страна - набор вершин многоугольника записанных через пробел, где вершина это записанные через пробел координаты х и у. Пример в файле file1

Geometry.py

В этом модуле хранятся функции работы с геометрией(вычисление длины отрезка, проверка отрезков на смежность, проверка многоугольников на смежность).

Graphs.py

Модуль хранит класс граф с методами создания графа смежности по списку стран(с помощью списка смежности), сортировки графа по степени смежности, раскраски графа.

GeoTests.py

Модуль тестирования геометрических функций.

Visual.py

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

file1.txt, file2_pickle.txt

Две карты с различным числом цветов и смежностей.

task_map.py

Основной скрипт программы. Состоит из нескольких частей:

  1. Импорт всего необходимого
  2. Обработка аргументов. task_map.py [-h] [-o FILENAME] [-f METHOD] [-v] [-t]
  • Содержит вывод краткой справки по аргументам (ключ -h)
  • Обработка ключа '-o', позволяющая открыть файл с картой
  • Ключ '-f' позволяет задать формат входного файла(pickle или текст). По умолчанию, в программе используются текстовые файлы.
  • Ключ '-v' показывающий версию программы
  • Ключ '-t' запускающий тесты.
  1. Если аргументы отсутствовали, то последовательно выполняются шаги по раскраске карты - чтение, создание графа, сортировка, раскраска, визуализация.

Versions

UPD v1.7:

  1. Обработка ошибок
  2. тесты

UPD v1.8:

  1. о программе, хэлп
  2. использование ООП

UPD v1.9:

Добавлена возможность работы с текстовыми файлами.

UPD v2.0:

Рефакторинг, исправление ошибок, добавлен аргумент выбора формата входного файла.

colormap's People

Contributors

m-messiah avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.