Ответ в теме: Удаление из второй строки повторных символов из первой

#3467

В вашей задаче не нужно удалять повторяющиеся символы из первой строки. Вместо этого, наоборот нужно сформировать из этих элементов список (Repeated), а затем удалить из второй строки все элементы, входящие в этот список. Выбрать повторяющиеся элементы можно с помощью функции repeated_symbols.

После этого, вам нужно последовательно перебирать символы строкой строки и проверять их наличие среди элементов Repeated. Если символ присутствует – то к результату его добавлять не следует:

strings_subtraction("", _B, ""):-!.
strings_subtraction(A, B, AMinusB):-
  frontchar(A, HeadA, TailA),
  symbol_of_string(B, HeadA), !,
  strings_subtraction(TailA, B, AMinusB).
strings_subtraction(A, B, AMinusB):-
  frontchar(A, HeadA, TailA),
  strings_subtraction(TailA, B, TailAMinusB),
  frontchar(AMinusB, HeadA, TailAMinusB).

Тогда решение вашей задачи, при условии что исходные строки находятся в переменных A и B, будет выглядеть так:

repeated_symbols(A, RepeatedA),
strings_subtraction(B, RepeatedA, X).