introduzione
Nel campo della matematica noto come topologia , ci sono cose chiamate assiomi di separazione . Intuitivamente, hai un set X
e una raccolta di sottoinsiemi di X
cui possiamo pensare come proprietà. Il sistema è ben separato, se uno può distinguere tra tutti gli elementi in X
base alle loro proprietà. Gli assiomi di separazione formalizzano questa idea. In questa sfida, il tuo compito è controllare tre assiomi di separazione, dati X
e l'elenco delle proprietà.
Ingresso
I tuoi input sono un numero intero n ≥ 2
e un elenco di elenchi T
di numeri interi. Gli interi in T
vengono estratti da X = [0, 1, ..., n-1]
. Gli elenchi in T
possono essere vuoti e non ordinati, ma non conterranno duplicati.
Produzione
L'output è una delle quattro stringhe, determinata da tre assiomi di separazione, ciascuno più forte dell'ultimo. Esistono altri assiomi, ma restiamo fedeli a questi per semplicità.
- Supponiamo che per tutti i distinti
x
ey
inX
, esiste un elencoT
contenente esattamente uno di essi. QuindiX
eT
soddisfa l' assioma T0 . - Supponiamo che per tutti i distinti
x
ey
inX
, ci siano due elenchi inT
, uno dei quali contienex
ma nony
, e l'altro contieney
ma nonx
. QuindiX
eT
soddisfa l' assioma T1 . - Supponiamo che anche i due elenchi sopra non contengano elementi comuni. Quindi
X
eT
soddisfa l' assioma T2 .
L'output è uno dei T2
, T1
, T0
o TS
, a seconda di quale delle condizioni di cui sopra vale ( TS
mezzo nessuno di loro lo fanno). Si noti che T2 è più forte di T1, che è più forte di T0, e si dovrebbe sempre produrre l'assioma più forte possibile.
Regole e punteggio
È possibile scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
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
0 []
dovrebbe dare T2
.
n
superfluo? Nel resto della sfida, non la vedo usata oltre la definizione di quali elementi possono essere contenutiT
, quindi è solo una scorciatoia fornita perT.Maximum()
?