Biorąc pod uwagę wiele zestawów, na przykład s1={2,3,7}
, s2={1,2,4,7,8}
i s3={4,7}
, A Venna wizualizuje każdego zestawu przez krzywą zamkniętą i zestaw elementów, które wewnątrz lub na zewnątrz obwodu krzywej, w zależności od tego, czy są one element zbioru lub nie. Ponieważ wszystkie elementy zestawu pojawiają się tylko raz w digramie Venna, krzywe reprezentujące każdy zestaw muszą się nakładać, jeśli element występuje w więcej niż jednym zestawie. Nazywamy każdą taką nakładającą się komórkę diagramu Venna.
To wyjaśnienie może być nieco mylące, więc spójrzmy na przykład.
Przykład
Diagram Venna dla zestawów s1
, s2
a s3
może wyglądać następująco:
Komórki tego diagramu Venna są (czytaj od góry do dołu, od lewej do prawej) {1,8}
, {2}
, {7}
, {4}
, {3}
, {}
i {}
.
W praktyce często spotyka się tylko diagramy Venna dwóch lub trzech zestawów, ponieważ reprezentacja diagramów Venna czterech lub więcej zestawów nie jest bardzo wyraźna. Jednak istnieją, np. Dla sześciu zestawów:
CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=1472309
Zadanie
Biorąc pod uwagę niepusty zbiór dodatnich liczb całkowitych w dowolnej rozsądnej reprezentacji, zwróć zestaw komórek ze schematu Venna zbiorów wejściowych. W szczególności nie jest wymagana reprezentacja graficzna.
- Możesz napisać pełny program lub funkcję.
- Możesz zwrócić tyle pustych zestawów, ile jest pustych komórek (tj. Listę wszystkich komórek) zamiast tylko jednego pustego zestawu (tj. Zestawu komórek).
- Niektóre rozsądne sposoby wejścia do powyższego przykładu, obejmują, ale nie są ograniczone do
{{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"
lub"2 3 7\n1 2 4 7 8\n4 7"
. W razie wątpliwości, czy wybrany format wejściowy jest akceptowalny, prosimy o komentarz. - Jeśli to możliwe, format wyjściowy powinien odpowiadać formatowi wejściowemu. Pamiętaj, że ta reguła wymaga, aby Twój format mógł jednoznacznie wyświetlać puste zestawy.
- To jest golf golfowy , więc spróbuj użyć jak najmniej bajtów w wybranym języku. Aby zachęcić do rywalizacji między językami zamiast między językami, nie przyjmuję odpowiedzi.
Przypadki testowe
Oto niektóre dane wejściowe wraz z możliwymi danymi wyjściowymi:
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},{},{},{},{}}
?