introduction
Dans le domaine des mathématiques connu sous le nom de topologie , il existe des choses appelées axiomes de séparation . Intuitivement, vous avez un ensemble X
et une collection de sous-ensembles de X
, que nous pouvons considérer comme des propriétés. Le système est bien séparé, si l'on peut distinguer tous les éléments de X
sur la base de leurs propriétés. Les axiomes de séparation officialisent cette idée. Dans ce défi, votre tâche consiste à vérifier trois axiomes de séparation, donnés X
et la liste des propriétés.
Contribution
Vos entrées sont un entier n ≥ 2
et une liste de listes T
d'entiers. Les entiers T
sont tirés de X = [0, 1, ..., n-1]
. Les listes dans T
peuvent être vides et non triées, mais elles ne contiendront pas de doublons.
Production
Votre sortie est l'une des quatre chaînes, déterminées par trois axiomes de séparation, chacun plus fort que le précédent. Il existe d'autres axiomes, mais nous les conservons pour plus de simplicité.
- Supposons que pour tous distincts
x
ety
dansX
, il existe une listeT
contenant exactement un d'entre eux. AlorsX
etT
satisfont l' axiome T0 . - Supposons que pour tout distinct
x
ety
inX
, il existe deux listes inT
, dont l'une contientx
mais pasy
, et l'autre contienty
mais pasx
. AlorsX
etT
satisfait à l' axiome T1 . - Supposons que les deux listes ci-dessus ne contiennent également aucun élément commun. Alors
X
etT
satisfont l' axiome T2 .
Votre sortie est l' un T2
, T1
, T0
ou TS
, selon lequel des conditions ci - dessus tient ( des TS
moyens qu'aucun d'entre eux ne). Notez que T2 est plus fort que T1, qui est plus fort que T0, et vous devez toujours produire l'axiome le plus fort possible.
Règles et notation
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Cas de 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
n
superflue? Dans le reste du défi, je ne le vois pas utilisé au-delà de la définition des éléments qui peuvent êtreT
, est-ce juste un raccourci fourni pourT.Maximum()
?0 []
devrait donnerT2
.Réponses:
Haskell,
317209174168 octetsLa fonction f fait le travail.
tests:
production:
la source
t
une fonction en entrée est une astuce astucieuse!f
par un nom d'opérateur et remplacerp(x%y)(x%y)
parp(x%y)$x%y
. et au fait, beau travail!