Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. location(doorway).
  2. location(window).
  3. location(center).
  4. location(wall).
  5.  
  6. longObject(stick).
  7. object(X) :- longObject(X).
  8.  
  9. object(bananas).
  10.  
  11. climbable(chair).
  12.  
  13. :- discontiguous can/2.
  14. :- discontiguous adds/2.
  15. :- discontiguous deletes/2.
  16.  
  17. % move to locations
  18. % this is done for you
  19. can(move(From, To), [on(monkey, floor), at(monkey, From)]) :-
  20. location(From),
  21. location(To),
  22. To \== From.
  23.  
  24. adds(move(_, To), [at(monkey, To)]).
  25. deletes(move(From, _), [at(monkey, From)]).
  26.  
  27. % carry objects
  28. % < PART: D CODE GOES HERE >
  29. can(pickup(Object, Location), [on(monkey,floor), on(Object, floor), at(Object, Location), at(monkey, Location)]) :-
  30. location(Location),
  31. object(Object).
  32.  
  33. adds(pickup(Object, Location), [has(Object)]).
  34. deletes(pickup(Object, Location), [on(Object, floor), at(Object, Location)]).
  35.  
  36. % push climbables
  37. % < PART: E CODE GOES HERE >
  38. can(push(Climbable, From, To), [on(monkey, floor), on(Climbable, floor), at(monkey, From), at(Climbable, From)]) :-
  39. climbable(Climbable),
  40. location(To),
  41. location(From),
  42. To \== From.
  43.  
  44. adds(push(Climbable, From, To), [at(monkey, To), at(Climbable, To)]).
  45. deletes(push(Climbable, From, To), [at(monkey, From), at(Climbable, From)]).
  46.  
  47. % climb up climbable
  48. % < PART: F CODE GOES HERE >
  49. can(climbUp(Climbable, Location), [on(monkey, floor), on(Climbable, floor), at(monkey, Location), at(Climbable, Location)]) :-
  50. climbable(Climbable),
  51. location(Location).
  52.  
  53. adds(climbUp(Climbable, Location), [on(monkey, Climbable)]).
  54. deletes(climbUp(Climbable, Location), [on(monkey, floor)]).
  55.  
  56. % climb down climbable
  57. % < PART: F CODE GOES HERE >
  58. can(climbDown(Climbable, Location), [on(monkey, Climbable), at(monkey, Location)]) :-
  59. climbable(Climbable),
  60. location(Location).
  61.  
  62. adds(climbDown(Climbable, Location), [on(monkey, floor)]).
  63. deletes(climbDown(Climbable, Location), [on(monkey, Climbable)]).
  64.  
  65.  
  66. % wave stick
  67. % < PART: G CODE GOES HERE >
  68. can(waveStick(Object, Climbable, Location, LongObject), [on(monkey, Climbable), at(monkey, Location), at(Climbable, Location), at(Object, Location), on(Object, ceiling), has(LongObject)]) :-
  69. object(Object),
  70. location(Location),
  71. climbable(Climbable),
  72. longObject(LongObject).
  73.  
  74. adds(waveStick(Object, Climbable, Location, LongObject), [on(Object, floor)]).
  75. deletes(waveStick(Object, Climbable, Location, LongObject), [on(Object, ceiling)]).
  76.  
  77.  
  78. % means ends
  79.  
  80. meansEnds(State, Goals, [], State) :-
  81. goalsMet(State, Goals).
  82.  
  83. meansEnds(State, Goals, Plan, FinalState) :-
  84. append(PrePlan, [Action | PostPlan], Plan),
  85. nextGoal(State, Goals, Goal),
  86. causes(Action, Goal),
  87. can(Action, PreCondition),
  88. meansEnds(State, PreCondition, PrePlan, PreActionMidState),
  89. takeAction(PreActionMidState, Action, PostActionMidState),
  90. meansEnds(PostActionMidState, Goals, PostPlan, FinalState).
  91.  
  92.  
  93. goalsMet(State, []).
  94.  
  95. goalsMet(State, [Goal | OtherGoals]) :-
  96. member(Goal, State),
  97. goalsMet(State, OtherGoals).
  98.  
  99. nextGoal(State, Goals, Goal) :-
  100. member(Goal, Goals),
  101. \+member(Goal, State).
  102.  
  103. causes(Action, Goal) :-
  104. adds(Action, AddedRelations),
  105. member(Goal, AddedRelations).
  106.  
  107.  
  108. takeAction(State, Action, NewState) :-
  109. deletes(Action, RemovedRelations),
  110. subtract(State, RemovedRelations, State1),
  111. !,
  112. adds(Action, AddedRelations),
  113. append(AddedRelations, State1, NewState).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement