| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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). |