Итак, у меня есть список элементов, и я хочу получить список всех списков, которые можно сгенерировать, выбрав произвольное количество элементов из исходного списка.
Для этого ввода: val input = List('a','b','a')
Я ожидаю этот вывод: val input = List(List(), List('a'), List('b'), List('a','a'), List('a', 'b'), List('a','b','a'))
Обратите внимание, что я не хочу включать List('b','b')
, так как «b» присутствует только один раз в исходной коллекции, и я не хочу List('b','a')
, поскольку он уже включен в другой порядок.
Я нашел несколько решений аналогичных проблем на основе метода subsets
класса Set или combinations
метод, но ни один, который удовлетворяет всем моим требованиям:
- Разрешить дубликаты в исходной коллекции
- Иметь "подсписки" произвольного размера
- Исключить «подсписки», которые уже присутствуют в другом порядке.