Не могу найти ошибку. Найти количество элементов, равных своему индексу - Prolog

Узнай цену своей работы

Формулировка задачи:

Выводит всегда false, а должен выводить C, т.е количество элементов равных своему индексу, скорее всего ошибка где то в синтаксисе. Использую swi-prolog.

Решение задачи: «Не могу найти ошибку. Найти количество элементов, равных своему индексу»

textual
Листинг программы
sootv([], _, Col, Col).    % ecли список пуст, выводим результат
 
sootv([H|T], Ind, Col, Res):- 
    H \= Ind,
    Ind1 is Ind+1,
    sootv(T, Ind1, Col, Res).
sootv([H|T], Ind, Col, Res):- 
    H = Ind, 
    Ind1 is Ind+1, 
    Col1 is Col+1, 
    sootv(T, Ind1, Col1, Res).

Объяснение кода листинга программы

  1. sootv([], _, Col, Col). - Если список пуст, выводим результат
  2. sootv([H|T], Ind, Col, Res):- H \= Ind, - Проверяем, не равен ли элемент своему индексу
  3. Ind1 is Ind+1, - Увеличиваем индекс на единицу
  4. sootv(T, Ind1, Col, Res). - Рекурсивный вызов для оставшейся части списка
  5. sootv([H|T], Ind, Col, Res):- H = Ind, - Если элемент равен своему индексу
  6. Ind1 is Ind+1, - Увеличиваем индекс на единицу
  7. Col1 is Col+1, - Увеличиваем количество элементов на единицу
  8. sootv(T, Ind1, Col1, Res). - Рекурсивный вызов для оставшейся части списка

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


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

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

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