Заменить N последних элементов списка на заданную константу - Prolog

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

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

Заменить N последних элементов списка на заданную константу.

Решение задачи: «Заменить N последних элементов списка на заданную константу»

textual
Листинг программы
  1. domains
  2. list=integer*
  3.  
  4. predicates
  5. nondeterm append(list,integer,list)
  6. nondeterm run(list)
  7. nondeterm insert (integer,list,list)
  8. nondeterm create_list (list,list)
  9. nondeterm do (char,list,list)
  10. nondeterm length(list,integer)
  11. nondeterm change(list,integer,integer,list)
  12. nondeterm task(list,integer,integer,list)
  13.  
  14.  
  15. clauses
  16. run(L):- write("\n 1. Create list \n 2. Change elements \n 3. Exit\n"),
  17. readchar(X),
  18. write("Entered: ", X,"\n"),
  19. do(X,L,NewL),
  20. run(NewL).
  21.  
  22. do ('1',L,NewL):-create_list(L,NewL),
  23.                  write("List: ", NewL).
  24. do ('2',L,L):-write("Enter number: "),
  25.               readint(N),
  26.               write("Enter const: "),
  27.               readint(C),            
  28.               task(L,C,N,NewL),
  29.               write("List: ", NewL).
  30. do('3',L,L):-write("Good Buy!"),exit.
  31. do (X,L,L):-X<>'1',X<>'2',X<>'3',write ("Error!").
  32.  
  33.  create_list(L,NewL):-write(">>"),
  34.                       readint(X),                      
  35.                       append(L,X,TempL),                    
  36.                       create_list(TempL,NewL).
  37.                       create_list(L,L).
  38. insert(X,L,[X|L]).
  39.  
  40. append([],X,[X]).
  41. append([H|Xs],X,[H|Ys]):-
  42. append(Xs,X,Ys).
  43.  
  44. length([],0).
  45. length([_|T],Len):-length(T,Count),
  46.                 Len=Count+1.
  47.  
  48. change([],_,_,[]).
  49. change([H|T],C,N,[H|NewT]) :- N>0, N1=N-1, change(T,C,N1,NewT).
  50. change([_|T],C,0,[C|NewT]) :- change(T,C,0,NewT).
  51.  
  52. task(X,C,N,NewT) :-length(X,Len),
  53.                    N1=Len-N,
  54.                    %N>Len, do('2',L,L),                          
  55. change(X,C,N1,NewT).
  56.  
  57. goal
  58. run([]).

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


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

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

11   голосов , оценка 4.545 из 5

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

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

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