Заменить N последних элементов списка на заданную константу - Prolog
Формулировка задачи:
Заменить N последних элементов списка на заданную константу.
Решение задачи: «Заменить N последних элементов списка на заданную константу»
textual
Листинг программы
domains list=integer* predicates nondeterm append(list,integer,list) nondeterm run(list) nondeterm insert (integer,list,list) nondeterm create_list (list,list) nondeterm do (char,list,list) nondeterm length(list,integer) nondeterm change(list,integer,integer,list) nondeterm task(list,integer,integer,list) clauses run(L):- write("\n 1. Create list \n 2. Change elements \n 3. Exit\n"), readchar(X), write("Entered: ", X,"\n"), do(X,L,NewL), run(NewL). do ('1',L,NewL):-create_list(L,NewL), write("List: ", NewL). do ('2',L,L):-write("Enter number: "), readint(N), write("Enter const: "), readint(C), task(L,C,N,NewL), write("List: ", NewL). do('3',L,L):-write("Good Buy!"),exit. do (X,L,L):-X<>'1',X<>'2',X<>'3',write ("Error!"). create_list(L,NewL):-write(">>"), readint(X), append(L,X,TempL), create_list(TempL,NewL). create_list(L,L). insert(X,L,[X|L]). append([],X,[X]). append([H|Xs],X,[H|Ys]):- append(Xs,X,Ys). length([],0). length([_|T],Len):-length(T,Count), Len=Count+1. change([],_,_,[]). change([H|T],C,N,[H|NewT]) :- N>0, N1=N-1, change(T,C,N1,NewT). change([_|T],C,0,[C|NewT]) :- change(T,C,0,NewT). task(X,C,N,NewT) :-length(X,Len), N1=Len-N, %N>Len, do('2',L,L), change(X,C,N1,NewT). goal run([]).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д