Angesichts mehrere Sätze, beispielsweise s1={2,3,7}
, s2={1,2,4,7,8}
und s3={4,7}
ein Venn - Diagramm visualisiert jedem Satz durch eine geschlossene Kurve und Satz Elemente , die entweder innerhalb oder außerhalb des Umfangs der Kurve, je nachdem , ob es sich um Element des Satzes ist oder nicht. Da alle Set-Elemente im Venn-Digramm nur einmal vorkommen, müssen sich die Kurven für jedes Set überlappen, wenn ein Element in mehr als einem Set vorhanden ist. Wir nennen jede solche Überlappung eine Zelle des Venn-Diagramms.
Diese Erklärung kann etwas verwirrend sein. Schauen wir uns ein Beispiel an.
Beispiel
Ein Venn - Diagramm für Sätze s1
, s2
und s3
könnte wie folgt aussehen:
Die Zellen dieses Venn - Diagramm sind (von oben nach unten gelesen, links nach rechts) {1,8}
, {2}
, {7}
, {4}
, {3}
, {}
und {}
.
In der Praxis trifft man üblicherweise nur auf Venn-Diagramme mit zwei oder drei Sätzen, da die Darstellung von Venn-Diagrammen mit vier oder mehr Sätzen nicht sehr klar ist. Sie existieren jedoch, zB für sechs Sets:
CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=1472309
Die Aufgabe
Geben Sie bei einer nicht leeren Menge positiver Ganzzahlen in einer angemessenen Darstellung die Menge der Zellen des Venn-Diagramms der Eingabesätze zurück. Insbesondere ist keine grafische Darstellung erforderlich.
- Sie können ein vollständiges Programm oder eine Funktion schreiben.
- Sie können so viele leere Mengen zurückgeben, wie leere Zellen vorhanden sind (dh eine Liste aller Zellen), anstatt nur eine leere Menge (dh die Menge der Zellen).
- Einige vernünftigen Möglichkeiten der Eingabe für das obige Beispiel beinhalten , sind aber nicht beschränkt auf
{{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"
oder"2 3 7\n1 2 4 7 8\n4 7"
. Wenn Sie Zweifel haben, ob das von Ihnen gewählte Eingabeformat akzeptabel ist, können Sie einen Kommentar abgeben. - Ihr Ausgabeformat sollte nach Möglichkeit mit Ihrem Eingabeformat übereinstimmen. Beachten Sie, dass diese Regel erfordert, dass Ihr Format leere Sätze eindeutig anzeigen kann.
- Das ist Code-Golf , also versuchen Sie, so wenig Bytes wie möglich in der Sprache Ihrer Wahl zu verwenden. Um den Wettbewerb pro Sprache anstatt zwischen den Sprachen zu fördern, akzeptiere ich keine Antwort.
Testfälle
Hier sind einige Eingaben zusammen mit möglichen Ausgaben:
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},{},{},{},{}}
?