Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Prolog > Работа со списками(циклическая)


Автор: kasperr 24.11.2011, 16:55
Определить предикат, циклически сдвигающий список на три элемента вправо. Например,
? - sdvig([a, b, c, d, e, f], L).
L = [d, e, f, a, b, c]

Вот что я сделал:----НО не работает как по заданию весь мозг сломал уже!!
sdvig(X,Y,0,Z).
sdvig([H|T],F,M,L,W):-scepit(T,[H],F), sdvig(F,L,K,Z),M is K+1.
ss(A,F):-sdvig(A,L,3,F).
scepit([],L,L).
scepit([H|T],L,[H|L1]):-scepit(T,L,L1).
%ss([1,2,3,4,5],L).

Автор: kasperr 24.11.2011, 18:23
GNU Prolog 1.3

Автор: kasperr 25.11.2011, 14:14
Все справился!
sdvig(L,0,L):-!.
sdvig([H|T],N,R):-scepit(T,[H],RR),NN is N-1, sdvig(RR,NN,R).
ss(A,R):-sdvig(A,3,R).
scepit([],L,L).
scepit([H|T],L,[H|L1]):-scepit(T,L,L1).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)