Die Antwort auf diese Frage ist viel zu lang
Ihre Herausforderung besteht darin, eine Partitionierungsfunktion mit der geringsten Anzahl von Zeichen zu schreiben .
Eingabebeispiel
['a', 'b', 'c']
Ausgabebeispiel
[(('a'),('b'),('c')),
(('a', 'b'), ('c')),
(('a', 'c'), ('b')),
(('b', 'c'), ('a')),
(('a', 'b', 'c'))]
Die Eingabe kann eine Liste / ein Array / eine Menge / eine Zeichenfolge usw. sein, was für Ihre Funktion am einfachsten zu verarbeiten ist
Sie können auch das Ausgabeformat auswählen, das zu Ihnen passt, solange die Struktur klar ist.
Ihre Funktion sollte für mindestens 6 Elemente in der Eingabe funktionieren
code-golf
set-partitions
Gnibbler
quelle
quelle
Antworten:
GolfScript (43 Zeichen)
oder
Gleiches Eingabeformat, Ausgabeformat und Funktionsname wie bei Howard. Es gibt kein brutales Forcen: Dies erfordert den einfachen iterativen Ansatz, jedes Mal um die äußere Schleife ein Element aus der Eingabeliste zur Partition hinzuzufügen.
quelle
GolfScript, 51 Zeichen
Das Skript definiert eine Variable,
P
die ein Array vom oberen Rand des Stapels nimmt und eine Liste aller Partitionen zurückschiebt, zEs funktioniert auch bei größeren Listen:
Sie können eigene Tests online durchführen .
quelle
J, 51 Zeichen
Übernimmt Eingaben über die Tastatur, Elemente durch Leerzeichen getrennt:
quelle
Haskell,
908771665 Bytes dank Nimi gespeichert .
Beispiel:
quelle
#
: neu an:map(y:)(x#s)
und verwandeln Sie das Lambda in eine punktfreie Version :foldr((=<<).(#))[[]]
.Python 2, 131 Bytes
Probieren Sie es online aus
Verwendet diesen Algorithmus .
quelle