Решения задачи с Ulearn

Практика «GraphViz»

Скачайте проект FluentApi.Graph.

Есть широко известный набор утилит для визуализации графов — GraphViz. Эти утилиты манипулируют описанием графов в текстовом формате *.dot (он же в прошлом *.gv). Спецификация формата.

Пример графа в этом формате:

 

Кстати, если вам когда-то в будущем понадобится визуализация графов, то экономнее не программировать это самостоятельно, а воспользоваться одним из готовых инструментов: Например, GraphViz даёт удобную работу из командной строки, а Gephi — удобный графический интерфейс.

Ну а в этой задаче предстоит создать fluent API для задания графов в dot-формате. Чтобы можно было сконцентрироваться исключительно на fluent API, в проекте уже реализованы вспомогательные классы (Graph, DotFormatWriter и другие). Не надо повторять код уже написанный в этих классах.

Примеры использования требуемого API ищите в тесте DotGraphBuilder_Tests.

Детали

В формате dot у вершин и ребер можно указывать значения атрибутов. Вот полный список поддерживаемых атрибутов. Из этого многообразия реализуйте поддержку только следующих:

  • Для вершин: color, fontsize, label и shape;
  • Для ребер: color, fontsize, label и weight.

Поскольку одна из целей fluent API — это служить документацией, то в API нигде не должно быть возможности обратиться к члену, непредусмотренному в данном контексте. Например, у вершины не должно быть возможности указать weight, а у ребра — shape. Это проверяется в секретном тесте проверяющей системы.

И как обычно, не допускайте дублирования кода в своём решении!

Все ссылки ещё раз:

Стоимость решения этой задачи всего 100 рублей, закажи решения у меня 🙂

Обновлено: 20.11.2018 — 10:36

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.