Introducción
En el campo de las matemáticas conocido como topología , hay cosas llamadas axiomas de separación . Intuitivamente, tiene un conjunto Xy una colección de subconjuntos de X, que podemos considerar como propiedades. El sistema está bien separado, si se puede distinguir entre todos los elementos en Xfunción de sus propiedades. Los axiomas de separación formalizan esta idea. En este desafío, su tarea es verificar tres axiomas de separación, dados Xy la lista de propiedades.
Entrada
Sus entradas son un número entero n ≥ 2y una lista de listas Tde enteros. Los enteros Tse extraen de X = [0, 1, ..., n-1]. Las listas Tpueden estar vacías y sin clasificar, pero no contendrán duplicados.
Salida
Su salida es una de cuatro cadenas, determinada por tres axiomas de separación, cada uno más fuerte que el anterior. Hay otros axiomas, pero nos quedamos con estos por simplicidad.
- Suponga que para todos los distintos
xyyenX, existe una lista queTcontiene exactamente uno de ellos. EntoncesXyTsatisfacer axioma T0 . - Supongamos que para todos los distintos
xyyenX, existen dos listas enT, una de las cuales contienexpero noy, y la otra contieneypero nox. EntoncesXyTsatisfacer axioma T1 . - Suponga que las dos listas anteriores tampoco contienen elementos comunes. Entonces
XyTsatisfacer axioma T2 .
Su salida es uno de T2, T1, T0o TS, dependiendo de cuál de las anteriores condiciones bodegas ( TSsignifica que ninguno de ellos lo hacen). Tenga en cuenta que T2 es más fuerte que T1, que es más fuerte que T0, y siempre debe generar el axioma más fuerte posible.
Reglas y puntaje
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Casos de prueba
2 [] -> TS
2 [[],[1]] -> T0
2 [[0],[1]] -> T2
3 [[0],[0,1,2],[1,2]] -> TS
3 [[],[0],[0,1],[2]] -> T0
3 [[0],[0,1],[2,1],[0,1,2]] -> T0
3 [[0],[0,1],[2,1],[2,0]] -> T1
6 [[0,2,4],[0,3,5],[1,2],[3,4,5]] -> TS
6 [[0,2,4],[0,3,5],[1,2],[2,5],[3,4,5]] -> T0
6 [[0,2,4],[0,3,5],[1,2],[2,5],[3,1],[3,4,5]] -> T1
6 [[0,1],[0,2,3],[1,4],[2,4],[2,3,5],[1,3],[4,5]] -> T2

nsuperflua? En el resto del desafío, no veo que se use más allá de definir qué elementos pueden estarT, entonces, ¿es solo un atajo proporcionadoT.Maximum()?0 []debería darT2.Respuestas:
Haskell,
317209174168 bytesLa función f hace el trabajo.
pruebas:
salida:
fuente
tuna función como entrada es un truco inteligente!fpor un nombre de operador y sustitúyalosp(x%y)(x%y)porp(x%y)$x%y. y por cierto, buen trabajo!