Удалить из списка элемент, найти длину оставшегося списка - Prolog

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

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

Подскажите, как удалить элемент и найти длину оставшегося списка?
Листинг программы
  1. domains
  2. i=integer
  3. il=i*
  4. predicates
  5. del(i,il,il)
  6. clauses
  7. del(El,[El|_],[]):-!.
  8. del(El,[X|T],[X|T1]):-del(El,T,T1).
  9. goal
  10. del(3,[4,11,-5,8,2,3,9,-5,2,10],L).

Решение задачи: «Удалить из списка элемент, найти длину оставшегося списка»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. del(intl,int,intl)
  7. len(intl,int)
  8.  
  9. clauses
  10. del([],_,[]).
  11. del([X|T],X,R) :- del(T,X,R).
  12. del([Y|T],X,[Y|R]) :- X<>Y, del(T,X,R).
  13.  
  14. len([],0).
  15. len([_|T],L) :- len(T,L1), L=L1+1.
  16.  
  17. goal
  18.  
  19. del([4,11,-5,8,2,3,9,-5,2,10],3,L), len(L,R), write(R), nl.

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

В этом коде:

  1. Задана программа на языке Prolog с двумя определениями: — del(intl,int,intl) — удаляет элемент из списка, который находится в переменной intl. Если int равно int, то элемент удаляется. Если int не равно int, то элемент остаётся в списке. — len(intl,int) — возвращает длину списка, который находится в переменной intl. Если список пустой, то возвращается 0. Если список не пустой, то к его длине добавляется 1.
  2. В последней строке записано утверждение, которое выводится на экран: — del([4,11,-5,8,2,3,9,-5,2,10],3,L), len(L,R), write(R), nl. В этом утверждении: — [4,11,-5,8,2,3,9,-5,2,10] — список чисел, из которого удаляется число 3. — 3 - число, которое нужно удалить из списка. — L — переменная, в которую записывается список после удаления числа 3. — R — переменная, в которую записывается длина списка L.
  3. После выполнения программы на экран будет выведено число 7, так как после удаления числа 3 из списка его длина стала равной 7.

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


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

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

7   голосов , оценка 3.714 из 5

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

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

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