:-op(50,xfy,:). redVoznje(edinburgh,london, [9:40/10:50/ba4733/svakidan, 13:40/14:50/ba4753/svakidan, 19:40/20:50/ba4833/[pon,uto,sri,cet,pet,ned]]). redVoznje(london,edinburgh, [9:40/10:50/ba4732/svakidan, 11:40/12:50/ba4752/svakidan, 18:40/19:50/ba4822/[pon,uto,sri,cet,pet]]). redVoznje(london,ljubljana, [13:20/16:20/sa201/[pet], 13:20/16:20/sa213/[ned]]). redVoznje(ljubljana,london, [11:10/12:20/sa200/[pet], 11:25/12:20/sa212/[ned]]). redVoznje(london,zurich, [9:10/11:45/ba510/svakidan, 14:45/17:20/sr459/svakidan]). redVoznje(zurich,london, [9:00/9:40/ba613/[pon,uto,sri,cet,pet,sub], 16:10/16:55/sr806/[pon,uto,sri,cet,pet,ned]]). redVoznje(london,milano, [8:30/11:20/ba510/svakidan, 11:00/13:50/az459/svakidan]). redVoznje(milano,london, [9:10/10:00/az458/svakidan, 12:20/13:10/ba511/svakidan]). redVoznje(ljubljana,zurich, [11:30/12:40/sa322/[uto,cet]]). redVoznje(zurich,ljubljana, [13:30/14:40/sa323/[uto,cet]]). redVoznje(zurich,milano, [7:55/8:45/sr620/svakidan]). redVoznje(milano,zurich, [9:25/10:15/sr621/svakidan, 12:45/13:35/sr623/svakidan]). let(Grad1,Grad2,Dan,Let,Polazak,Dolazak):- redVoznje(Grad1,Grad2,ListaLetova), clan(Polazak/Dolazak/Let/ListaDana,ListaLetova), danLeta(Dan,ListaDana). danLeta(Dan,svakidan):- clan(Dan,[pon,uto,sri,cet,pet,sub,ned]). danLeta(Dan,Lista):- clan(Dan,Lista). putovanje(Grad1,Grad2,Dan,Letovi):- putovanje0(Grad1,Grad2,Dan,0:0,Letovi). %Dolazak1 sadrzi vrijeme dolaska u Grad1; %ono ogranicava broj letova kojima se moze putovati dalje putovanje0(Grad1,Grad2,Dan,Dolazak1,[Grad1-Grad2:Let:Polazak1]):- let(Grad1,Grad2,Dan,Let,Polazak1,_), mogucTransfer(Dolazak1,Polazak1). putovanje0(Grad1,Grad2,Dan,Dolazak1,[Grad1-Grad3:Let1:Polazak1|Ostatak]):- let(Grad1,Grad3,Dan,Let1,Polazak1,Dolazak3), mogucTransfer(Dolazak1,Polazak1), putovanje0(Grad3,Grad2,Dan,Dolazak3,Ostatak). vrijemePolaska([_-_:_:Polazak|_],Polazak). mogucTransfer(Sat1:Min1,Sat2:Min2):- 60*(Sat2-Sat1)+Min2-Min1>=40. clan(X,[X|_]). clan(X,[_|Ostali]):- clan(X,Ostali).