Завдання
Вам буде дано додатне ціле число, і ви повинні вивести " самодоповнюючий графік " з такою кількістю вузлів. Якщо ви не знаєте, що саме доповнює графік, це стаття у Вікіпедії, то вам не дуже допоможуть, тому нижче наведено два пояснення - технічне та нетехнічне.
Нетехнічні
Графік - це набір вузлів, які з'єднані лініями. Кожну пару точок можна з'єднати одним рядком або жодним. "Доповнення" графа є результатом взяття графіка та з'єднання всіх вузлів, які не пов'язані між собою, та від'єднання всіх вузлів, які є.
Самодоповнюючий графік - це графік, доповнення якого можна переставити у форму оригіналу. Нижче наводиться приклад самодоповнюючого графіка та демонстрація того, як.
Ось графік з 5 вузлами:
Ми виділимо всі місця, де з'єднання могли пройти червоними пунктирними лініями:
Тепер ми знайдемо доповнення графіка, замінивши червоні та чорні краї:
Це не схоже на початковий графік, але якщо ми переміщуємо вузли так (кожен крок міняє два вузли):
Отримуємо оригінальний графік! Графік та його доповнення - той самий графік
Технічні
Самодоповнюючий графік - це графік, ізоморфний його доповненню.
Технічні умови
Ви отримаєте додатне ціле число будь-яким методом, який вам найбільше підходить. І ви виведете графік будь-яким методом, який вважатимете за потрібне , це включає, але не обмежується Матричною формою суміжності , Формою списку суміжності та, звичайно, зображеннями! Виведений графік повинен бути власним доповненням і мати стільки вузлів, скільки цілий вхід. Якщо такого графіка немає, потрібно вивести хибне значення.
Це код-гольф, і ви повинні прагнути мінімізувати кількість байтів.
Випробування
Нижче наведено зображення можливих виходів для декількох n
4
5
9
GraphData@{"SelfComplementary",{#,1}}&
, я вважаю, що просто завантажує деякі приклади низько n
з бази даних Wolfram, тому це не спрацює для довільно великих даних.