Dados conjuntos múltiples, por ejemplo s1={2,3,7}
, s2={1,2,4,7,8}
y s3={4,7}
, un diagrama de Venn visualiza cada conjunto mediante una curva cerrada y establece elementos que están dentro o fuera del perímetro de la curva, dependiendo de si son elementos del conjunto o no. Como todos los elementos del conjunto aparecen solo una vez en el diagrama de Venn, las curvas que representan cada conjunto deben superponerse si hay un elemento presente en más de un conjunto. Llamamos a cada uno de estos superpuestos una celda del diagrama de Venn.
Esta explicación puede ser un poco confusa, así que echemos un vistazo a un ejemplo.
Ejemplo
Un diagrama de Venn para conjuntos s1
, s2
y s3
podría verse así:
Las células de este diagrama de Venn se (leen de arriba a abajo, de izquierda a derecha) {1,8}
, {2}
, {7}
, {4}
, {3}
, {}
y {}
.
En la práctica, comúnmente se encuentran solo diagramas de Venn de dos o tres conjuntos, porque la representación de los diagramas de Venn de cuatro o más conjuntos no es muy clara. Sin embargo, existen, por ejemplo, para seis conjuntos:
CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=1472309
La tarea
Dado un conjunto no vacío de conjuntos de enteros positivos en cualquier representación razonable, devuelva el conjunto de celdas del diagrama de Venn de los conjuntos de entrada. Específicamente, no se necesita una representación gráfica.
- Puede escribir un programa completo o una función.
- Puede devolver tantos conjuntos vacíos como celdas vacías (es decir, una lista de todas las celdas) en lugar de solo un conjunto vacío (es decir, el conjunto de celdas).
- Algunas formas razonables de entrada para el ejemplo de arriba incluyen, pero no se limitan 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"
. Si tiene dudas sobre si el formato de entrada elegido es aceptable, no dude en preguntar en un comentario. - Su formato de salida debe coincidir con su formato de entrada, si es posible. Tenga en cuenta que esta regla requiere que su formato pueda mostrar conjuntos vacíos sin ambigüedad.
- Este es el código de golf , así que trate de usar la menor cantidad de bytes posible en el idioma que elija. Para alentar la competencia por idioma en lugar de entre idiomas, no aceptaré una respuesta.
Casos de prueba
Aquí hay algunas entradas junto con posibles salidas:
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},{},{},{},{}}
?