Une séquence graphique est une séquence d'entiers positifs indiquant chacun le nombre d'arêtes pour un nœud dans un graphique simple . Par exemple, la séquence 2 1 1
indique un graphique à 3 nœuds, un avec 2 arêtes et 2 avec une connexion.
Toutes les séquences ne sont pas des séquences graphiques. Par exemple, ce 2 1
n'est pas une séquence graphique car il n'y a aucun moyen de connecter deux nœuds de sorte que l'un d'entre eux ait deux bords.
Tâche
Vous prendrez une séquence d'entiers par toute méthode raisonnable . Cela comprend, mais sans s'y limiter , un tableau d'entiers et sa taille, une liste chaînée d'entiers non signés et un vecteur de doubles. Vous pouvez supposer qu'il n'y aura pas de zéros dans l'entrée. Vous pouvez également supposer que l'entrée est triée du moins au plus grand ou du plus grand au moins.
Vous devez indiquer si la séquence est ou non une séquence graphique. Une valeur vraie si c'est une valeur fausse sinon.
Objectif
Il s'agit de code-golf, l'objectif est de minimiser le nombre d'octets dans votre programme
Cas de test
Trié du plus grand au moins
-> 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
la source
0
s pour la séquence videRéponses:
Mathematica, 25 octets
Ouais, un autre intégré. (Prend l'entrée comme une liste d'entiers positifs.) Nécessite le chargement du
Combinatorica
package.la source
Python 2 (code de sortie), 53 octets
Essayez-le en ligne!
Sorties via code de sortie.
Utilise une version de l'algorithme Havel-Hakimi. Décrémente à la fois le plus grand élément
k
et lek
'e plus grand élément (sans compterk
lui-même), ce qui correspond à l'attribution d'une arête entre les deux sommets avec ces degrés. Se termine avec succès lorsque la liste devient tous les zéros. Sinon, s'il y a un index hors limites, échoue avec erreur. Toutes les valeurs négatives créées finissent également par conduire à une erreur hors limites.la source
CJam (20 octets)
Suite de tests en ligne comprenant quelques tests supplémentaires que j'ai ajoutés pour détecter des bugs dans certaines de mes tentatives.
Il s'agit d'un bloc (fonction) anonyme qui prend un tableau d'entiers sur la pile et quitte
0
ou1
sur la pile. Il suppose que l'entrée est triée en ordre croissant.Le tableau d'entrée peut ne pas être vide, mais peut contenir des zéros, conformément à la réponse d'OP à ma requête sur le sujet des entrées vides.
Dissection
Cela fait suite à la réponse d'OP dans la mise en œuvre de l' algorithme Havel-Hakimi .
la source
Python 2 , 108 octets
Voici mon implémentation en Python. Je suis sûr qu'il peut être battu par un golfeur ou un mathématicien plus expérimenté. Il implémente l'algorithme Havel-Hakimi.
Essayez-le en ligne!
la source
[2,1,1]
renvoieTrue
mais[1,1,2]
retourne0
- EDIT: vient de voir que votre spécification dit que vous pouvez supposer qu'il est trié (j'avais vu le cas de test9 4 5
).Haskell ,
102 98 9594 octetsEssayez-le en ligne! Utilisation:,
f [3,3,2,2,1,1]
retourneTrue
ouFalse
. Suppose que l'entréene contient pas de zéros etest triée par ordre décroissant, comme autorisé dans le défi.Explication:
Edit: Cela semble suivre le Havel-Hakimi mentionné dans d'autres réponses, bien que je ne connaissais pas cet algorithme lors de la rédaction de la réponse.
la source
length r < x
n'est pas tout à fait correct car[1,0]
retournera vrai, mais il n'y a pas de graphique simple avec 2 nœuds avec un et zéro front.Gelée , 12 octets
Un lien monadique acceptant une liste qui donne
1
si les réponses sont cohérentes sinon0
.Essayez-le en ligne! Ou consultez la suite de tests .
Comment?
la source
05AB1E ,
2625 octetsEssayez-le en ligne!
Explication
la source
JavaScript (ES6),
82 8076 octetsMerci à ETHproductions pour avoir économisé de nombreux octets!
Usage
Production
la source
map((a,b)=>b<$?a-1:a)
parmap(a=>a-($-->0))
pour économiser 4 octets.R , 20 octets
Mathematica n'est pas le seul langage à intégrer! ;-)
Le
igraph
package doit être installé. Prend l'entrée comme vecteur d'entiers.la source
Rubis , 90 octets
Porté de cette question qui s'est avérée être un doublon de cela. Utilise Havel-Hakimi puisque c'est celui mentionné dans cette question.
Essayez-le en ligne!
la source
05AB1E , 19 octets
Port of JonathanAllan 's Jelly answer , alors assurez-vous de lui donner un vote positif !!
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Stax ,
1412 octetsExécuter et déboguer
Ce programme gère les entrées vides et non triées.
la source