Ответ в теме: Посчитать количество определенных символов в строке

      Комментарии к записи Ответ в теме: Посчитать количество определенных символов в строке отключены
#1892

Если Вы используете Турбо-пролог, то надо использовать функции типа front_char при обработке строк. Но если строка предствлена как список символов (в GNU Prolog/SWI Prolog строка выглядит именно так), то предикат должен иметь примерно такой вид:

count_symbol_string([], _, 0):-!.
count_symbol_string([H|T], H, N):- 
  !, count_symbol_string(T, H, NN), N = NN + 1. 
count_symbol_string([_|T], C, N):-
  count_symbol_string(T, C, N). 

Сначала обрабатывается случай, когда на вход подан пустой список (пустая строка) — при этом, независимо от того, какой символ передан во втором аргументе, результат будет равен нулю.

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

Во всех остальных случаях (на вход подан непустой список, первый элемент которого не совпадает с переданным во втором аргументе символом) – результат работы предиката будет совпадать с результатом рекурсивной обработки хвоста списка. В связи с тем, что текущий обрабатываемый элемент (Head) не влияет на результат.