Составители:
Рубрика:
133
Часто процедура присоединить используется для получения списков,
находящихся слева и справа от данного элемента:
присоединить (L [джим, р], [джек, билл, джим, тим, джим,
боб]).
L = [джек, билл]
R = [тим, джим, боб]
другие решения (да/нет)? да
L=[джек, билл, джим, тим]
R=[боб]
другие решения (да/нет)? да
других решений нет
Индексирование списка. Задача получения N-ro терма в списке
определяется следующим образом:
Граничное условие:
Первый терм в списке [Н|Т] есть Н.
Рекурсивное условие:
N-й терм в списке [Н|Т] является (N-I)-м термом в списке Т.
Данному определению соответствует программа:
/* Граничное условие:
получить ([H|Т], 1, Н). /* Рекурсивное условие:
получить([Н|Т], N, У) :-
М is N-1,
получить (Т, М ,Y).
Построение списков из фактов. Иногда бывает полезно представить в
виде списка информацию, содержащуюся в известных фактах. В
большинстве реализаций Пролога есть необходимые для этого предикаты:
bagof(X,Y,L)
— определяет список термов
L
, конкретизирующих
переменную
Х
как аргумент предиката
Y
, которые делают истинным предикат
Y.
setof(X,Y,L)
— все сказанное о предикате
bagof
относится и к
setof
,
за исключением того, что список
L
отсортирован и из него удалены все
повторения.
Если имеются факты:
собака(рекс).
собака(голди).
собака(фидо).
собака(реке).
Часто процедура присоединить используется для получения списков,
находящихся слева и справа от данного элемента:
присоединить (L [джим, р], [джек, билл, джим, тим, джим,
боб]).
L = [джек, билл]
R = [тим, джим, боб]
другие решения (да/нет)? да
L=[джек, билл, джим, тим]
R=[боб]
другие решения (да/нет)? да
других решений нет
Индексирование списка. Задача получения N-ro терма в списке
определяется следующим образом:
Граничное условие:
Первый терм в списке [Н|Т] есть Н.
Рекурсивное условие:
N-й терм в списке [Н|Т] является (N-I)-м термом в списке Т.
Данному определению соответствует программа:
/* Граничное условие:
получить ([H|Т], 1, Н). /* Рекурсивное условие:
получить([Н|Т], N, У) :-
М is N-1,
получить (Т, М ,Y).
Построение списков из фактов. Иногда бывает полезно представить в
виде списка информацию, содержащуюся в известных фактах. В
большинстве реализаций Пролога есть необходимые для этого предикаты:
bagof(X,Y,L) — определяет список термов L, конкретизирующих
переменную Х как аргумент предиката Y, которые делают истинным предикат
Y.
setof(X,Y,L) — все сказанное о предикате bagof относится и к setof,
за исключением того, что список L отсортирован и из него удалены все
повторения.
Если имеются факты:
собака(рекс).
собака(голди).
собака(фидо).
собака(реке).
133
Страницы
- « первая
- ‹ предыдущая
- …
- 132
- 133
- 134
- 135
- 136
- …
- следующая ›
- последняя »
