La respuesta a esta pregunta es demasiado larga.
Su desafío es escribir una función de partición en el menor número de caracteres.
Ejemplo de entrada
['a', 'b', 'c']
Ejemplo de salida
[(('a'),('b'),('c')),
(('a', 'b'), ('c')),
(('a', 'c'), ('b')),
(('b', 'c'), ('a')),
(('a', 'b', 'c'))]
La entrada puede ser una lista / matriz / conjunto / cadena, etc., lo que sea más fácil de procesar para su función
También puede elegir el formato de salida que más le convenga siempre que la estructura sea clara.
Su función debería funcionar para al menos 6 elementos en la entrada
code-golf
set-partitions
gnibbler
fuente
fuente
Respuestas:
GolfScript (43 caracteres)
o
Mismo formato de entrada, formato de salida y nombre de función que la solución de Howard. No hay forzamiento bruto: esto toma el enfoque iterativo simple de agregar un elemento de la lista de entrada a la partición cada vez que se rodea el bucle externo.
fuente
GolfScript, 51 caracteres
El script define una variable
P
que toma una matriz de la parte superior de la pila y empuja hacia atrás una lista de todas las particiones, p. Ej.También funciona en listas más grandes:
Puede realizar sus propias pruebas en línea .
fuente
J, 51 caracteres
Toma información del teclado, elementos separados por espacios:
fuente
Haskell,
90877166Guardado 5 bytes gracias a nimi .
Ejemplo:
fuente
#
::map(y:)(x#s)
y gire el lambda en una versión libre de punto:foldr((=<<).(#))[[]]
.Python 2, 131 bytes
Pruébalo en línea
Utiliza este algoritmo .
fuente