Как заменить элементы в списке, чтобы получить определенный список?

Всем привет. Возникла необходимость создать такую функцию, которая будет делать из имеющегося списка целевой список, используя только определенные замены. Предположим, дан список have, из него нужно сделать список need, используя только замены из словаря trade, где ключ соответствует букве/буквам из have, а значение букве/буквам из need. Замены работают только в одну сторону, то есть можно поменять ключ на значение, но не наоборот. Если это сделать невозможно с данными списками have, need или trade, то программа должна об этом сообщить. В конце добавил две строчки, которые делают из списков строки, поскольку в trade есть замены нескольких букв на несколько.

UPD Никакого готового алгоритма нет, нужно просто проверить возможность "превратить" have в need. Если возможно, то вывести какими шагами из trade это было сделано, если нет, то сообщить, что это невозможно.

have = ['b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'p', 'p', 'p', 'p', 'p', 'g', 'g', 'g', 'v', 'r', 'r']
need = ['b', 'p', 'p', 'p', 'g', 'g', 'v', 'v', 'v', 'v', 'v', 'v', 'v', 'v', 'r', 'r']
trade = {'rr':'bb', 'prr':'ggv', 'gp':'rrr', 'gg':'rr',
    'bbb':'p', 'bbb':'g', 'bbb':'v', 'bbb':'r',
    'ppp':'b', 'ppp':'g', 'ppp':'v', 'ppp':'r',
    'ggg':'p', 'ggg':'b', 'ggg':'v', 'ggg':'r',
    'vvv':'p', 'vvv':'g', 'vvv':'b', 'vvv':'r',
    'rrr':'p', 'rrr':'g', 'rrr':'v', 'rrr':'b'}
have_str_srtd = ''.join(sorted(have))
need_str_srtd = ''.join(sorted(need))

Ответы (0 шт):