Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. :- dynamic xpositive/2.
  2. :- dynamic xnegative/2.
  3.  
  4. vehicle_is("Ferrari LaFerrari") :-
  5. it_is(car),
  6. it_is(sportcar),
  7. positive(is, expensive).
  8.  
  9. vehicle_is("Toyota GT86") :-
  10. it_is(car),
  11. it_is(sportcar),
  12. negative(is, expensive).
  13.  
  14. vehicle_is("Aston Martin Cygnet") :-
  15. it_is(car),
  16. it_is(citycar),
  17. positive(is, expensive).
  18.  
  19. vehicle_is("Toyota Yaris") :-
  20. it_is(car),
  21. it_is(citycar),
  22. negative(is, expensive).
  23.  
  24. vehicle_is("Boeing 777") :-
  25. it_is(plane),
  26. it_is(passanger_plane),
  27. positive(is, american),
  28. negative(is, netherland).
  29.  
  30. vehicle_is("Airbus A380") :-
  31. it_is(plane),
  32. it_is(passenger_plane),
  33. positive(is, netherland),
  34. negative(is, american).
  35.  
  36. vehicle_is("Paraglider") :-
  37. it_is(plane),
  38. it_is(glider),
  39. positive(seat, harness),
  40. negative(seat, seat).
  41.  
  42. vehicle_is("Sailplane") :-
  43. it_is(plane),
  44. it_is(glider),
  45. negative(seat, harness),
  46. positive(seat, seat).
  47.  
  48. vehicle_is("Catamaran") :-
  49. it_is(ship),
  50. it_is(yacht),
  51. positive(has, one_mast),
  52. positive(has, two_bodies),
  53. negative(has, one_body),
  54. negative(has, square_rig),
  55. positive(has, triangle_rig).
  56.  
  57. vehicle_is("Brig") :-
  58. it_is(ship),
  59. it_is(yacht),
  60. negative(has, one_mast),
  61. positive(has, two_masts),
  62. negative(has, two_bodies),
  63. positive(has, one_body),
  64. positive(has, square_rig),
  65. negative(has, triangle_rig).
  66.  
  67. vehicle_is("Scooter") :-
  68. it_is(ship),
  69. it_is(motorboat),
  70. positive(is, fast).
  71.  
  72. vehicle_is("Barge") :-
  73. it_is(ship),
  74. it_is(motorboat),
  75. negative(is, fast).
  76.  
  77. % Klasy glowne
  78.  
  79. it_is(car) :-
  80. positive(does, drive),
  81. positive(has, wheels),
  82. negative(has, wings),
  83. negative(does, fly),
  84. negative(does, swim),
  85. positive(has, engine).
  86.  
  87. it_is(plane) :-
  88. positive(does, fly),
  89. positive(has, wings),
  90. positive(has, wheels),
  91. positive(does, drive),
  92. negative(does, swim).
  93.  
  94. it_is(ship) :-
  95. positive(does, swim),
  96. negative(does, drive),
  97. negative(does, fly),
  98. negative(has, wings),
  99. negative(has, wheels).
  100.  
  101. % Podklasy
  102.  
  103. it_is(sportcar) :-
  104. positive(is, fast).
  105. it_is(citycar) :-
  106. negative(is, fast).
  107.  
  108. it_is(passenger_plane) :-
  109. positive(has, engine),
  110. positive(has, "many places").
  111. it_is(glider) :-
  112. negative(has, engine),
  113. negative(has, "many places"),
  114. positive(is, fast).
  115.  
  116. it_is(yacht) :-
  117. negative(has, engine).
  118. it_is(motorboat) :-
  119. positive(has, engine).
  120.  
  121. %szukanie potwierdzenia cechy obiektu w dynamicznej bazie
  122. positive(X,Y) :-
  123. xpositive(X,Y),!.
  124. positive(X,Y) :-
  125. not(xnegative(X,Y)) , ask(X,Y,yes).
  126. negative(X,Y) :-
  127. xnegative(X,Y),!.
  128. negative(X,Y) :-
  129. not(xpositive(X,Y)) , ask(X,Y,no).
  130.  
  131. %zadawanie pytań użytkownikowi
  132. ask(X,Y,yes) :-
  133. write(X), write(' it '),write(Y), write('\n'),
  134. read(Reply),
  135. sub_string(Reply,0,1,_,'y'),!,
  136. remember(X,Y,yes).
  137. ask(X,Y,no) :-
  138. write(X), write(' it '),write(Y), write('\n'),
  139. read(Reply),
  140. sub_string(Reply,0,1,_, 'n'),!,
  141. remember(X,Y,no).
  142.  
  143. %zapamiętanie odpowiedzi w dynamicznej bazie
  144. remember(X,Y,yes) :-
  145. asserta(xpositive(X,Y)).
  146. remember(X,Y,no) :-
  147. asserta(xnegative(X,Y)).
  148.  
  149. %uruchomienie programu
  150. run :-
  151. vehicle_is(X),!,
  152. write('\nYour vehicle may be a(n) '),write(X),
  153. nl,nl,clear_facts.
  154. run :-
  155. write('\nUnable to determine what'),
  156. write('your vehicle is.\n\n'),clear_facts.
  157. %wyczyszczenie zawartości dynamicznej bazy
  158. clear_facts :-
  159. retract(xpositive(_,_)),fail.
  160. clear_facts :-
  161. retract(xnegative(_,_)),fail.
  162. clear_facts :-
  163. write('\n\nPlease press the space bar to exit\n').
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement