Étant donné plusieurs ensembles, par exemple s1={2,3,7}
, s2={1,2,4,7,8}
et s3={4,7}
, un diagramme de Venn visualise chaque ensemble par une courbe fermée et des éléments d'ensemble qui sont à l'intérieur ou à l'extérieur du périmètre de la courbe, selon qu'ils font partie de l'ensemble ou non. Étant donné que tous les éléments d'ensemble n'apparaissent qu'une seule fois dans le digramme de Venn, les courbes représentant chaque ensemble doivent se chevaucher si un élément est présent dans plusieurs ensembles. Nous appelons chacun de ces chevauchements une cellule du diagramme de Venn.
Cette explication peut être un peu déroutante, alors regardons un exemple.
Exemple
Un diagramme de Venn pour les ensembles s1
, s2
et s3
pourrait ressembler à ceci:
Les cellules de ce diagramme de Venn sont (lire de haut en bas, de gauche à droite) {1,8}
, {2}
, {7}
, {4}
, {3}
, {}
et {}
.
En pratique, on ne rencontre généralement que des diagrammes de Venn de deux ou trois ensembles, car la représentation des diagrammes de Venn de quatre ensembles ou plus n'est pas très claire. Cependant, ils existent, par exemple pour six ensembles:
CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=1472309
La tâche
Étant donné un ensemble non vide d'ensembles d'entiers positifs dans toute représentation raisonnable, renvoyer l'ensemble de cellules du diagramme Venn des ensembles d'entrée. Plus précisément, aucune représentation graphique n'est nécessaire.
- Vous pouvez écrire un programme complet ou une fonction.
- Vous pouvez renvoyer autant d'ensembles vides qu'il y a de cellules vides (c'est-à-dire une liste de toutes les cellules) au lieu d'un seul ensemble vide (c'est-à-dire l' ensemble de cellules).
- Voici quelques façons d'entrée raisonnables pour l'exemple ci - dessus comprennent , sans s'y limiter
{{2,3,7},{1,2,4,7,8},{4,7}}
,[[2,3,7],[1,2,4,7,8],[4,7]]
,"2,3,7;1,2,4,7,8;4,7"
ou"2 3 7\n1 2 4 7 8\n4 7"
. En cas de doute si le format d'entrée choisi est acceptable, n'hésitez pas à demander dans un commentaire. - Si possible, votre format de sortie doit correspondre à votre format d'entrée. Notez que cette règle requiert que votre format puisse afficher sans ambiguïté les ensembles vides.
- Il s'agit de code-golf , essayez donc d'utiliser le moins d'octets possible dans la langue de votre choix. Afin d'encourager la concurrence par langue plutôt qu'entre les langues, je n'accepterai pas de réponse.
Cas de test
Voici quelques entrées ainsi que des sorties possibles:
input -> output
{{2,3,7},{1,2,4,7,8},{4,7}} -> {{1,8},{2},{7},{4},{3},{}} (or {{1,8},{2},{7},{4},{3},{},{}})
{{1,2,3},{4,5,6},{7,8,9}} -> {{1,2,3},{4,5,6},{7,8,9},{}}
{{}} -> {{}}
{{1,2,3},{1,2}} -> {{1,2},{3},{}}
{{4,3,8},{1,2,9,3},{14,7,8,5},{6,11,3,8},{10},{9,4,3,7,10}} -> {{6,11},{10},{4},{3},{8},{5,14},{1,2},{9},{7},{}}
{{2,3,4,7},{},{1,3,7,5,6},{2,3,7,5},{7,2,4,3,6},{1,4,5}} -> {{},{4},{2},{7,3},{1},{6},{5}}
{{1,2,3,4},{1,2,5,6},{1,3,5,7}} -> {{4},{3},{2},{1},{6},{5},{7}}
{{1,2,3},{4,5,6},{7,8,9},{},{},{},{}}
t- il pas ?