Не могу найти ошибку. Найти количество элементов, равных своему индексу - 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).
Объяснение кода листинга программы
- sootv([], _, Col, Col). - Если список пуст, выводим результат
- 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). - Рекурсивный вызов для оставшейся части списка
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д