У меня есть два списка, например
A = ["spin", "dab", "dab", "moonwalk", "clap", "moonwalk"]
B = ["dab", "dab", "spin", "clap", "clap", "moonwalk"]
После объединения двух списков у меня может быть такой список
remix=["dab", "spin", "dab", "spin", "dab", "clap", "dab", "moonwalk", "clap", "moonwalk", "clap", "moonwalk"]
Мой вопрос заключается в том, как объединить два списка так, чтобы смежное повторение элементов было минимальным (все элементы в A и B должны появиться в списке ремиксов).
повторение что-то вроде этого
remix=["spin", "dab", "spin", "dab", "dab", "clap", "dab", "moonwalk", "clap", "moonwalk", "clap", "moonwalk"]
смежное повторение здесь 2 * dab
Другой пример:
remix=["spin", "dab", "spin", "dab", "dab", "clap", "clap","dab", "moonwalk", "moonwalk", "clap", "moonwalk"]
смежный повтор 2 * dab + 2 * хлопок
ниже вводные данные для этого вопроса
A = ["spin", "dab", "dab", "moonwalk", "clap", "moonwalk"]
B = ["dab", "dab", "spin", "clap", "clap", "moonwalk"]
factor={"spin":1,"dab":2,"moonwalk":3,"clap":4}
список вывода:
["dab", "spin", "dab", "spin", "dab", "clap", "dab", "moonwalk", "clap", "moonwalk", "clap", "moonwalk"]
Причина в том, что повторения нет, поэтому смежное повторение любого элемента равно 0.
Опять же, цель состоит в том, чтобы найти список с минимальным соседним повторением, конечно, коэффициент мог бы быть равен 0, если бы мы могли найти список без повторений вообще
Я думал о динамическом программировании, но я понятия не имею, как заставить его работать. Любая помощь приветствуется.