задача
Вам будет дано положительное целое число, и вы должны вывести « самодополняющий граф » с таким количеством узлов. Если вы не знаете, что такое самодополняющий граф, статья Википедии не сильно вам поможет, поэтому ниже приведены два объяснения: техническое и нетехническое.
Нетехническое
График - это набор узлов, соединенных линиями. Каждая пара точек может быть соединена одной линией или ни одной. «Дополнение» графа является результатом взятия графа и соединения всех узлов, которые не связаны, и отсоединения всех узлов, которые есть.
Самодополняющий граф - это граф, дополнение которого может быть преобразовано в форму оригинала. Ниже приведен пример самодополняющего графа и демонстрация того, как.
Вот график с 5 узлами:
Мы выделим все места, где соединения могут идти с красными пунктирными линиями:
Теперь мы найдем дополнение графа, поменяв местами красный и черный края:
Это не похоже на исходный график, но если мы переместим узлы вокруг так (каждый шаг заменяет два узла):
Мы получаем оригинальный график! График и его дополнение - это тот же граф
технический
Самодополняющий граф - это граф, изоморфный своему дополнению.
Характеристики
Вы получите положительное целое число любым удобным для вас способом. И вы будете выходные график в какой бы метод вы считаете целесообразным, это включает в себя , но не ограничивается матрицей смежности формы , смежности списка Форма , и, конечно , фотографии! Выводимый граф должен быть его собственным дополнением и иметь столько же узлов, сколько и целочисленный ввод. Если такого графа не существует, вы должны вывести ложное значение.
Это код-гольф, и вы должны стремиться минимизировать количество байт.
Тестовые случаи
Ниже приведены изображения возможных выходов для нескольких н
4

5

9

GraphData@{"SelfComplementary",{#,1}}&, я полагаю, что он просто загружает некоторые примеры для низкого уровня nиз базы данных Wolfram, поэтому это не сработает для произвольно больших входных данных.





