Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2012, 19:33   #1
KLOP
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию Prolog.Сортировка списка

Пусть даны 2 отсортированых списка, обеспечить добавление елементов 2-х списков в 3-й так что бы он остался отсортированым.(сортировать слиянием)
сделал слияние 2-х списков, а как отсортировать я не могу понять

Код:
domains
	int=integer
	list=integer*
predicates
	append(list,list,list).
clauses
	append([],L,L).
	append([H|L1],L2,[H|L3]):-append(L1,L2,L3).
goal
	S1=[1,3,5,7,9],S2=[0,2,4,6,8],
	append(S1,S2,NEW),write(NEW),nl,
	write("-------------").
KLOP вне форума Ответить с цитированием
Старый 23.12.2012, 21:34   #2
KLOP
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию

кто нить помогите списки сливаются 1 2 3 4 5 0 2 4 6 8 надо что б он сортировался пожалуйста срочно надо((
KLOP вне форума Ответить с цитированием
Старый 23.12.2012, 22:19   #3
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

ну вот что-то подобное нашел...
Код:
domains
list = integer*
n=integer

predicates

bubble(list,list)
permutation(list,list)
ins_sort(list,list)
insert(n,list,list)
choice(list,list)
min_list(list,n)
delete_one(n,list,list)
min(n,n,n)
quick_sort(list,list)
partition(list,n,list,list)
conc(list, list, list)
splitting(list, list, list)
fusion_sort(list,list)
fusion(list, list, list)

clauses

conc([ ], L, L).
conc([H|T], L, [H|T1]) :-
conc(T,L,T1). 


min(X,Y,X):-
  X<Y.   
min(X,Y,Y):-
  X>=Y.



min_list([X],X). 
min_list([H|T],M):-
   min_list(T,M_T),
   min(H,M_T,M). 

permutation([X,Y|T],[Y,X|T]):-
                        X>Y,!.
permutation([X|T],[X|T1]):-
                        permutation(T,T1).
bubble(L,L1):-
     permutation(L,LL),!, bubble(LL,L1). 
bubble(L,L).

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]). 


choice([ ],[ ]). 
choice(L,[X|T]):- 
                min_list(L,X), 
                delete_one(X,L,L1),
                choice(L1,T). 

delete_one(_,[],[]).
delete_one(X,[X|L],L):-!.
delete_one(X,[Y|L],[Y|L1]):-
                  delete_one(X,L,L1).
quick_sort([],[]). 
quick_sort([H|T],O):-
                partition(T,H,L,G),
                quick_sort(L,L_s),
                quick_sort(G,G_s),
                conc(L_s,[H|G_s],O).
partition([],_,[],[]). 
partition([X|T],Y,[X|T1],Bs):-
                X<Y,!,
                partition(T,Y,T1,Bs).
partition([X|T],Y,T1,[X|Bs]):-
                partition(T,Y,T1,Bs).
        
splitting([],[],[]).
splitting([H],[H],[]). 
splitting([H1,H2|T],[H1|T1],[H2|T2]):-
                splitting(T,T1,T2).

fusion_sort([],[]):-!.
fusion_sort([H],[H]):-!. 
fusion_sort(L,L_s):-
                splitting(L,L1,L2),
                fusion_sort(L1,L1_s),
                fusion_sort(L2,L2_s),
                fusion(L1_s,L2_s,L_s).
        
fusion(L1,[ ],L1):-!. 
fusion([ ],L2,L2):-!. 
fusion([H1|T1],[H2|T2],[H1|T]):-
                   H1<H2,!,
                   fusion(T1, [H2|T2],T).
fusion(L1, [H2|T2],[H2|T]):-
                   fusion(L1,T2,T).
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума Ответить с цитированием
Старый 23.12.2012, 22:35   #4
KLOP
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию

KORT,спасибо конечно,но я в это нечего не понемаю,мне надо как написанно в задании при слиянии список отсортировать
KLOP вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить элементы из списка.PROLOG Mediaplay Помощь студентам 0 11.12.2012 19:43
VISUAL PROLOG удалить из списка подсписок Glo Помощь студентам 0 28.05.2012 20:53
Удаление из списка. Turbo Prolog Ketty_byyy Помощь студентам 1 23.05.2010 15:19
Prolog (Выбор по условию из списка) nata Помощь студентам 1 06.05.2010 13:27
[Prolog] Преобразование списка в таблицу girlll Помощь студентам 1 07.04.2009 23:29