Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не циклический сдвиг элементов списка 
V
    Опции темы
Стил
Дата 18.10.2010, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 18.10.2010

Репутация: нет
Всего: нет



Всем привет!
Не могу ничего найти про не циклический сдвиг...
Подскажите,пожалуйста, как мне осуществить сдвиг элемента списка на одну позицию влево (+вправо) и на N позиций влево(+вправо).
Вот, что я смог написать:

domains
sp=integer*
N=integer
E=integer

predicates
sdvig(sp,integer,sp).
sdvig_levo(sp,sp).
sdvig_pravo(sp,sp).
sdvig(sp,N,sp).
sdvig_levo(sp,sp).
sdvig_pravo(sp,sp).

clauses
sdvig(E,[H/T]):-sdvig_levo([1,2,3],1,sp).
sdvig([H/T],E):-sdvig_pravo(1,sp,[1,2,3]).
sdvig(E,[H/T]):-sdvig_levo([1,2,3],N,sp).
sdvig([H/T],E):-sdvig_pravo(1,N,[1,2,3]).
goal
sdvig(E,[1,2,3]).
sdvig([1,2,3],E).

Помогите,пожалуйста, разобраться с этой программой!!!!



PM MAIL   Вверх
Грымзик
Дата 18.10.2010, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 7.10.2009

Репутация: 6
Всего: 6



Как-то у Вас там совсем все запутано  smile 
Код
domains
ilist=integer*

predicates
levo(integer,ilist,ilist).
pravo(integer,ilist,ilist).
del_last(ilist,ilist).
add_last(ilist,ilist).
a(ilist,integer,ilist).
b(ilist,integer,ilist).

clauses
del_last([_],[]):-!.
del_last([H|Tail],[H|NewTail]):-del_last(Tail,NewTail).

add_last([],[0]).
add_last([H|Tail],[H|NewTail]):-add_last(Tail,NewTail).

levo(0,L,L):-!.
levo(N,[_|T],L):-N1=N-1,add_last(T,T1),levo(N1,T1,L).

pravo(0,L,L):-!.
pravo(N,T,L):-del_last(T,T1),N1=N-1,pravo(N1,[0|T1],L).

a(A,N,B):-levo(1,A,A1),pravo(N,A1,B).

b(A,N,B):-pravo(1,A,A1),levo(N,A1,B).

goal
a([1,2,3,4,5],3,A),
b([1,2,3,4,5],3,B).

PM MAIL   Вверх
Стил
Дата 19.10.2010, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 18.10.2010

Репутация: нет
Всего: нет



Грымзик, спасибо огромное! 
Выручили!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.