Dati più insiemi, ad es. s1={2,3,7}
, s2={1,2,4,7,8}
E s3={4,7}
, un diagramma di Venn visualizza ogni set da una curva chiusa e imposta elementi che si trovano all'interno o all'esterno del perimetro della curva, a seconda che siano o meno elementi dell'insieme. Poiché tutti gli elementi dell'insieme vengono visualizzati una sola volta nel digram di Venn, le curve che rappresentano ciascun insieme devono sovrapporsi se un elemento è presente in più di un insieme. Chiamiamo ciascuna di queste sovrapposizioni una cella del diagramma di Venn.
Questa spiegazione potrebbe essere un po 'confusa, quindi diamo un'occhiata a un esempio.
Esempio
Un diagramma di Venn per i set s1
, s2
e s3
potrebbe essere la seguente:
Le cellule di questo diagramma Venn sono (lette dall'alto verso il basso, da sinistra a destra) {1,8}
, {2}
, {7}
, {4}
, {3}
, {}
e {}
.
In pratica, si incontrano comunemente solo diagrammi di Venn di due o tre serie, poiché la rappresentazione dei diagrammi di Venn di quattro o più serie non è molto chiara. Tuttavia esistono, ad esempio per sei set:
CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=1472309
L'obiettivo
Dato un insieme non vuoto di insiemi di numeri interi positivi in qualsiasi rappresentazione ragionevole, restituisce l'insieme di celle del diagramma di Venn degli insiemi di input. In particolare, non è necessaria alcuna rappresentazione grafica.
- È possibile scrivere un programma completo o una funzione.
- È possibile restituire tutti i set vuoti quante sono le celle vuote (ovvero un elenco di tutte le celle) anziché un solo set vuoto (ovvero il set di celle).
- Alcuni modi ragionevoli di ingresso per l'esempio precedente includono ma non sono limitati a
{{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"
o"2 3 7\n1 2 4 7 8\n4 7"
. In caso di dubbi sull'accettabilità del formato di input scelto, non esitare a chiedere in un commento. - Il formato di output deve corrispondere al formato di input, se possibile. Nota che questa regola richiede che il tuo formato sia in grado di visualizzare in modo univoco insiemi vuoti.
- Questo è code-golf , quindi prova a usare il minor numero di byte possibile nella lingua che preferisci. Al fine di incoraggiare la concorrenza per lingua anziché tra lingue, non accetterò una risposta.
Casi test
Ecco alcuni input insieme a possibili output:
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},{},{},{},{}}
?