Предикат, который будет удалять из данной строки все вхождения заданного символа - Prolog

Узнай цену своей работы

Формулировка задачи:

Создайте предикат, который будет удалять из данной строки все вхождения заданного символа.

Решение задачи: «Предикат, который будет удалять из данной строки все вхождения заданного символа»

textual
Листинг программы
predicates
remchar(string,char,string)
 
clauses
remchar("",_,"").
remchar(S,C,Q) :- frontchar(S,C,RS), remchar(RS,C,Q).
remchar(S,C,Q) :- frontchar(S,B,RS), B<>C, remchar(RS,C,Q1), frontchar(Q,B,Q1).

Объяснение кода листинга программы

  1. Заголовок: remchar(string,char,string)
  2. Описание: Удаляет из строки все вхождения заданного символа.
  3. Реализация: a. remchar(,_,) - пустая строка не содержит символов для удаления, поэтому результатом будет пустая строка. b. remchar(S,C,Q) :- frontchar(S,C,RS), remchar(RS,C,Q). - разбиваем строку на символы до тех пор, пока не достигнем символа, который нужно удалить, и рекурсивно вызываем себя для оставшейся части строки. c. remchar(S,C,Q) :- frontchar(S,B,RS), B<>C, remchar(RS,C,Q1), frontchar(Q,B,Q1). - разбиваем строку на символы до тех пор, пока не достигнем символа, который нужно удалить, и рекурсивно вызываем себя для оставшейся части строки. Если текущий символ не равен символу удаления, то рекурсивно вызываем себя для оставшейся части строки и добавляем символ удаления в начало результата.
  4. Пример использования: ?- remchar(abcdefg,'e',R). R = abdefgcd

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы