Mișcările Maimuței

Enunțul problemei:
Avem o maimuță într-o încăpere. În mijlocul camerei se află o banană atârnată de
tavan. Maimuța vrea să ia banana, dar nu poate ajunge până la ea. În cameră se mai află o
cutie, poziționată în dreptul ferestrei pe care maimuța o poate folosi. Maimuța poate
realiza următoarele acțiuni :
-să meargă pe podea
-să se urce pe cutie
-să împingă cutia
-să ia banana dacă stă pe cutie chiar sub banană
Poate maimuța lua banana?

prolog_logo
Cod Sursa PROLOG

 

%starile
stare(la_usa, pe_podea , la_fereastra , nu_are).
stare(la_mijloc, pe_podea, la_fereastra, nu_are).
stare(la_fereastra, pe_podea, la_fereastra , nu_are).
stare(la_fereastra, pe_cutie, la_fereastra, nu_are).
stare(mijloc, pe_podea, mijloc, nu_are).
stare(mijloc, pe_cutie, mijloc, nu_are).
stare(mijloc, pe_cutie, mijloc, are).
%miscarile
miscare(stare(mijloc, pe_cutie, mijloc, nu_are),
ia,
stare(mijloc, pe_cutie, mijloc , are)).
miscare(stare(P, pe_podea, P, H),
urca,
stare(P, pe_cutie, P, H)).
miscare(stare(P1, pe_podea, P1, H),
impinge,
stare(P2, pe_podea, P2, H)).
miscare(stare(P1,pe_podea,B,H),
merge(P1,P2),
stare(P2,pe_podea,B,H)).
%poate lua
poate_lua(stare(_,_,_,are)).
poate_lua(Stare1):- miscare(Stare1,M,Stare2),poate_lua(Stare2).

Interogări:

| ?- poate_lua(stare(la_usa,pe_podea,la_fereastra,nu_are)).
yes
| ?- poate_lua(stare(la_usa,pe_podea,mijloc,are)).
yes
| ?- poate_lua(stare(la_fereastra,pe_cutie,la_fereastra,nu_are)).
no

Leave a comment