Navigation  without Java Scripts


include "cgiexam.inc"

DOMAINS
town = symbol
distance = integer

PREDICATES
nondeterm road(town,town,distance)
nondeterm route(town,town,distance)

CLAUSES

road("tampa","houston",200).
road("gordon","tampa",300).
road("houston","gordon",100).
road("houston","kansas_city",120).
road("gordon","kansas_city",130).
road("kansas_city","tampa",200).

route(Town1,Town2,Distance):-
    road(Town1,Town2,Distance).
route(Town1,Town2,Distance):-
    road(Town1,X,Dist1),
    write ("From ",Town1," to ",X," : ",Dist1,"<br>\n"),
    route(X,Town2,Dist2),
    write ("From ",X," to ",Town2," : ",Dist2,"<br>\n"),
    Distance=Dist1+Dist2,
    !.


PREDICATES
runme (PARMLIST)
nondeterm member (PARM,PARMLIST)
show_dist (string,string)

CLAUSES

member (X,[X|_]).
member (X,[_|Y]):-member(X,Y).

runme (Parmlist) :-
    member(parm("From",From),Parmlist),
    member(parm("To",To),Parmlist),!,
    show_dist(From,To).
   
show_dist (City,City) :- !,write ("<p>Same city").
show_dist (City1,City2) :-
    route(City1,City2, X),!,
    write("<p>Distance from ",City1," to ",City2," is ",X).

GOAL   
write("Content-type: text/html\n\n"),
write("<html>\n"),
write("<body>\n"),
    ParmList = cgi_GetParmList(),
    runme(ParmList),
    write("</body>\n"),
    write("</html>\n").