Einführung
Auf dem Gebiet der Mathematik, bekannt als Topologie , gibt es Dinge, die Trennungsaxiome genannt werden . Intuitiv haben Sie eine Menge X
und eine Sammlung von Teilmengen X
, die wir uns als Eigenschaften vorstellen können. Das System ist gut getrennt, wenn man alle Gegenstände X
anhand ihrer Eigenschaften unterscheiden kann. Die Trennungsaxiome formalisieren diese Idee. In dieser Herausforderung besteht Ihre Aufgabe darin, drei gegebene Trennungsaxiome X
und die Liste der Eigenschaften zu überprüfen .
Eingang
Ihre Eingaben sind eine Ganzzahl n ≥ 2
und eine Liste T
mit ganzen Zahlen. Die Ganzzahlen in T
werden von gezogen X = [0, 1, ..., n-1]
. Die Listen in sind T
möglicherweise leer und unsortiert, enthalten jedoch keine Duplikate.
Ausgabe
Ihre Ausgabe ist eine von vier Zeichenfolgen, die durch drei Trennungsaxiome bestimmt werden, von denen jedes stärker ist als das letzte. Es gibt andere Axiome, aber der Einfachheit halber bleiben wir bei diesen.
- Nehmen wir an, dass es für alle unterschiedlichen
x
undy
inX
eine Liste gibt, inT
der genau einer von ihnen enthalten ist. DannX
undT
befriedige Axiom T0 . - Angenommen, für alle unterschiedlichen
x
undy
inX
existieren zwei Listen inT
, von denen eine enthält,x
aber nichty
, und die andere enthält,y
aber nichtx
. DannX
undT
befriedige Axiom T1 . - Angenommen, die beiden obigen Listen enthalten auch keine gemeinsamen Elemente. Dann
X
undT
befriedige Axiom T2 .
Die Ausgabe ist eine von T2
, T1
, T0
oder TS
, je nachdem , welche der oben genannten Bedingungen hält ( TS
Mittel keiner von ihnen tun). Beachten Sie, dass T2 stärker ist als T1, was stärker ist als T0, und Sie sollten immer das stärkste mögliche Axiom ausgeben.
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Testfälle
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
überflüssig? Im Rest der Herausforderung sehe ich keine Verwendung, die über die Definition der Elemente hinausgeht. IstT
dies also nur eine Abkürzung fürT.Maximum()
?0 []
sollte gebenT2
.Antworten:
Haskell,
317209174168 BytesDie Funktion f erledigt den Job.
Tests:
Ausgabe:
quelle
t
eine Funktion als Eingabe ist ein kluger Trick!f
durch einen Operatornamen und Ersetzenp(x%y)(x%y)
durchp(x%y)$x%y
. und übrigens schöne arbeit!