Удалить из списка все элементы, равные последнему; найти длину полученного списка - Prolog

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

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

Помогите реализовать.Создайте список и Удалите из списка все элементы, равные последнему, найдите длину оставшегося списка;
Листинг программы
  1. domains
  2. list_string=string*
  3. predicates
  4. has(string,list_string)
  5. general(list_string,list_string,list_string)
  6. clauses
  7. has(X,[X|_]):-!.
  8. has(X,[_|Y]):-has(X,Y).
  9. general([],_,[]):-!.
  10. general([H|T1],L2,[H|T3]):-general(T1,L2,T3),has(H,L2),not(has(H,T3)),!.
  11. general([_|T1],L2,L3):-general(T1,L2,L3).
  12. goal
  13. general(["0","1","3","3","4","4","5","6","7","2"],["3","0","8","2","4","6","6","5"],List).
Получилось так,но это не то что мне нужно,подскажите как сделать именно по заданию? Что бы был один список и из него удалить все элементы равные последнему и посчитать длину списка?
ПОлучилось такой код сделать,но все равно не пойму как реализовать удаление элемента и потом выведение суммы списка
Листинг программы
  1. DOMAINS
  2. list = integer*
  3. PREDICATES
  4. member(integer, list)
  5. CLAUSES
  6. member(X,[X|_]):-write("yes"),!.
  7. member(X,[]):-write("no"),!.
  8. member(X,[_|L]) :- member(X, L).
  9. GOAL
  10. L=[1,2,3,4], write(L),nl, write("X="),readint(X),
  11. member(X, L),nl.

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

textual
Листинг программы
  1. len_del_last2(Xs, Ys, Len) :-
  2.     len_del_last2(Xs, _Z, Ys, Len).
  3.  
  4. len_del_last2([X], X, [], 0).
  5. len_del_last2([X, Y | Xs], Z, Ys1, Len1) :-
  6.     len_del_last2([Y | Xs], Z, Ys, Len),
  7.     len_del_last2_gen(X, Z, Ys, Ys1, Len, Len1).
  8.  
  9. len_del_last2_gen(X, X, Ys, Ys, Len, Len).
  10. len_del_last2_gen(X, Z, Ys, [X | Ys], Len, Len1) :-
  11.     X \= Z,
  12.     Len1 is Len + 1.

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


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

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

14   голосов , оценка 4.286 из 5

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

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

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