Introdução
No campo da matemática conhecido como topologia , existem coisas chamadas axiomas de separação . Intuitivamente, você tem um conjunto X
e uma coleção de subconjuntos dos X
quais podemos considerar propriedades. O sistema é bem separado, se é possível distinguir entre todos os itens ou com X
base em suas propriedades. Os axiomas de separação formalizam essa ideia. Nesse desafio, sua tarefa é verificar três axiomas de separação, dados X
e a lista de propriedades.
Entrada
Suas entradas são um número inteiro n ≥ 2
e uma lista de listas T
de números inteiros. Os números inteiros T
são retirados X = [0, 1, ..., n-1]
. As listas em T
podem estar vazias e sem classificação, mas não conterão duplicatas.
Saída
Sua saída é uma das quatro seqüências, determinadas por três axiomas de separação, cada um mais forte que o anterior. Existem outros axiomas, mas mantemos estes por simplicidade.
- Suponha que, para todos os distintos
x
ey
inX
, exista uma listaT
contendo exatamente um deles. EntãoX
eT
satisfazer axioma T0 . - Suponha que, para todos os distintos
x
ey
inX
, exista duas listas emT
, uma das quais contémx
mas nãoy
e a outra contémy
mas nãox
. Então,X
eT
satisfaça o axioma T1 . - Suponha que as duas listas acima também não contenham elementos comuns. Então,
X
eT
satisfaça o axioma T2 .
Sua saída é um dos T2
, T1
, T0
ou TS
, dependendo de qual das condições acima detém ( TS
meios nenhum deles fazem). Observe que T2 é mais forte que T1, que é mais forte que T0, e você sempre deve produzir o axioma mais forte possível.
Regras e pontuação
Você pode escrever um programa completo ou uma função. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste
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
supérflua? No restante do desafio, não o vejo sendo usado além da definição de quais elementos podem estarT
; portanto, é apenas um atalho fornecidoT.Maximum()
?0 []
deve darT2
.Respostas:
Haskell,
317209174168 bytesA função f faz o trabalho.
testes:
saída:
fonte
t
uma função como entrada é um truque inteligente!f
por um nome de operador e substituap(x%y)(x%y)
porp(x%y)$x%y
. e, a propósito, bom trabalho!