Удаление каждого 3 символа в строке - Prolog
Формулировка задачи:
Требуется составить программу, вычеркивающую каждую 3 букву из слова Х. Что-то никак не могу понять как это сделать
Решение задачи: «Удаление каждого 3 символа в строке»
textual
Листинг программы
predicates
del_sym(string,integer,integer,string)
task(string,integer,string)
clauses
del_sym("",_,_,"").
del_sym(S,N,K,Q) :- N=K-1, frontchar(S,_,Z),del_sym(Z,0,K,Q).
del_sym(S,N,K,Q) :- N<K-1, frontchar(S,C,Z), M=N+1, del_sym(Z,M,K,U), frontchar(Q,C,U).
task(S,N,R) :- del_sym(S,0,N,R).
Объяснение кода листинга программы
- Задача состоит в удалении каждого третьего символа из строки.
- В коде используется язык программирования Prolog.
- Код содержит два предиката:
del_symиtask. - Предикат
del_symпринимает четыре аргумента: строкуS, индексы начала и конца удаляемого символаNиK, а также результат удаленияQ. - Первое правило для предиката
del_symгласит, что если строка пустая, то результат также будет пустым символом. - Второе правило для предиката
del_symгласит, что если индексNравенK-1, то перед символом в позицииNдолжен быть другой символZ. Результат удаления будетQ. - Третье правило для предиката
del_symгласит, что если индексNменьшеK-1, то перед символом в позицииNдолжен быть другой символZ. Затем должен быть получен результат удаленияUпосле добавления символа в позициюN+1. Результат будетQ. - В функции
taskиспользуется предикатdel_symдля удаления каждого третьего символа из строкиSс длинойNи сохранения результата в строкуR. - Задача состоит в том, чтобы использовать функцию
taskдля ввода строкиS, длины строкиNи вывода результатаR.