Номер заданного элемента - Prolog

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

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

Найти номер заданного элемента, если он стоит на середине, удалить элементы второй половины списка
Листинг программы
  1. domains
  2. L=integer*
  3. N=integer.
  4. predicates
  5. conc(L,L,L)
  6. rev(L,L)
  7. rd(N,L).
  8. clauses
  9. rd(0,[]).
  10. rd(N,L):-
  11. readint(A),
  12. N1=N-1, rd(N1,L1),
  13. L=[A|L1].
  14. conc([],X,X).
  15. conc([H|T],X,[H|Z]):-
  16. conc(T,X,Z).
  17. rev([],[]).
  18. rev([H|T],Z):-
  19. rev(T,Q), conc(Q,[H],Z).
  20. /* номер позиции элемента*/
  21. find_pos(list,int,int)
  22. /* номер позиции элемента*/
  23. find_pos([],_,0):-!.
  24. find_pos([H|T],X,K):- X<>H,K1=K+1,find_pos(T,X,K1).
  25. find_pos(_,_,K):-write(K),nl,!.
  26. /* выведет элемент под номером N*/
  27. find_n([],_,0):-!.
  28. find_n([_|T],N,K):- N<>K,K1=K+1,find_n(T,N,K1).
  29. find_n([H|_],_,_):-write(H),nl,!.
  30. /*--------------------------------*/
  31. /* удалить элемент с заданным номером */
  32. del_n(list,int,int,list,list)
помогите все это нормально связать

Решение задачи: «Номер заданного элемента»

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

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


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

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

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

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

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

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