Introducción
En el campo de las matemáticas conocido como topología , hay cosas llamadas axiomas de separación . Intuitivamente, tiene un conjunto X
y 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 X
funció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 X
y la lista de propiedades.
Entrada
Sus entradas son un número entero n ≥ 2
y una lista de listas T
de enteros. Los enteros T
se extraen de X = [0, 1, ..., n-1]
. Las listas T
pueden 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
x
yy
enX
, existe una lista queT
contiene exactamente uno de ellos. EntoncesX
yT
satisfacer axioma T0 . - Supongamos que para todos los distintos
x
yy
enX
, existen dos listas enT
, una de las cuales contienex
pero noy
, y la otra contieney
pero nox
. EntoncesX
yT
satisfacer axioma T1 . - Suponga que las dos listas anteriores tampoco contienen elementos comunes. Entonces
X
yT
satisfacer axioma T2 .
Su salida es uno de T2
, T1
, T0
o TS
, dependiendo de cuál de las anteriores condiciones bodegas ( TS
significa 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
n
superflua? 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
t
una función como entrada es un truco inteligente!f
por un nombre de operador y sustitúyalosp(x%y)(x%y)
porp(x%y)$x%y
. y por cierto, buen trabajo!