Uma sequência gráfica é uma sequência de números inteiros positivos, cada um indicando o número de arestas de um nó em um gráfico simples . Por exemplo, a sequência 2 1 1
denota um gráfico com 3 nós, um com 2 arestas e 2 com uma conexão.
Nem todas as sequências são seqüências gráficas. Por exemplo, 2 1
não é uma sequência gráfica, porque não há como conectar dois nós para que um deles tenha duas arestas.
Tarefa
Você fará uma sequência de números inteiros por qualquer método razoável . Isso inclui, mas não está limitado a , uma matriz de números inteiros e seu tamanho, uma lista vinculada de números inteiros não assinados e um vetor de dobras. Você pode assumir que não haverá zeros na entrada. Você também pode assumir que a entrada é classificada de menor para maior ou maior para menor.
Você deve mostrar se a sequência é ou não uma sequência gráfica. Um valor verdadeiro, se for um valor falso, caso contrário.
Objetivo
Este é o código-golfe, o objetivo é minimizar o número de bytes no seu programa
Casos de teste
Classificado da melhor para a menor
-> True
3 3 3 2 2 2 1 1 1 -> True
3 3 2 2 1 1 -> True
3 3 2 -> False
8 1 1 1 1 1 1 1 1 -> True
1 1 1 1 -> True
1 1 1 -> False
9 5 4 -> False
fonte
0
s para a seqüência vaziaRespostas:
Mathematica, 25 bytes
Sim, outro embutido. (Aceita a entrada como uma lista de números inteiros positivos.) Requer o carregamento do
Combinatorica
pacote.fonte
Python 2 (código de saída), 53 bytes
Experimente online!
Saídas via código de saída.
Usa uma versão do algoritmo Havel-Hakimi. Diminui repetidamente o elemento maior
k
e ok
décimo maior elemento (sem contar emk
si), o que corresponde a atribuir uma aresta entre os dois vértices com esses graus. Termina com sucesso quando a lista se torna todos os zeros. Caso contrário, se houver um índice fora dos limites, falha com erro. Quaisquer valores negativos criados também acabam levando a um erro fora dos limites.fonte
CJam (20 bytes)
Conjunto de testes on-line, incluindo alguns testes extras que adicionei para detectar bugs em algumas de minhas tentativas.
Este é um bloco anônimo (função) que pega uma matriz de números inteiros na pilha e deixa
0
ou1
na pilha. Assume que a entrada é classificada em ordem crescente.A matriz de entrada pode não estar vazia, mas pode conter zeros, de acordo com a resposta do OP à minha consulta sobre o assunto de entradas vazias.
Dissecação
Isto segue a resposta do OP na implementação do algoritmo Havel-Hakimi .
fonte
Python 2 , 108 bytes
Aqui está minha implementação em Python. Tenho certeza de que pode ser derrotado por um golfista ou matemático mais experiente. Ele implementa o algoritmo Havel-Hakimi.
Experimente online!
fonte
[2,1,1]
retornaTrue
mas[1,1,2]
retorna0
- EDIT: acabei de ver que sua especificação disse que você pode assumir que está classificado (eu tinha visto o caso de teste9 4 5
).Haskell ,
102 98 9594 bytesExperimente online! Uso:,
f [3,3,2,2,1,1]
retornosTrue
ouFalse
. Assume que a entradanão contém zeros eé classificada em ordem decrescente, conforme permitido no desafio.Explicação:
Edit: Isso parece seguir o Havel-Hakimi mencionado em outras respostas, embora eu não conhecesse esse algoritmo ao escrever a resposta.
fonte
length r < x
não está tão certo quanto[1,0]
retornará true, mas não há gráfico simples com 2 nós com uma e zero arestas.Gelatina , 12 bytes
Um link monádico que aceita uma lista que gera
1
se as respostas forem consistentes de outra forma0
.Experimente online! Ou veja a suíte de testes .
Quão?
fonte
05AB1E ,
2625 bytesExperimente online!
Explicação
fonte
JavaScript (ES6),
82 8076 bytesObrigado a ETHproductions por economizar muitos bytes!
Uso
Resultado
fonte
map((a,b)=>b<$?a-1:a)
pormap(a=>a-($-->0))
para salvar 4 bytes.R , 20 bytes
O Mathematica não é o único idioma com built-ins! ;-)
O
igraph
pacote precisa ser instalado. Recebe entrada como um vetor de números inteiros.fonte
Ruby , 90 bytes
Portado desta pergunta que acabou sendo uma duplicata disso. Usa Havel-Hakimi, já que foi o mencionado nessa pergunta.
Experimente online!
fonte
05AB1E , 19 bytes
Resposta da geléia do porto de JonathanAllan , por isso não deixe de vota-lo!
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
Stax ,
1412 bytesExecute e depure
Este programa lida com entradas vazias e não classificadas.
fonte