, , . , , .
?
?
■ , , . , ?
, . : timetable) Placel, Place2, ListOf Flights)
ListOfFlights : DpartureTime / ArrivalTirce / FlightNumber / ListOfDays
" ■■'" , , . ListOfDays , alldays . timetable , , : timetable london, edinburgh, (9:40 / 10:50 J 4733 / alldays, 19:40/ 20:50 / ba4833 / [mo, tu, we, th, f r, su] ]).
( ), ":".
, . : route; Placel, Piace2, Day, Route)
Route , .
1. Placel.
2. 12.
3. , Day.
4. , Route, , timetable.
5. .
4. :
, : From / / FlightNumber / Departure J:ime
, .
1) flight (Placel, Place2, Day, FlightNum, DepTine, ArrTime)
, FlightNum, Placel 12 Day, .
2) deptime; Route, Time)
Route Time.
|
|
3)transfer Timel, Time2)
Timel Time2 40 , .
, . .
.
.
transition timetable.
; .
, route accepts, , . .
1. .
Placel ?12, :
route; Placel, Place2, Day, [ Placel / Flace2 / From / Dep ]):-flight! Placel, Flace2, Day, Fnum, Dep, An).
2. .
1 F2 , 1
, 2. ,
.
route (PI, P2, Day, [M / / Fnuml / Depl | RestRoute]):-route(, 2, Day, RestRoute), flight! PI, , Day, Fnuml, Depl, Arrl), cleptimel RestRoute, Dep2), transfer) Arrl, Dep2).
f 1 i ght, transfer deptime , , 4.1. , .
108 I. Prolog
4.1. , ,
:- opt 50, xfy,:).
t route! Placel, Place2, Day, Route):
I Route - , s Placel 12, Day
route[ PI, 2, Day, [ PI / 2 / Frmm / Deptime ]):- % flight! PI, P2, Day, Fnura, Deptime, _).
I
route (PI, P2, Day, [ {Pi / P3 / Fnuml / Depl) I RestRoute]):-
route , P2, Day, RestRoute),
flight! PI, P3, Day, Fnuml, Depl, Arrl),
deptime) RestRoute, Dep2), % DC
transfer! Arrl, Dep2). %
flight) Placel, Place2, Day, Fnuni, Deptime, Arrtime):-timetable! Placel, Place2, Flightlist),
member! Deptime / Arrtiine / Fnum / Daylist, Flightlist), flyday! Day, Daylist).
flyday! Day, Daylist):-member! Day, Daylist).
flyday) Day, alldays):-
member) Day, [mo, tu,we, th, f r, sa, su]).
deptime) [ PI / P2 / Fnum / Dep _), Dep).
transfer) Hoursl:Minsl, Hours2:Mins2):-
60 * (Hours2 - Hoursl) + Mins2 - Hinsl >- 40. member) X, [X | LJ).
|
|
member! H, [Y \ L]):-member! X, L).
%
timetable[ edinburgh, london,
[ :40 / 10:50/ ba4733 /alldays, 13:40 / 14:50 / 4773 / alldays, 19:40 / 20:50 / ba4833 / (mo,tu,we,th,fr,su] ]).
timetable! london, edinburgh,
[ 9:40 / 10:50 /4732 / alldays,
11:40 / 12;50 / ba4752 / alldays,
13:40 / 19:50 / ba4S22 / [mo,tu,we,th,fr] ]).
timetable) london, ljubljana,
[ 13:20/ 16:20 / jp212 / (mo, tu,we,f,SU]f 16:30 / 19:30 / 473 / [mo, we,th,sa] ]).
timetable! london, Zurich,
[ 9:10 / 11:45 / ba614 / alldays, 14:45 / 17:20 / sr805 / alldays ]).
timetable I london, milan,
[ 8:30 / 11:20 /baElO / alldays, 11:00 / 13:50 / az459 / alldays ]).
4. :
timetable! ljubljana, Zurich,
[ 11:30 / 12:40 / jp322 / [tu,th]!).
timetable) ljubljana, london,
[ 11:10 / 12:20 / jp211 / [mo,tu,we,fr,su], 20:30 / 21:30 / ba4"72 / Imo, we, th, sa] ] >.
timetable! milan, london,
[ 9:10 / 10:00 / az458 / alldays, 12:20 / 13:10 / ba51.1 / alldays ]).
timetable! milan, Zurich,
[ 9:25 10:15 / sr621 / alldays, 12:45 / 13:35 / Sr623 / alldays ]).
timetable! Zurich, ljubljana,
[ 13:30 / 14:40 / jp323 / (tll,th] ]).
timetablei Zurich, london,
[ 5:00 / 5:40 / ba6l3 / [mo,tu,we,th,fr,sa], 16:10 / 16:55 / sr8Q6 / [mo, tu,we, th, t r, su] ]).
timetable! Zurich, milan,
[7:55 / 8:45 /sr620 / alldays]).
query3 (Cityl,City2,City3,FN1,FN2,FN3,FN41:-
permutation! [milan,ljubljana,Zurich], [Cityl,City2,City3]),
flight! london, Cityl, tu, FN1, Depl, Arrl}, flight! Cityl, City2, we, FN2, Dep2, Arr2}, flight! City2, City3, th, FN3, Dep3, Arr3), flight: City3, london, ft, FN4, Dep4, Arr4).
cone! [), L, L),
cone([X|LI],L2, [X|L3]):-(L1,L2,L3).
permutation! [], []),
permutation! L, [X I P] I:-del(x, l, LI), permutation! Llr P).
del (X, [X|L], L].
del! X, [Y|L], [Y|L1]):-del! X, L, LI).
, , , . , . , .
,
?
1- flight! ljubljana, london, Day, _, DeptHour:_, _), DeptHour >= 18. Day = mo; Day - we;
?
?- route! ljubljana, edinburgh, th, R).
P, = [ ljubljana / zurich / jp322 / 11:30, zuricb / london / sr806 /