Подсчет базы данных Пролог - PullRequest
1 голос
/ 31 марта 2011

Как я могу проверить, дает ли запрос конкретное количество результатов.

Так, например, я хочу получить модель автомобиля, который участвовал только в трех конкретных гонках.

Предикат автомобиля: автомобиль (раса №, имя).

Ответы [ 3 ]

2 голосов
/ 31 марта 2011
% Car has been on N races
car_with_n_races(Car, N) :-
    length(Races, N),
    findall(Race, car(Race, Car), Races).

Используйте setof вместо findall, если car/2 может возвращать повторяющиеся результаты.

(Вы можете поменять местами звонки на length и findall, но я думаю, что этот порядок может быть более эффективным.)

0 голосов
/ 01 апреля 2011

% извините!

car_with_n_races (Car, N): - рассчитывать (автомобиль (гонки, авто), N).

count (P, Count): - FindAll (1, P, L), Длина (L, Count).

0 голосов
/ 01 апреля 2011

car_with_n_races (Car, N): - количество (раса (Race, Car), N).

count (P, количество): - findall (1, P, L), длина (L,Count).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...