Ответ на этот вопрос слишком длинный
Ваша задача - написать функцию разбиения с наименьшим количеством символов.
Пример ввода
['a', 'b', 'c']
Пример вывода
[(('a'),('b'),('c')),
(('a', 'b'), ('c')),
(('a', 'c'), ('b')),
(('b', 'c'), ('a')),
(('a', 'b', 'c'))]
Входные данные могут быть списком / массивом / множеством / строкой и т. Д. Все, что проще для вашей функции для обработки
Вы также можете выбрать выходной формат для себя, если структура ясна.
Ваша функция должна работать как минимум для 6 элементов на входе
code-golf
set-partitions
gnibbler
источник
источник
Ответы:
GolfScript (43 символа)
или
Тот же формат ввода, формат вывода и имя функции, что и у решения Говарда. Нет грубого принуждения: для этого требуется простой итеративный подход - добавление одного элемента из списка ввода в раздел каждый раз вокруг внешнего цикла.
источник
GolfScript, 51 символ
Скрипт определяет переменную,
P
которая берет массив из верхней части стека и возвращает список всех разделов, напримерОн также работает с большими списками:
Вы можете выполнить собственные тесты онлайн .
источник
J, 51 символов
Берет ввод с клавиатуры, элементы разделяются пробелами:
источник
Хаскелл,
90877166Сохранено 5 байтов благодаря nimi .
Пример:
источник
#
::map(y:)(x#s)
и превратить лямбда в точку свободной версии:foldr((=<<).(#))[[]]
.Python 2, 131 байт
Попробуйте онлайн
Использует этот алгоритм .
источник