Вычислить количество четных элементов на заданном интервале - Prolog (227103)

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

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

Вычислить количество четных элементов на заданном интервале.
Листинг программы
  1. pr(X,K,X,K):-!.
  2. pr(X,K,X1,K1):- X2 is X1+2, X2 =X, K2 is K1+1,pr(X,K,X2,K2).
Решила задачу, но не могу объяснить на языке SWI Prolog, помогите пожалуйста

Решение задачи: «Вычислить количество четных элементов на заданном интервале»

textual
Листинг программы
  1. domains
  2. int=integer  %% просто так короче
  3.  
  4. predicates
  5. task(int,int,int)  %% целевой предикат имеет параметра - начало интервала, конец интервала и к-во четных.
  6.                       %% все - целые
  7.  
  8. clauses
  9.  
  10. %% терминальная ветвь рекурсии
  11.  
  12. task(B,B,0) :- (B mod 2)=1, !. %% на пустом отрезке с нечетной границей четных нет (отсекаем)
  13. task(B,B,1) :- (B mod 2)=0, !. %% на пустом отрезке с четной границей четное одно (отсекаем)
  14.  
  15. %% Пусть на отрезке [B,E] найдено N четных
  16. %% тогда на отрезке [B+1,E] будет на одно меньше (если B четное)
  17.  
  18. task(B,E,N) :- B1=B+1, task(B1,E,N1), (B mod 2)=0, N=N1+1.
  19.  
  20.  
  21. %% Пусть на отрезке [B,E] найдено N четных
  22. %% тогда на отрезке [B+1,E] будет столько же (если B нечетное)
  23.  
  24. task(B,E,N) :- B1=B+1, task(B1,E,N), (B mod 2)=1.

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

Код представляет собой реализацию вычисления количества четных чисел на заданном интервале. В коде используется базовый случай, когда интервал пуст - если начало и конец интервала совпадают и интервал имеет нечетную границу, то количество четных чисел равно 0. Если начало и конец интервала совпадают и интервал имеет четную границу, то количество четных чисел равно 1. Затем идет рекурсивный случай, когда на интервале [B,E] уже найдено количество четных чисел N. Тогда для интервала [B+1,E] количество четных чисел будет на единицу меньше, если B четное, и столько же, если B нечетное. В итоге, после вызова целевого предиката task(A,B,N), где A - начало интервала, B - конец интервала, N - количество четных чисел на интервале [A,B], в переменной N будет содержаться количество четных чисел на интервале [A,B].

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


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

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

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы