Sistemas de ternas de Steiner en Haskell

Un sistema de Steiner de ternas de orden n, S(n), es un conjunto de ternas tal que los elementos de cada terna son números del 1 al n y cualquier par de elementos \{i,j\} (con 1 \leq i < j \leq n[/latex]) pertenece exactamente a una terna. Por ejemplo, [latex]S(3) = \{\{1,2,3\}\}[/latex] [latex]S(7) = \{\{1,2,4\}, \{2,3,5\}, \{3,4,6\}, \{4,5,7\}, \{5,6,1\}, \{6,7,2\}, \{7,1,3\}\}[/latex] Se verifica que [latex]S(n)[/latex] es no vacío si, y sólo si, si [latex]n[/latex] es congruente con 1 o con 3 módulo 6. En ese caso, el número de elementos de [latex]S(n)[/latex] es [latex]\frac{n(n-1)}{6}[/latex]. En la Wikipedia se encuentra más información sobre los sistemas de Steiner.

El objetivo de esta relación es definir en Haskell una función para calcular los sistemas de ternas de Steiner de orden n.