Tarefa
Você receberá um número inteiro positivo e deverá gerar um " gráfico auto-complementar " com muitos nós. Se você não sabe o que é um gráfico auto-complementar, o artigo da wikipedia não o ajudará muito, então abaixo estão duas explicações, uma técnica e uma não técnica.
Não técnico
Um gráfico é um conjunto de nós conectados por linhas. Cada par de pontos pode ser conectado por uma linha ou nenhuma. O "complemento" de um gráfico é o resultado de pegar um gráfico e conectar todos os nós que não estão conectados e desconectar todos os nós que estão.
Um gráfico auto-complementar é um gráfico cujo complemento pode ser reorganizado na forma do original. Abaixo está um exemplo de um gráfico auto-complementar e uma demonstração de como.
Aqui está um gráfico com 5 nós:
Destacaremos todos os lugares em que as conexões podem ir com linhas pontilhadas em vermelho:
Agora vamos encontrar o complemento do gráfico trocando as bordas vermelha e preta:
Isso não se parece com o gráfico original, mas se movermos os nós da seguinte maneira (cada etapa alterna dois nós):
Temos o gráfico original! O gráfico e seu complemento são o mesmo gráfico
Técnico
Um gráfico auto-complementar é um gráfico isomórfico ao seu complemento.
Especificações
Você receberá um número inteiro positivo através do método que melhor lhe convier. E você saída um gráfico em qualquer método que você considerem adequadas, o que inclui, mas não se limita a Matriz de Adjacência Form , Adjacência Lista de Formulários , e, claro, fotografias! O gráfico gerado deve ser seu próprio complemento e ter tantos nós quanto a entrada inteira. Se esse gráfico não existir, você deve gerar um valor falso.
Isso é código-golfe e você deve tentar minimizar sua contagem de bytes.
Casos de teste
Abaixo estão fotos de possíveis saídas para vários n
4
5
9
GraphData@{"SelfComplementary",{#,1}}&
, acredito que basta carregar alguns exemplos para baixo n
no banco de dados da Wolfram, para que isso não funcione para entradas arbitrariamente grandes.