A resposta a esta pergunta é muito longa
Seu desafio é escrever uma função de particionamento no menor número de caracteres.
Exemplo de entrada
['a', 'b', 'c']
Exemplo de saída
[(('a'),('b'),('c')),
(('a', 'b'), ('c')),
(('a', 'c'), ('b')),
(('b', 'c'), ('a')),
(('a', 'b', 'c'))]
A entrada pode ser uma lista / matriz / conjunto / string, etc., o que for mais fácil para sua função processar
Você também pode escolher o formato de saída mais adequado, desde que a estrutura esteja limpa.
Sua função deve funcionar para pelo menos 6 itens na entrada
code-golf
set-partitions
mordedor
fonte
fonte
Respostas:
GolfScript (43 caracteres)
ou
O mesmo formato de entrada, formato de saída e nome da função que a solução de Howard. Não há força bruta: isso adota a abordagem iterativa simples de adicionar um elemento da lista de entrada à partição toda vez que o loop externo for contido.
fonte
GolfScript, 51 caracteres
O script define uma variável
P
que pega uma matriz do topo da pilha e empurra uma lista de todas as partições, por exemploTambém funciona em listas maiores:
Você pode realizar seus próprios testes online .
fonte
J, 51 caracteres
Recebe entrada do teclado, itens separados por espaços:
fonte
Haskell,
90877166Guardado 5 bytes graças a nimi .
Exemplo:
fonte
#
::map(y:)(x#s)
e transformar o lambda em uma versão livre de ponto:foldr((=<<).(#))[[]]
.Python 2, 131 bytes
Experimente online
Usa esse algoritmo .
fonte