Проверка присутствия в списке подряд всех элементов другого списка на Прологе


Добавил:DMT
Дата создания:6 января 2008, 14:54
Дата обновления:6 января 2008, 14:54
Просмотров:3579 последний 8 апреля, 4:03
Комментариев: 3

Проверка присутствия в списке подряд всех элементов другого списка на Прологе. Проверка присутствия в списке 2 подряд всех элементов из списка 1

Код на Lisp
  1. predicates
  2. revers(slist,slist,slist)
  3. expand_check(strp,strp)
  4. /* проверка присутствия в списке2 подряд всех элементов списка1
  5. параметры:
  6. - список 1
  7. - список 2 */
  8. clauses
  9. expand_check([],Z):- !,fail.
  10. expand_check(X,Y):- check(X,Y),!.
  11. expand_check(XL,[Y|YL]):- expand_check(XL,YL).
  12.  
  13. goal
  14. expand_check(["3","4"],["0","1","3","4","5","6","7"]).
При использовании обязательна ссылка на http://DMTSoft.ru
up

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


Пользователь: stim
Сообщений: 2
Статус: Незримый
Зарегистрирован:
4 июля 2008, 6:45
Был:4 июля 2008, 20:58
stim
smsup
Дата: 4 июля 2008, 6:50 Сообщение № 1
КОД не РАБОЧИЙ((
Пользователь: DMT
Сообщений: 123
Статус: Программист
Зарегистрирован:
18 октября 2007, 2:35
Был:13 ноября 2017, 4:54
DMT
smsup
Дата: 4 июля 2008, 20:02 Сообщение № 2
Да действительно, просто один предикат не был добавлен!!
вОТ рабочий код, извините за неудобства
Код на Lisp
  1. domains
  2. int=integer
  3. str=string
  4. strp=str*
  5. predicates
  6. check(strp,strp).
  7. /* проверка первых элементов списка2 на равенство
  8. с элементами списка1
  9. параметры:
  10. - список1
  11. - список2 */
  12. expand_check(strp,strp)
  13. /* проверка присутствия в списке2 подряд всех элементов списка1
  14. параметры:
  15. - список1
  16. - список2 */
  17. TEST_LIST(strp,strp)
  18. clauses
  19. check([],Z):- !.
  20. check([Head|Y],[Head|Z]):- check(Y,Z).
  21. expand_check([],Z):- !,fail.
  22. expand_check(X,Y):- check(X,Y),!.
  23. expand_check(XL,[Y|YL]):- expand_check(XL,YL).
  24. TEST_LIST(L1,L2):- expand_check(L1,L2),write("\nЭлементы в списке присутствуют \n"),!.
  25. TEST_LIST(L1,L2):- write("\nЭлементы в списке НЕ присутствуют \n"),!.
  26. goal
  27. TEST_LIST(["3","4"],["0","1","3","4","5","6", "7"]).
При использовании обязательна ссылка на http://DMTSoft.ru
Пользователь: stim
Сообщений: 2
Статус: Незримый
Зарегистрирован:
4 июля 2008, 6:45
Был:4 июля 2008, 20:58
stim
smsup
Дата: 4 июля 2008, 20:28 Сообщение № 3
Спасибо большое)))