Примечание: это вопрос сиквела к моим предыдущим перестановкам вопрос .
Я хотел бы сгенерировать все перестановки списка в Erlang, ноЯ хотел бы отфильтровать некоторые перестановки, прежде чем они будут добавлены в стек или сохранены где-либо.
Я отфильтрую перестановки на основе некоторых пользовательских специальных правил (назовем их «Фильтр»).
Другими словами, я хотел бы создать список перестановок большого списка (50-300 элементов), но я хотел бы выбросить большинство сгенерированных перестановок прямо во время процесса (я знаю, чтополное число перестановок равно N!).
steenslag дал мне хорошее решение в Ruby:
res = [1,2,3,4].permutation(3).reject do |perm|
perm.first.even? #Filter: if this line is true, the perm will be rejected
end
Как я могунаписать что-то похожее на Erlang?
(у меня уже есть функции Filter, написанные на Erlang, поэтому я хотел бы сделать некоторое повторное использование кода).
Кстати, может ли желаемое решение Erlang быть«внутренне параллельный»?