Advertisement
Guest User

Prolog coding

a guest
Apr 11th, 2013
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.62 KB | None | 0 0
  1. %flight(ORIGIN,DEST,DEPARTTIME,ARRIVALTIME,FLIGHTNO, DAY).
  2. flight(singapore,london , 2310, 0520, ba58,1).
  3. flight(singapore,london , 2310, 0520, ba58,3).
  4. flight(singapore,london , 2310, 0520, ba58,4).
  5. flight(singapore,london , 2310, 0520, ba58,6).
  6. flight(london,singapore , 1000, 1610, ba24,1).
  7. flight(london,singapore , 1000, 1610, ba24,3).
  8. flight(london,singapore , 1000, 1610, ba24,4).
  9. flight(london,singapore , 1000, 1610, ba24,6).
  10. flight(london,edinburgh , 0940, 1050, ba4732,1).
  11. flight(london,edinburgh , 0940, 1050, ba4732,2).
  12. flight(london,edinburgh , 0940, 1050, ba4732,3).
  13. flight(london,edinburgh , 0940, 1050, ba4732,4).
  14. flight(london,edinburgh , 0940, 1050, ba4732,5).
  15. flight(london,edinburgh , 0940, 1050, ba4732,6).
  16. flight(london,edinburgh , 0940, 1050, ba4732,7).
  17. flight(london,edinburgh , 1140, 1250, ba4735,1).
  18. flight(london,edinburgh , 1140, 1250, ba4735,2).
  19. flight(london,edinburgh , 1140, 1250, ba4735,3).
  20. flight(london,edinburgh , 1140, 1250, ba4735,4).
  21. flight(london,edinburgh , 1140, 1250, ba4735,5).
  22. flight(london,edinburgh , 1140, 1250, ba4735,6).
  23. flight(london,edinburgh , 1140, 1250, ba4735,7).
  24. flight(london,edinburgh , 1840, 1950, ba4822,1).
  25. flight(london,edinburgh , 1840, 1950, ba4822,2).
  26. flight(london,edinburgh , 1840, 1950, ba4822,3).
  27. flight(london,edinburgh , 1840, 1950, ba4822,4).
  28. flight(london,edinburgh , 1840, 1950, ba4822,5).
  29. flight(edinburgh,london , 0830, 0940, ba4733 ,1).
  30. flight(edinburgh,london , 0830, 0940, ba4733,2).
  31. flight(edinburgh,london , 0830, 0940, ba4733,3).
  32. flight(edinburgh,london , 0830, 0940, ba4733,4).
  33. flight(edinburgh,london , 0830, 0940, ba4733,5).
  34. flight(edinburgh,london , 0830, 0940, ba4733,6).
  35. flight(edinburgh,london , 0830, 0940, ba4733,7).
  36. flight(edinburgh,london , 1340, 1450, ba4736,1).
  37. flight(edinburgh,london , 1340, 1450, ba4736,2).
  38. flight(edinburgh,london , 1340, 1450, ba4736,3).
  39. flight(edinburgh,london , 1340, 1450, ba4736,4).
  40. flight(edinburgh,london , 1340, 1450, ba4736,5).
  41. flight(edinburgh,london , 1340, 1450, ba4736,6).
  42. flight(edinburgh,london , 1340, 1450, ba4736,7).
  43. flight(edinburgh,london , 1940, 2050, ba4833,1).
  44. flight(edinburgh,london , 1940, 2050, ba4833,2).
  45. flight(edinburgh,london , 1940, 2050, ba4833,3).
  46. flight(edinburgh,london , 1940, 2050, ba4833,4).
  47. flight(edinburgh,london , 1940, 2050, ba4833,5).
  48. flight(edinburgh,london , 1940, 2050, ba4833,6).
  49. flight(london,greece , 0910, 1245, ba614,1).
  50. flight(london,greece , 0910, 1245, ba614,2).
  51. flight(london,greece , 0910, 1245, ba614,3).
  52. flight(london,greece , 0910, 1245, ba614,4).
  53. flight(london,greece , 0910, 1245, ba614,5).
  54. flight(london,greece , 0910, 1245, ba614,6).
  55. flight(london,greece , 0910, 1245, ba614,7).
  56. flight(london,greece , 1445, 1820, sr805,1).
  57. flight(london,greece , 1445, 1820, sr805,2).
  58. flight(london,greece , 1445, 1820, sr805,3).
  59. flight(london,greece , 1445, 1820, sr805,4).
  60. flight(london,greece , 1445, 1820, sr805,5).
  61. flight(london,greece , 1445, 1820, sr805,6).
  62. flight(london,greece , 1445, 1820, sr805,7).
  63. flight(greece,london , 0900, 1140, ba613,1).
  64. flight(greece,london , 0900, 1140, ba613,2).
  65. flight(greece,london , 0900, 1140, ba613,3).
  66. flight(greece,london , 0900, 1140, ba613,4).
  67. flight(greece,london , 0900, 1140, ba613,5).
  68. flight(greece,london , 0900, 1140, ba613,6).
  69. flight(greece,london , 1610, 1855, sr806,1).
  70. flight(greece,london , 1610, 1855, sr806,2).
  71. flight(greece,london , 1610, 1855, sr806,3).
  72. flight(greece,london , 1610, 1855, sr806,4).
  73. flight(greece,london , 1610, 1855, sr806,5).
  74. flight(greece,london , 1610, 1855, sr806,7).
  75. flight(london,paris , 0830, 1030, ba510,1).
  76. flight(london,paris , 0830, 1030, ba510,2).
  77. flight(london,paris , 0830, 1030, ba510,3).
  78. flight(london,paris , 0830, 1030, ba510,4).
  79. flight(london,paris , 0830, 1030, ba510,5).
  80. flight(london,paris , 0830, 1030, ba510,6).
  81. flight(london,paris , 0830, 1030, ba510,7).
  82. flight(london,paris , 1310, 1510, az459,1).
  83. flight(london,paris , 1310, 1510, az459,2).
  84. flight(london,paris , 1310, 1510, az459,3).
  85. flight(london,paris , 1310, 1510, az459,4).
  86. flight(london,paris , 1310, 1510, az459,5).
  87. flight(london,paris , 1310, 1510, az459,6).
  88. flight(london,paris , 1310, 1510, az459,7).
  89. flight(paris,london , 0910, 1020, ba511,1).
  90. flight(paris,london , 0910, 1020, ba511,2).
  91. flight(paris,london , 0910, 1020, ba511,3).
  92. flight(paris,london , 0910, 1020, ba511,4).
  93. flight(paris,london , 0910, 1020, ba511,5).
  94. flight(paris,london , 0910, 1020, ba511,6).
  95. flight(paris,london , 0910, 1020, ba511,7).
  96. flight(paris,london , 1220, 1330, az460,1).
  97. flight(paris,london , 1220, 1330, az460,2).
  98. flight(paris,london , 1220, 1330, az460,3).
  99. flight(paris,london , 1220, 1330, az460,4).
  100. flight(paris,london , 1220, 1330, az460,5).
  101. flight(paris,london , 1220, 1330, az460,6).
  102. flight(paris,london , 1220, 1330, az460,7).
  103. flight(paris,rome , 1130, 1240, jp322,2).
  104. flight(paris,rome , 1130, 1240, jp322,3).
  105. flight(paris,rome , 1130, 1240, jp322,4).
  106. flight(rome,paris , 1330, 1440, jp323,2).
  107. flight(rome,paris , 1330, 1440, jp323,3).
  108. flight(rome,paris , 1330, 1440, jp323,4).
  109. flight(rome,greece , 1440, 1630, fs619,1).
  110. flight(rome,greece , 1440, 1630, fs619,3).
  111. flight(rome,greece , 1440, 1630, fs619,4).
  112. flight(rome,greece , 1440, 1630, fs619,5).
  113. flight(greece,rome , 1100, 1310, fs620,1).
  114. flight(greece,rome , 1100, 1310, fs620,3).
  115. flight(greece,rome , 1100, 1310, fs620,4).
  116. flight(greece,rome , 1100, 1310, fs620,5).
  117.  
  118.  
  119. % Start menu
  120. start :- repeat,nl,nl,
  121. nl, write('============================='),
  122. nl, write(' FLIGHT ENQUIRY SYSTEM '),
  123. nl, write('============================='),
  124. nl, write('1) Preferred Direct'),
  125. nl, write('2) Preferred Fastest'),
  126. nl, write('3) Quit'),
  127. nl, nl, read(Option),
  128. option(Option).
  129.  
  130.  
  131. % option 1 will terminate the program
  132. option(1) :- nl, write('Please Day of Flight in Numberic format (1 for Mon, 7 for Sun: '),
  133. read(Day),
  134. nl, write('Origin Country: '),
  135. read(Origin), checkOCountry(Origin, 0), nl, write('Dest Country: '),
  136. read(Dest), checkDCountry(Dest, 1)->
  137. plane(Board,0),
  138. plane(Arrive,1),
  139. flightInfo(Board, Arrive,Start,End,FlightNo,Day),
  140. calculateTime(Start,End, DH,DM),
  141. nl,write('Flight No: '),write(FlightNo),
  142. %checkDH(DurH,DurM),
  143. nl,write('Flight Dur: '),write(DH),write(':'),write(DM),
  144. retractall(plane(X,Y)),!,fail.
  145.  
  146. % option 3 will terminate the program
  147. option(3) :- nl, write('Program has terminated!').
  148.  
  149.  
  150. % check if a country is valid
  151. checkOCountry(OCountry, Indicator) :- flight(OCountry,_,_,_,_,_) -> asserta(plane(OCountry, Indicator)); nl,write('Origin Country is invalid! Enter a valid Country: '), read(NewCountry),checkOCountry(NewCountry, Indicator).
  152. checkDCountry(DCountry, Indicator) :- flight(_,DCountry,_,_,_,_) -> asserta(plane(DCountry, Indicator)); nl,write('Destination Country is invalid! Enter a valid Country: '), read(NewCountry),checkDCountry(NewCountry, Indicator).
  153.  
  154. flightInfo(Origin, Dest,Start,End, FlightNo,Day) :- flight(Origin, Dest,Start,End,FlightNo,Day).
  155.  
  156.  
  157. calculateTime(Start, End, DH,DM):- OriMin is mod(Start, 100), DestMin is mod(End, 100), OriHour is (Start - OriMin)/100, DestHour is (End - DestMin)/100,
  158. Y is DestHour - OriHour, X is DestMin - OriMin,
  159. (Y < 0 -> checkDH(OriHour, OriMin, DestHour,DestMin, DH, DM);
  160. X < 0 -> checkDM(Y,X, DM, DH);
  161. DM is X, DH is Y
  162. ).
  163.  
  164. checkDM(Y, X , DM, DH):- DM is X + 60, DH is Y-1.
  165. checkDH(OriHour, OriMin, DestHour,DestMin, DH, DM) :- THour1 is ((24-OriHour)+DestHour), TMin1 is 0-OriMin,
  166. (TMin1< 0 -> THour is THour1 -1, TMin is ((60+ TMin1)+DestMin);
  167. THour is THour1, TMin is TMin1
  168. ),
  169. (TMin > 60 -> DH is (THour + (TMin//60)), DM is mod(TMin, 60) ;
  170. DH is THour, DM is TMin
  171. ).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement