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

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

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

Подскажите, как удалить элемент и найти длину оставшегося списка?

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

textual
Листинг программы
domains
int=integer
intl=int*
 
predicates
del(intl,int,intl)
len(intl,int)
 
clauses
del([],_,[]).
del([X|T],X,R) :- del(T,X,R).
del([Y|T],X,[Y|R]) :- X<>Y, del(T,X,R).
 
len([],0).
len([_|T],L) :- len(T,L1), L=L1+1.
 
goal
 
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
Похожие ответы