Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Cдвиг списка на прологе!!!!!!

90K
11 марта 2013 года
ksu1803
1 / / 11.03.2013
Помогите, пожалуйста!!!!!Написать программу для циклического сдвига списка вправо на заданное число элементов. Например: список [6, 5, 4, 3, 2, 1], циклически сдвинутый вправо на 2 элемента, преобразуется в список [2, 1, 6, 5, 4, 3].
247
12 марта 2013 года
wanja
1.2K / / 03.02.2003
 
Код:
rolr(L,0,L).
rolr(L,N,L1):-rolr_one(L,L2),
              N2 is N-1,
              rolr(L2,N2,L1).
% Сдвиг на один
rolr_one([H|T],L1):-ins_last(T,H,L1).
% Вставляет в конец
ins_last([],X,[X]).
ins_last([H|T],X,[H|T1]):-ins_last(T,X,T1).
Примерно так...
247
13 марта 2013 года
wanja
1.2K / / 03.02.2003
Пардон, это было влево :(

 
Код:
rolr(L,0,L).
rolr(L,N,L1):-rolr_one(L,L2),
              N2 is N-1,
              rolr(L2,N2,L1).
% Сдвиг на один
rolr_one(L,[E|T]):-get_last(L,E,T).
% Добывает последний и остаток
ins_last([X],X,[]).
ins_last([H|T],X,[H|T1]):-get_last(T,X,T1).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог