Sfida
Dato un insieme T
di sottoinsiemi di un insieme finito S={1,2,3,...,n}
, determinare se si T
tratta di una topologia o meno.
Spiegazione
Il powerset P(S)
di alcuni set S
è l'insieme di tutti i sottoinsiemi di S
. Qualche esempio:
S = {}, P(S) = {{}}
S = {1}, P(S) = {{}, {1}}
S = {1,2}, P(S) = {{}, {1}, {2}, {1,2}}
S = {1,2,3}, P(S) = {{}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}}
Una topologia T
sul set S
è un sottoinsieme di P(S)
con le seguenti proprietà:
{}
è dentroT
edS
è dentroT
- Se
A
eB
sono dentro,T
lo è anche il loro incrocioA ∩ B
- Se
A
eB
sono dentro,T
lo è anche la loro unioneA ∪ B
*
* Questa definizione non è del tutto corretta, ma è vera per i set finiti, che è sufficiente ai fini di questa sfida. L'attuale assioma consentirebbe anche infinite unioni, ma questo è irrilevante nel caso finito.
Dettagli
- Puoi supporre che
S = {1,2,...,n}
(o in alternativaS = {0,1,...,n}
) dov'èn
il numero intero più grande che appare negli insiemi diT
. - Il formato di input è flessibile: puoi utilizzare una stringa, un elenco di elenchi o un insieme di elenchi o qualsiasi formato simile che il tuo linguaggio possa gestire. Puoi anche usare set come
S = {0,1,...,n}
se fosse più conveniente. - L'output deve essere truthey o falsey.
- È consentito prendere
n
(o in alternativan+1
on-1
) come input aggiuntivo. - Se lavori con elenchi ordinati, puoi presumere che i numeri all'interno di un set siano ordinati. Puoi anche supporre che l'elenco abbia un certo ordine (ad es. Lessicografico.
- Dato che rappresentiamo i set, puoi presumere che non ci siano due voci della loro rappresentazione in elenco uguali.
Esempi
topologie
{{}} over {}
{{},{1}} over {1}
P(S) over S (see in the explanation)
{{},{1},{1,2}} over {1,2}
{{},{1},{2,3},{1,2,3}} over {1,2,3}
{{1}, {1,2,3}, {1,4,5,6}, {1,2,3,4,5,6}, {}, {2,3}, {4,5,6}, {2,3,4,5,6}}
{{}, {1}, {2,3}, {2}, {4,5,6}, {5,6}, {5}, {2,5,6}, {2,5}, {1,5}, {1,2,3,4,5,6}, {1,2,3}, {1,2}, {1,4,5,6}, {1,5,6}, {1,2,5,6}, {2,3,4,5,6}, {2,3,5,6}, {2,3,5}, {1,2,3,5}, {2,4,5,6}, {1,2,5}, {1,2,3,5,6}, {1,2,4,5,6}}
{{}, {1}, {1,2}, {1,2,3}, {1,2,3,4}, {1,2,3,4,5}, {1,2,3,4,5,6}, {1,2,3,4,5,6,7}, {1,2,3,4,5,6,7,8}, {1,2,3,4,5,6,7,8,9}}
{{}, {1}, {1,2,3}, {1,2,3,4,5}, {1,2,3,4,5,6,7}, {1,2,3,4,5,6,7,8,9}}
non topologie
{{1}} because {} is not contained
{{},{2}} because {1,2} is not contained
{{},{1,2},{2,3}} because the union {1,2,3} is not contained
{{},{1},{1,2},{2,3},{1,2,3}} because the intersection of {1,2} and {2,3} is not contained
{{},{1},{2},{3},{1,2},{2,3},{1,2,3}} because the union of {1} and {3} is not contained
{{}, {1}, {2,3}, {2}, {4,5,6}, {5,6}, {5}, {2,5,6}, {2,5}, {1,5}, {1,2,3,4,5,6}, {1,2,3}, {1,2}, {1,4,5,6}, {1,5,6}, {1,2,5,6}, {2,3,4,5,6}, {2,3,5,6}, {2,3,5}, {2,4,5,6}, {1,2,5}, {1,2,3,5,6}, {1,2,4,5,6}} because {1,2,3,5} is missing
{{}, {1}, {2}, {1,2,3}, {1,2,3,4,5}, {1,2,3,4,5,6,7}, {1,2,3,4,5,6,7,8,9}} because {1,2} is missing
T
è un insieme, penso che sia ragionevole presumere che nessun sottoinsieme nell'input sia ripetuto (cioè {{}, {1,2}, {1,2}}
non è un input valido). Puoi chiarire questo nella sfida, sia affermativamente che negativamente?