Существует ли простой (а может быть, даже Kotlin способ) генерировать все перестановки данного списка (содержащие дубликаты элементов), который:
- Поддерживает порядок элементов
- Удаляет все повторяющиеся элементы
- Включает все элементы
Например:
Учитывая список: [A, B, C, A, B, D, A]
, я ожидаю следующих результатов:
[A, B, C, D]
, [A, C, B, D]
, [B, C, A, D]
, [C, A, B, D]
, [C, B, A, A]
, [B, C, D, A]
, ...
(если есть еще комбинации)
следующие результаты не действительны:
[A, B, C, A, D]
(дубликат A)
[A, B, C, A]
(дубликат A и пропущенный D)
[A, C, D, B]
(неправильный порядок )
Спасибо за вашу помощь.