Из каждой строки удалить все цифры, и не содержащие цифр строки записать в новый список - Prolog
Формулировка задачи:
Здравствуйте. Я полнейший нуб в прологе, заранее извиняюсь, не могли бы вы мне подсказать, как решить задачу:
Задан список слов, каждое из которых представляет комбинацию букв и цифр. Из каждой строки удалить все цифры, и не содержащие цифр строки записать в новый список. Результат сохранить в файле.
Решение задачи: «Из каждой строки удалить все цифры, и не содержащие цифр строки записать в новый список»
textual
Листинг программы
domains strl=string* predicates clear_wd(string,string) task(strl,strl) clauses clear_wd("",""). clear_wd(S,Q) :- frontchar(S,B,RS), B >= '0', B <= '9', clear_wd(RS,Q),!. clear_wd(S,Q) :- frontchar(S,B,RS), clear_wd(RS,QS), frontchar(Q,B,QS). task([],[]). task([H|T],[HH|TT]) :-clear_wd(H,HH), task(T,TT).
Объяснение кода листинга программы
Код на языке Prolog с данной постановкой задачи:
- В первой строке объявляется тип данных
strl=string*
, где*
означает, что это список строк. - Далее, объявляются два предиката:
clear_wd(string,string)
иtask(strl,strl)
. - В первом предикате
clear_wd
две пустые строки передаются как начальные значения. - В втором предикате
task
также два пустых списка передаются как начальные значения. - Далее, в двух утверждениях для предиката
clear_wd
описывается его работа:- Если первая буква строки является числом (цифрой), то вызывается рекурсивно
clear_wd
для оставшейся части строки, а результат не сохраняется (используется оператор!
, который прекращает выполнение текущего утверждения). - Если первая буква строки не является числом, то вызывается рекурсивно
clear_wd
для оставшейся части строки, а результат сохраняется вQS
. - Затем, вызывается
clear_wd
для первой буквы строки с результатомQS
.
- Если первая буква строки является числом (цифрой), то вызывается рекурсивно
- В последнем утверждении для предиката
task
описывается его работа:- Если список пуст, то вызывается
clear_wd
для пустой строки и результат не сохраняется. - Если список не пуст, то вызывается
clear_wd
для первой строки списка и результат сохраняется вHH
, а затем вызываетсяtask
для оставшейся части списка с результатомTT
.
- Если список пуст, то вызывается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д