Как работает sofs: разделы в Erlang? - PullRequest
1 голос
/ 05 января 2012

Примечание: этот вопрос основан на переосмыслении моего предыдущего аналогичного вопроса .

Я хотел бы знать, если софтов Эрланга: раздел делает то же самое, что описано на странице Википедии о Установить разделы .

Если да, как я могу получить следующий результат?

При заданной структуре данных (набор наборов или список списков):

   [a,b,c]
    [a,b]
    [c]
    [d,e,f]
    [d,f]
    [e]

, который содержит следующие уникальные элементы:

a,b,c,d,e,f

результат запуска функции с аргументом N = 2 должен быть:

[[a,b,c], [d,e,f]]

Хотя следующие разделы должны быть отфильтрованы в процессе выполнения sofs:partition:

[[a,b,c], [d,f], [e]]
[[a,b], [c], [d,e,f]]
[[a,b], [c], [d,f], [e]]

Можно ли это сделать с помощью sofs: partition?Если да, могу ли я сделать это итеративно, выбрасывая разделы length(Partition) =/= N во время выполнения?Можно ли как-то переопределить функцию sofs:partition, чтобы ввести аргумент N?

1 Ответ

0 голосов
/ 20 апреля 2012

Вы, вероятно, можете просто передать результат sofs: partition в списки: foldl и отфильтровать разделы неправильной длины вручную.

Если это не соответствует вашей задаче (например, второй запуск недопустим), вы можете просто взглянуть на Мягкие источники , использовать его в качестве примера и создать свою собственную функцию, которая делает именно то, что нужно за один проход.

...