Предикат, который будет удалять из данной строки все вхождения заданного символа - 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).
Объяснение кода листинга программы
- Заголовок: remchar(string,char,string)
- Описание: Удаляет из строки все вхождения заданного символа.
- Реализация:
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). - разбиваем строку на символы до тех пор, пока не достигнем символа, который нужно удалить, и рекурсивно вызываем себя для оставшейся части строки. Если текущий символ не равен символу удаления, то рекурсивно вызываем себя для оставшейся части строки и добавляем символ удаления в начало результата. - Пример использования:
?- remchar(
abcdefg
,'e',R). R =abdefgcd
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д