Составители:
Рубрика:
132
На запрос
?- принадлежит(b, [a, b, с]).
- ответ
да
.
Но на запрос
?- принадлежит(d, (a, b, c)).
Пролог дает ответ
нет.
В большинстве реализации Пролога предикат «принадлежит» является
встроенным.
Соединение двух списков. Задача присоединения списка
Q
к списку
Р
,
в результате чего получается список
R
, формулируется следующим образом:
Граничное условие:
присоединение списка Q к [] дает Q.
Рекурсивное условие:
Присоединение списка Q к концу списка Р выполняется так: Q
присоединяется к хвосту Р, а затем спереди добавляется голова Р.
Определение можно непосредственно написать на Прологе:
соединить([],0,0).
соединить(Р,Q,Р) :-
Р=[НР|ТР],
соединить(TP, Q, TR),
R=[HP|TR].
Однако, как и в предыдущем примере, воспользуемся тем, что Пролог
сопоставляет с целью голову утверждения, прежде чем пытаться согласовать
тело:
присоединить([] ,Q,Q).
присоединить(HP|TP], Q, [HP|TR]) :-
присоединить (TP, Q, TR).
На запрос
?- присоединить [а, b, с], [d, e], L).
будет получен ответ
L = [a, b, c, d].
Но на запрос
?- присоединить([a, b], [c, d], [e, f]).
ответом будет
нет.
На запрос
?- принадлежит(b, [a, b, с]).
- ответ да.
Но на запрос
?- принадлежит(d, (a, b, c)).
Пролог дает ответ нет.
В большинстве реализации Пролога предикат «принадлежит» является
встроенным.
Соединение двух списков. Задача присоединения списка Q к списку Р,
в результате чего получается список R, формулируется следующим образом:
Граничное условие:
присоединение списка Q к [] дает Q.
Рекурсивное условие:
Присоединение списка Q к концу списка Р выполняется так: Q
присоединяется к хвосту Р, а затем спереди добавляется голова Р.
Определение можно непосредственно написать на Прологе:
соединить([],0,0).
соединить(Р,Q,Р) :-
Р=[НР|ТР],
соединить(TP, Q, TR),
R=[HP|TR].
Однако, как и в предыдущем примере, воспользуемся тем, что Пролог
сопоставляет с целью голову утверждения, прежде чем пытаться согласовать
тело:
присоединить([] ,Q,Q).
присоединить(HP|TP], Q, [HP|TR]) :-
присоединить (TP, Q, TR).
На запрос
?- присоединить [а, b, с], [d, e], L).
будет получен ответ L = [a, b, c, d].
Но на запрос
?- присоединить([a, b], [c, d], [e, f]).
ответом будет нет.
132
Страницы
- « первая
- ‹ предыдущая
- …
- 131
- 132
- 133
- 134
- 135
- …
- следующая ›
- последняя »
