Я ищу алгоритм, чтобы сократить список (плейлист) заказанные, но не уникальные товары. Искал теорию множеств, но пока не нашел ничего подходящего.
Примеры
[a, b, b, c] -> [a, b, b, c] Cannot be reduced.
[a, b, b, a, b, b] -> [a, b, b].
[b, b, b, b, b] -> [b].
[b, b, b, b, a] -> [b, b, b, b, a] Cannot be reduced.
Думаю о получении всех существующих подсписок и подсчете каждого экземпляра. Если существует такой подсписок, в котором количество, умноженное на длину подсписка, равно исходному списку, выберите самый короткий подсписок, соответствующий этому критерию.
Это кажется немного грубой силой, должно быть доступно более простое / быстрое решение.