Реверс списка на Прологе


Добавил:DMT
Дата создания:6 января 2008, 13:57
Дата обновления:6 января 2008, 14:17
Просмотров:10764 последний 8 апреля, 4:04
Комментариев: 4

Реверс списка на Прологе.

Вариант 1:
Код на Lisp
  1.  
  2. predicates
  3. revers(slist,slist,slist)
  4. clauses
  5. revers([], L, L).
  6. revers([X|L1], L2, ResultNew):-revers(L1, [X|L2],ResultNew).
  7.  
  8. goal
  9. ins(["0","1","3","4","5","6","7"],[],Res_list,).
  10.  
При использовании обязательна ссылка на http://DMTSoft.ru
Вариант 2:
Код на Lisp
  1. domains
  2. int=integer
  3. str=string
  4. strp=str*
  5. predicates
  6. revers(strp,strp).
  7. /* инверсия списка (вызываемая функция)
  8. параметры:
  9. strp - исходный список
  10. strp - инвертированный список */
  11. clauses
  12. revers(X,Y):- revers([],X,Y).
  13. revers(Y,[],Y).
  14. revers(X1,[Z|X2],Y):- revers([Z|X1],X2,Y).
При использовании обязательна ссылка на http://DMTSoft.ru
up

Комментарии для "Реверс списка на Прологе"


Пользователь: wozzz
Сообщений: 8
Статус: Пользователь
Зарегистрирован:
16 декабря 2008, 6:22
Был:20 января 2009, 8:36
wozzz
smsup
Дата: 16 декабря 2008, 6:26 Сообщение № 1
оо..!!
спасибо!

вот сидел писала как раз..
учебники искал..!!)
Пользователь: wozzz
Сообщений: 8
Статус: Пользователь
Зарегистрирован:
16 декабря 2008, 6:22
Был:20 января 2009, 8:36
wozzz
smsup
Дата: 16 декабря 2008, 7:39 Сообщение № 2
хм..
ток еще чет нельзя его полностью просмотреть..(
Пользователь: wozzz
Сообщений: 8
Статус: Пользователь
Зарегистрирован:
16 декабря 2008, 6:22
Был:20 января 2009, 8:36
wozzz
smsup
Дата: 16 декабря 2008, 8:53 Сообщение № 3
вот мой...
ток 1 проблема кака-это

DOMAINS
list = integer*
%int = integer
PREDICATES

reverse (list, list)
insert (list)
conc ( list,list,list)
CLAUSES

insert ([]).

insert ([H|T]):- write (H), nl, insert (T).

conc ([],[],[]).
reverse ([], []).


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



GOAL
write ("Direct list:"),nl,
insert ([1 ,2, 3, 4, 5]), nl, nl,
write ("Reverse list:"),nl,
reverse ([1 ,2, 3, 4, 5],L).

Пользователь: wozzz
Сообщений: 8
Статус: Пользователь
Зарегистрирован:
16 декабря 2008, 6:22
Был:20 января 2009, 8:36
wozzz
smsup
Дата: 16 декабря 2008, 10:15 Сообщение № 4
хаха))
вот это лол)

ошибка))))))

Код на Lisp
  1. DOMAINS
  2. list = string*
  3. PREDICATES
  4. reverse (list, list)
  5. insert (list)
  6. conc ( list,list,list)
  7. CLAUSES
  8. insert ([]).
  9. insert ([H|T]):- write (H), nl, insert (T).
  10. conc ([],List,List).
  11. conc([X|L1], L2, [X|L3]):- conc(L1, L2, L3).
  12. reverse([], []).
  13. reverse([X|L1], L2):-reverse(L1, L3),
  14. conc( L3, [X], L2).
  15. GOAL
  16. write ("Direct list:"),nl,
  17. insert ([ааа, привет, как, дела, хи]), nl, nl,
  18. write ("Reverse list:"),nl,
  19. reverse ([ааа ,привет, как, дела, хи],L).
При использовании обязательна ссылка на http://DMTSoft.ru