Wprowadzenie
W dziedzinie matematyki zwanej topologią istnieją rzeczy zwane aksjomatami separacji . Intuicyjnie masz zestaw X
i zbiór podzbiorów X
, które możemy traktować jako właściwości. System jest dobrze oddzielony, jeśli można rozróżnić wszystkie elementy na X
podstawie ich właściwości. Aksjomaty separacyjne formalizują tę ideę. W tym wyzwaniu Twoim zadaniem jest sprawdzenie trzech aksjomatów separacji, podanych X
oraz listy właściwości.
Wkład
Twoje dane wejściowe są liczbą całkowitą n ≥ 2
i listą T
liczb całkowitych. Liczby w T
są pobierane z X = [0, 1, ..., n-1]
. Listy w T
mogą być puste i nieposortowane, ale nie będą zawierać duplikatów.
Wydajność
Twój wynik jest jednym z czterech ciągów, określonych przez trzy aksjomaty separacji, każdy silniejszy niż ostatni. Istnieją inne aksjomaty, ale trzymamy się ich dla uproszczenia.
- Załóżmy, że dla wszystkich wyraźny
x
iy
wX
istnieje w listęT
zawierającą dokładnie jeden z nich. WtedyX
iT
usatysfakcjonować aksjomat T0 . - Załóżmy, że dla wszystkich wyraźny
x
iy
wX
, istnieją dwie listy wT
, z których jeden zawierax
, ale niey
, a drugi zawieray
ale niex
. WtedyX
iT
usatysfakcjonować aksjomat T1 . - Załóżmy, że dwie powyższe listy również nie zawierają wspólnych elementów. Wtedy
X
iT
usatysfakcjonować aksjomat T2 .
Twój wynik jest jednym z T2
, T1
, T0
lub TS
, w zależności od tego, które z powyższych warunków trzyma ( TS
dochodowe żaden z nich nie robią). Zauważ, że T2 jest silniejszy niż T1, który jest silniejszy niż T0, i zawsze powinieneś wyprowadzać najsilniejszy możliwy aksjomat.
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
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
zbyteczne? W pozostałej części wyzwania nie widzę, aby był używany poza określeniem, w jakich elementach może byćT
, więc czy jest to tylko skrótyT.Maximum()
?0 []
powinien daćT2
.Odpowiedzi:
Haskell,
317209174168 bajtówFunkcja f wykonuje zadanie.
testy:
wydajność:
źródło
t
funkcji jako danych wejściowych to sprytna sztuczka!f
na nazwę operatora i zamieńp(x%y)(x%y)
nap(x%y)$x%y
. a tak przy okazji, niezła robota!