Вычислить число элементов списка после элемента с заданным значением - Prolog

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

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

Помогите с задачкой пожалуйста, ее описание в заголовке. Насколько я понимаю, нужно создать список из чисел, ввести определенное число из этого списка, в результате чего появится число элементов, которое находится после введенного элемента.

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

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. len(intl,int)
  7. count_after(intl,int,int)
  8.  
  9. clauses
  10. len([],0).
  11. len([_|T],N) :- len(T,N1), N=N1+1.
  12.  
  13. count_after([H|T],H,L) :- len(T,L), !.
  14. count_after([_|T],H,L) :- count_after(T,H,L).

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

  1. В начале кода определяются два домена: int - целочисленный, intl - int*, то есть указатель на целочисленный.
  2. Затем определяются два предиката: len - принимает два аргумента, первый - список, второй - количество элементов в списке.
  3. И предикат count_after - принимает три аргумента, первые два - список, третий - значение элемента, после которого нужно посчитать количество элементов.
  4. В следующих двух утверждениях задаются начальные условия для работы программы.
  5. В первом утверждении пустой список считается имеющим длину 0.
  6. Во втором утверждении для непустого списка (T) рекурсивно вызывается функция len, передавая в нее список T и текущую длину N. При этом значение N1, полученное в результате вызова функции len для списка T, присваивается значению N, увеличивая его на единицу.
  7. В третьем утверждении предиката count_after для списка [H|T], значение H и переменная L (количество элементов после H) рекурсивно вызывается функция len, передавая в нее список T и текущую длину L. При этом значение N1, полученное в результате вызова функции len для списка T, присваивается значению L, увеличивая его на единицу.
  8. В четвертом утверждении предиката countafter для списка [|T] (неравенство H используется для вызова рекурсивной функции count_after для списка T), значение H и переменная L (количество элементов после H) рекурсивно вызывается функция count_after, передавая в нее список T и текущую длину L.

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


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

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

12   голосов , оценка 3.917 из 5

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

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

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