![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 11.03.2013
Сообщений: 3
|
![]()
Помогите, пожалуйста, решить задачу!!!!
Написать программу для циклического сдвига списка вправо на заданное число элементов. Например: список [6, 5, 4, 3, 2, 1], циклически сдвинутый вправо на 2 элемента, преобразуется в список [2, 1, 6, 5, 4, 3]. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
Какой маразматик даёт такие задачи на прологе?!
Цель элементарного сдвига вправо - хвост списка начиная со второго элемента, слитый со списком из первого элемента. Цель сдвига вправо на 1 - цель элементарного сдвига вправо. Цель сдвига вправо на n - цель сдвига вправо на n-1 цели элементарного сдвига вправо. Как-то так, дальше копать здесь. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 11.03.2013
Сообщений: 3
|
![]()
(((((((((((((((((
|
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 11.03.2013
Сообщений: 3
|
![]()
Вроде нашла...Помогите, пожалуйста, разобраться.....
domains CharList = Char* predicates цикл_сдвиг(Integer,CharList,CharLis t) взять_посл(CharList,CharList,Char) goal цикл_сдвиг(0,['t','r','5','n'],_List1). clauses цикл_сдвиг(_,[],[]):-!. цикл_сдвиг(0,List,List):-!. цикл_сдвиг(K,List,List0):-взять_посл(List,List1,Last), K1=K-1,!,цикл_сдвиг(K1,[Last|List1],List0). взять_посл([M],[],M):-!. взять_посл([M|List],[M|List1],Last):-взять_посл(List,List1,Last). |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
Вот информация по теме, но на Делфи.
http://www.programmersforum.ru/showp...6&postcount=29 (алгоритм, который там содержится - не самый оптимальный) Пролог не знаю, помочь не могу. |
![]() |
![]() |
![]() |
#6 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
сдвинуть вправо значит
1. оторвать от списка последний элемент (A) и получить обрубок списка (B) 2. [A|B] - результат тебе надо вызвать такую штуку N раз Код:
------ тогда сдвиг запишешь так: Код:
Код:
Код:
Последний раз редактировалось rrrFer; 12.03.2013 в 21:07. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Prolog | qip2005 | Помощь студентам | 0 | 01.12.2011 02:05 |
Prolog | ankatito | Помощь студентам | 6 | 13.11.2011 20:53 |
prolog | Studento4ka | Помощь студентам | 0 | 18.04.2010 11:17 |
Prolog | Darck Angel | Софт | 0 | 17.01.2010 20:32 |
Prolog | Debro | Помощь студентам | 2 | 26.12.2009 10:16 |