Из каждой строки удалить все цифры, и не содержащие цифр строки записать в новый список - 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 с данной постановкой задачи:

  1. В первой строке объявляется тип данных strl=string*, где * означает, что это список строк.
  2. Далее, объявляются два предиката: clear_wd(string,string) и task(strl,strl).
  3. В первом предикате clear_wd две пустые строки передаются как начальные значения.
  4. В втором предикате task также два пустых списка передаются как начальные значения.
  5. Далее, в двух утверждениях для предиката clear_wd описывается его работа:
    • Если первая буква строки является числом (цифрой), то вызывается рекурсивно clear_wd для оставшейся части строки, а результат не сохраняется (используется оператор !, который прекращает выполнение текущего утверждения).
    • Если первая буква строки не является числом, то вызывается рекурсивно clear_wd для оставшейся части строки, а результат сохраняется в QS.
    • Затем, вызывается clear_wd для первой буквы строки с результатом QS.
  6. В последнем утверждении для предиката task описывается его работа:
    • Если список пуст, то вызывается clear_wd для пустой строки и результат не сохраняется.
    • Если список не пуст, то вызывается clear_wd для первой строки списка и результат сохраняется в HH, а затем вызывается task для оставшейся части списка с результатом TT.

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


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

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

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