La réponse à cette question est beaucoup trop longue
Votre défi consiste à écrire une fonction de partitionnement dans le plus petit nombre de caractères.
Exemple d'entrée
['a', 'b', 'c']
Exemple de sortie
[(('a'),('b'),('c')),
(('a', 'b'), ('c')),
(('a', 'c'), ('b')),
(('b', 'c'), ('a')),
(('a', 'b', 'c'))]
L'entrée peut être une liste / tableau / ensemble / chaîne, etc. ce qui est le plus facile à traiter pour votre fonction
Vous pouvez également choisir le format de sortie qui vous convient tant que la structure est claire.
Votre fonction doit fonctionner pour au moins 6 éléments dans l'entrée
code-golf
set-partitions
grignoteur
la source
la source
Réponses:
GolfScript (43 caractères)
ou
Même format d'entrée, format de sortie et nom de fonction que la solution d'Howard. Il n'y a pas de forçage brutal: cela prend l'approche itérative simple d'ajouter un élément de la liste d'entrée à la partition à chaque fois dans la boucle externe.
la source
GolfScript, 51 caractères
Le script définit une variable
P
qui prend un tableau du haut de la pile et repousse une liste de toutes les partitions, par exempleIl fonctionne également sur de plus grandes listes:
Vous pouvez effectuer vos propres tests en ligne .
la source
J, 51 caractères
Prend la saisie du clavier, éléments séparés par des espaces:
la source
Haskell,
908771665 octets enregistrés grâce à nimi .
Exemple:
la source
#
::map(y:)(x#s)
et tourner le lambda dans une version de point gratuit:foldr((=<<).(#))[[]]
.Python 2, 131 octets
Essayez-le en ligne
Utilise cet algorithme .
la source