Вступление
В области математики, известной как топология , есть вещи, называемые аксиомами разделения . Интуитивно понятно, что у вас есть набор X
и набор подмножеств X
, которые мы можем рассматривать как свойства. Система хорошо разделена, если можно различить все предметы X
по их свойствам. Аксиомы разделения формализуют эту идею. В этом задании ваша задача - проверить три заданные аксиомы разделения X
и список свойств.
вход
Ваши входные данные представляют собой целое число n ≥ 2
и список списков T
целых чисел. Целые числа в T
взяты из X = [0, 1, ..., n-1]
. Списки T
могут быть пустыми и не отсортированными, но они не будут содержать дубликатов.
Выход
Ваш вывод - одна из четырех строк, определяемых тремя аксиомами разделения, каждая из которых сильнее предыдущей. Есть и другие аксиомы, но мы придерживаемся их для простоты.
- Предположим , что для всех различны
x
иy
вX
, существует список вT
содержащий ровно один из них. ТогдаX
иT
удовлетворяем аксиоме T0 . - Предположим, что для всех различных
x
иy
внутриX
существует два спискаT
, один из которых содержит,x
но не содержитy
, а другой содержит,y
но не содержитx
. ТогдаX
иT
удовлетворяем аксиоме T1 . - Предположим, что два списка выше также не содержат общих элементов. Тогда
X
иT
удовлетворяем аксиоме Т2 .
Ваш выход один из T2
, T1
, T0
или TS
, в зависимости от того, какая из указанных выше условий не выполнено ( TS
средство , никто из них делать). Обратите внимание, что T2 сильнее, чем T1, который сильнее, чем T0, и вы всегда должны выводить максимально возможную аксиому.
Правила и оценки
Вы можете написать полную программу или функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Контрольные примеры
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
лишний? В остальной части задачи я не вижу, чтобы он использовался помимо определения того, какие элементы могут быть в немT
, так что это просто предоставленный ярлыкT.Maximum()
?0 []
должен датьT2
.Ответы:
Haskell,
317209174168 байтФункция f выполняет свою работу.
тесты:
выход:
источник
t
функции в качестве ввода - умный трюк!f
на имя оператора и заменитьp(x%y)(x%y)
наp(x%y)$x%y
. и, кстати, хорошая работа!