Odpowiedź na to pytanie jest zdecydowanie za długa
Wyzwanie polega na napisaniu funkcji partycjonowania przy użyciu jak najmniejszej liczby znaków.
Przykład wprowadzania
['a', 'b', 'c']
Przykład wyjściowy
[(('a'),('b'),('c')),
(('a', 'b'), ('c')),
(('a', 'c'), ('b')),
(('b', 'c'), ('a')),
(('a', 'b', 'c'))]
Dane wejściowe mogą być listą / tablicą / zestawem / ciągiem itp., Cokolwiek jest najłatwiejsze do przetworzenia przez funkcję
Możesz także wybrać odpowiedni format wyjściowy, o ile struktura jest czysta.
Twoja funkcja powinna działać dla co najmniej 6 pozycji na wejściu
code-golf
set-partitions
gnibbler
źródło
źródło
Odpowiedzi:
GolfScript (43 znaki)
lub
Ten sam format wejściowy, format wyjściowy i nazwa funkcji jak rozwiązanie Howarda. Nie ma brutalnego wymuszania: przyjmuje to proste podejście iteracyjne polegające na dodawaniu jednego elementu z listy danych wejściowych do partycji za każdym razem wokół zewnętrznej pętli.
źródło
GolfScript, 51 znaków
Skrypt definiuje zmienną,
P
która pobiera tablicę z góry stosu i przesuwa listę wszystkich partycji, npDziała również na większych listach:
Możesz wykonać własne testy online .
źródło
J, 51 znaków
Pobiera dane z klawiatury, elementy oddzielone spacjami:
źródło
Haskell,
90877166Zapisany 5 bajtów dzięki Nimi .
Przykład:
źródło
#
::map(y:)(x#s)
i włączyć lambda w punkcie wolne od wersji:foldr((=<<).(#))[[]]
.Python 2, 131 bajtów
Wypróbuj online
Używa tego algorytmu .
źródło