fd048651b6
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@55 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
47 lines
961 B
Plaintext
47 lines
961 B
Plaintext
|
|
:- object(plan(_)).
|
|
|
|
|
|
:- info([
|
|
authors is 'Paulo Moura',
|
|
version is 1.0,
|
|
date is 2000/4/22,
|
|
comment is 'Air-line trip planner.',
|
|
parnames is ['Mode'],
|
|
source is 'Example adopted from the Francis G. McCabe L&O documentation.']).
|
|
|
|
|
|
:- public(from/3).
|
|
|
|
:- mode(from(+atom, +atom, -list), zero_or_more).
|
|
|
|
:- info(from/3,
|
|
[comment is 'Plan a trip from Start to Destination.',
|
|
argnames is ['Start', 'Destination', 'Plan']]).
|
|
|
|
|
|
from(Start, Destination, Plan) :-
|
|
from(Start, Destination, [], Plan).
|
|
|
|
|
|
from(Start, Destination, _, [Step]) :-
|
|
parameter(1, Mode),
|
|
Mode::step(Start, Destination, Step),
|
|
!.
|
|
|
|
from(Start, Destination, Locations, [Step| Steps]) :-
|
|
parameter(1, Mode),
|
|
Mode::step(Start, City2, Step),
|
|
not_member(City2, Locations),
|
|
from(City2, Destination, [Start| Locations], Steps).
|
|
|
|
|
|
not_member(_, []).
|
|
|
|
not_member(City, [Location| Locations]) :-
|
|
City \= Location,
|
|
not_member(City, Locations).
|
|
|
|
|
|
:- end_object.
|