Замена подсписка на Prolog

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 4 мес., 4 нед. назад.

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
  • Автор
    Сообщения
  • #4322

    arkarkyaw
    Участник

    В списке символов S1, S2, …, SN каждую указанную последовательность символов заменить на другую указанную последовательность.

    #4323

    change_sublist(List, SubA, SubB, Changed):-
        divide_list(List, [Left, SubA, Right]), !,
        change_sublist(Left, SubA, SubB, ChangedLeft),
        change_sublist(Right, SubA, SubB, ChangedRight),
        divide_list(Changed, [ChangedLeft, SubB, ChangedRight]).
    change_sublist(List, _SubA, _SubB, List).

    С помощью функции divide_list мы разделяем список на три части (Левую, SubA, Правую). Где SubA — заменяемый список. Если такое разделение удалось — сработает первое правило, тогда рекурсивно выполняется замена для левой и правой частей списка, а затем полученные части соединяются вместе также с помощью divide_list.

    Если же разделение не удалось (в списке нет ни одного вхождения SubA) — срабатывает второе правило, возвращающее в качестве результата исходный список.

    Вложения:
    Вы должны войти для просмотра вложений.
Просмотр 2 сообщений - с 1 по 2 (из 2 всего)

Для ответа в этой теме необходимо авторизоваться.