2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 пролог - сортировка списка
Сообщение19.01.2008, 02:40 


19/01/08
2
передо мной встала нетривиальная задача:надо сделать сортировку списка методом вставки, задача казалось бы простая, если делать её с 2мя предикатами,а надо с 1м!!!Весь мозг сломал=( помогите плиз!!!

 Профиль  
                  
 
 
Сообщение19.01.2008, 23:44 


19/01/08
2
ins_sort([ ],[ ]).
ins_sort([H|T],L):–ins_sort(T,T_Sort),insert(H,T_Sort,L).
insert(X,[],[X]).
insert(X,[H|T],[H|T1]):–X>H,!,insert(X,T,T1).
insert(X,T,[X|T]).

вот код с 2мя предикатами

 Профиль  
                  
 
 
Сообщение23.01.2008, 01:44 


04/05/06
12
Yalta
Тут оба предиката рекурсивные. Если бы хоть один был без рекурсии, то слить их в один было бы тривиально. А так, боюсь, дело не в Прологе, а просто надо придумать какой-то другой алгоритм, чтобы содержал одну процедуру. У меня что-то пока не выходит :(

 Профиль  
                  
 
 
Сообщение04.02.2008, 03:08 
Заслуженный участник


18/03/07
1068
Вот что придумал (Turbo Prolog 2.0):

Код:
CONSTANTS
spisok=[3,1,0,-1,2,1]

DOMAINS
int=integer   
list = integer*

PREDICATES
ins_sort(int,int,list,list)

CLAUSES
ins_sort(0,0,[ ],[ ]).
ins_sort(0,0,[H|T],L):-
   ins_sort(0,0,T,T_Sort),
   ins_sort(1,H,T_Sort,L).
ins_sort(1,X,[],[X]).
ins_sort(1,X,[H|T],[H|T1]):-
   X>H,!,
   ins_sort(1,X,T,T1).
ins_sort(1,X,T,[X|T]).

GOAL
ins_sort(0,0,spisok,X), write(X).


Извращение, конечно :)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group