Aufgabe
Schreiben Sie eine Funktion / ein Programm, die / das
n
als Parameter / Eingabe verwendet und die Anzahl der Topologien (die unten gezeigt wird) auf dem Satz druckt / zurückgibt{1,2,...,n}
.
Definition der Topologie
Sei X eine beliebige endliche Menge und nehme an, dass T, die Teilmenge der Potenzmenge von X ist (dh eine Menge, die Teilmengen von X enthält), diese Bedingungen erfüllt :
X und die leere Menge sind in T.
Wenn zwei Mengen U und V in T sind, dann ist die Vereinigung dieser beiden Mengen in T.
Wenn zwei Mengen U und V in T sind, dann ist der Schnittpunkt dieser beiden Mengen in T.
... dann heißt T die Topologie auf X.
Spezifikationen
Ihr Programm ist entweder:
- eine Funktion, die
n
als Parameter verwendet wird - oder ein Programm, das eingibt
n
und druckt oder gibt die Anzahl der (unterschiedlichen) Topologien auf dem Satz zurück
{1,2,...,n}
.- eine Funktion, die
n
ist eine nicht negative Ganzzahl, die kleiner als 11 ist (natürlich gibt es kein Problem, wenn Ihr Programm n größer als 11 verarbeitet), und die Ausgabe ist eine positive Ganzzahl.Ihr Programm sollte keine Bibliotheksfunktionen oder nativen Funktionen verwenden, die die Anzahl der Topologien direkt berechnen.
Beispieleingabe (Wert von n): 7
Beispiel für Ausgabe / Rückgabe: 9535241
Sie können Ihren Rückgabewert hier oder hier überprüfen .
Natürlich gewinnt der kürzeste Code.
Der Gewinner steht fest, ich kann den Gewinner jedoch ändern, wenn ein kürzerer Code angezeigt wird.
quelle
Antworten:
Haskell, 144 Zeichen
Fast eine direkte Implementierung der Spezifikation, modulo etwas Monadenmagie.
Extrem langsam für
n > 4
.quelle
Python, 147 Zeichen
Schnell für N <= 6, langsam für N = 7, unwahrscheinlich, dass N> = 8 jemals abgeschlossen wird.
Einzelne Sätze werden durch ganzzahlige Bitmasken und Topologien durch Sätze von Bitmasken dargestellt.
S(i,K)
Berechnet die Anzahl der unterschiedlichen Topologien, die Sie bilden können,K
indem Sie mit Bitmasken> = beginnen und Sätze hinzufügeni
.quelle
Zsh, 83 Zeichen
Diese Lösung entspricht dem Buchstaben Ihrer Anforderungen (aber natürlich nicht dem Geist). Es gibt zweifellos eine Möglichkeit, die Zahlen noch weiter zu komprimieren.
quelle