Compito
Ti verrà dato un numero intero positivo e devi generare un " grafico auto-complementare " con quel numero di nodi. Se non sai cosa sia un grafico auto-complementare l'articolo di Wikipedia non ti aiuterà molto, quindi di seguito sono riportate due spiegazioni, una tecnica e una non tecnica.
Non tecnico
Un grafico è un insieme di nodi collegati da linee. Ogni coppia di punti può essere collegata da una linea o nessuna. Il "complemento" di un grafico è il risultato della presa di un grafico e della connessione di tutti i nodi non connessi e della disconnessione di tutti i nodi che lo sono.
Un grafico auto-complementare è un grafico il cui complemento può essere riorganizzato nella forma dell'originale. Di seguito è riportato un esempio di un grafico auto-complementare e una dimostrazione di come.
Ecco un grafico con 5 nodi:
Evidenzieremo tutti i luoghi in cui le connessioni potrebbero andare con linee tratteggiate rosse:
Ora troveremo il complemento del grafico scambiando i bordi rosso e nero:
Questo non sembra il grafico originale, ma se spostiamo i nodi in questo modo (ogni passaggio scambia due nodi):
Otteniamo il grafico originale! Il grafico e il suo complemento sono lo stesso grafico
Tecnico
Un grafico auto-complementare è un grafico isomorfo al suo complemento.
specificazioni
Riceverai un numero intero positivo tramite il metodo più adatto a te. E otterrai un grafico in qualunque metodo tu ritenga opportuno, questo include ma non è limitato a Modulo matrice adiacenza , Modulo elenco adiacenza e, naturalmente, immagini! Il grafico generato deve essere il proprio complemento e avere tanti nodi quanti l'input intero. Se tale grafico non esiste, è necessario generare un valore errato.
Questo è code-golf e dovresti mirare a ridurre al minimo il numero di byte.
Casi test
Di seguito sono riportate le immagini delle possibili uscite per diversi n
4
5
9
GraphData@{"SelfComplementary",{#,1}}&
, credo che semplicemente carichi alcuni esempi di bassi n
dal database di Wolfram, quindi questo non funzionerà per input arbitrariamente grandi.