Удалить из списка элемент, найти длину оставшегося списка - 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.
Объяснение кода листинга программы
В этом коде:
- Задана программа на языке Prolog с двумя определениями: — del(intl,int,intl) — удаляет элемент из списка, который находится в переменной intl. Если int равно int, то элемент удаляется. Если int не равно int, то элемент остаётся в списке. — len(intl,int) — возвращает длину списка, который находится в переменной intl. Если список пустой, то возвращается 0. Если список не пустой, то к его длине добавляется 1.
- В последней строке записано утверждение, которое выводится на экран: — 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.
- После выполнения программы на экран будет выведено число 7, так как после удаления числа 3 из списка его длина стала равной 7.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д