Sunteți pe pagina 1din 3

Universitatea de Stat din Moldova

Lucrare de laborator
9, 10
Inteligenta artificiala
PROLOG

A elaborat:
A verificat: _______________

Chisinau 2012
Inteligena artificial. Lucrare de laborator Nr.9.
Pionii
Pe o tabl orizontal cu 7 ptrate iniial sunt aliniai trei pioni albi i trei pioni negri cu un ptrat
liber ntre ei:
A
A
A
N
N
N
S se gseasc consecutivitatea de transformri a configuraiei iniiale pentru a ajunge la
configuraia final n care pionii albi sunt n dreapta, iar cei negri n stnga desprii de un
ptrat liber:
N
N
N
A
A
A
utiliznd urmtoarele patru reguli:
- un pion negru poate fi deplasat cu un ptrat spre stnga, dac ptratul e liber, de exemplu
A
N
A
N
N
A

A
N
A
N
N
A
- un pion negru poate sri peste un pion adiacent alb spre stnga, dac ptratul e liber, de
exemplu
A
N
A
N
N
A

A
N
N
A
N
A
- un pion alb poate fi deplasat cu un ptrat spre dreapta, dac ptratul e liber, de exemplu
A
N
A
N
N
A

A
N
A
N
N
A
- un pion alb poate sri peste un pion adiacent negru spre dreapta, dac ptratul e liber, de
exemplu
A
A
N
N
N
A

A
N
A
N
N
A
domains
s=symbol
ls=s*
predicates
problema
pioni(ls)
stare(ls,ls)
clauses

problema:-pioni([a,a,a,o,n,n,n]).
pioni([n,n,n,o,a,a,a]):write("[n,n,n,o,a,a,a]\n").
pioni(L):-stare(L,Rez),pioni(Rez),write(Rez,"\n").
stare([o,n|T],[n,o|T]).
stare([o,a,n|T],[n,a,o|T]).
stare([a,o|T],[o,a|T]).
stare([a,n,o|T],[o,n,a|T]).
stare([H|T],Rez):-stare(T,Rez1),Rez=[H|Rez1].

Inteligena artificial. Lucrare de laborator Nr.10.


Bidoanele cu ap.
Fie date trei bidoane unul de 10 litri, unul de 7 litri i unul de 3 litri. Iniial cel de 10 litri este
plin, iar celelalte (de 7 litri i de 3 litri) sunt dearte. S se gseasc o secven de aciuni care
las cte 5 litri de ap n bidoanele de 10 litri i de 7 litri. Aciunile posibile care pot modifica
starea bidoanelor sunt: apa poate fi turnat dintr-un bidon n altul, pn cnd primul se golete
sau al doilea se umple.
domains
i=integer
predicates
rezolva
bidoane(i,i,i)
stare(i,i,i,i,i,i)
clauses
rezolva:-bidoane(10,0,0).
bidoane(5,5,X):-write(5,"\t",5,"\t",X,"\n").
bidoane(X,Y,Z):-stare(X,Y,Z,X1,Y1,Z1),bidoane(X1,Y1,Z1),write(X,"\t",Y,"\t",Z,"\n").
stare(X,Y,Z,X1,Y1,Z1):-X>=1,Z=0,X1=X-3,Y1=Y,Z1=Z+3.
stare(X,Y,Z,X1,Y1,Z1):-Z>0,Y<6,X1=X,Y1=Y+Z,Z1=10-(X1+Y1).
stare(X,Y,Z,X1,Y1,Z1):-Y=6,Z>0,X1=X,Y1=Y+(Z-2),Z1=10-(X1+Y1).
stare(X,Y,Z,X1,Y1,Z1):-X<3,Y=7,Z>0,X1=X+Y,Y1=0,Z1=Z.

S-ar putea să vă placă și