Documente Academic
Documente Profesional
Documente Cultură
Intreb
ari din curs
Ce ntelegeti prin domeniu inductiv? Cum definim o lista?
Cum definim recursia n Prolog? Dati 2 exemple!
Scrieti predicatul pentru concatenarea a doua liste concatenare(+L1, +L2, ?Rez)
Scrieti predicatul pentru calculul factorialului unui numar f actorial(+N, ?F )
Concepte
Operatii pe liste
Acumulatori
Diferenta dintre programe cu acumulatori si fara
Liste deschise si liste cu diferente
Acumulatori
Se descompune lista p
an
a se ajunge la conditia limita, atunci se obtine solutia
care este retinut
a n acumulator, apoi are loc procesul invers descompunerii
listei, iar rezultatul este solutia care a fost retinuta n acumulator.
1) Inversa listei:
a) f
ar
a acumulatori:
inversa ( [ ] , [ ] ) .
i n v e r s a ( [ H|T ] ,X): i n v e r s a (T, T1 ) , c o n c a t e n a r e ( T1 , [ H] ,X ) .
Explicati ce se nt
ampl
a la interogarea (utilizati trace)
?- inversa([1,2,3],X).
b) cu acumulatori:
i n v e r s a 2 (L ,R): i n v e r s a A c c (L , [ ] , R ) .
/ i n v o c a r e a v a r i a n t e i cu a c u m u l a t o r i /
i n v e r s a A c c ( [ ] , R,R ) .
/ c o n d i t i e l a l i m i t a /
i n v e r s a A c c ( [ H|T ] , A,R):
i n v e r s a A c c (T , [ H|A] ,R ) .
/ a p e l r e c u r s i v cu a c u m u l a t o r i /
a) Exemplu de list
a deschis
a:
6)
? L = [ 1 , 2 , 3 |X] ,X=[ t , g , h ] .
/ gaura d i n l i s t a L s e umple
i n t r un s i n g u r pas cu X /
L = [1 , 2 , 3 , t , g , h] ,
X=[ t , g , h ]
? L2=[ s , d , a | T ] , T=[ cap | T2 ] .
/ gaura s e p o a t e umple s i cu
o l i s t a d e s c h i s a /
L2 = [ s , d , a , cap | T2 ] ,
T=[ cap | T2 ]
7)
c o n c a t l i s t d e s c h i s e ( L1 , G, L2): G=L2 .
? X=[a , b , c |G] , c o n c a t l i s t d e s c h i s e (X, G, [ d , e , f ] ) .
X = [a, b, c , d, e , f ]
b) Liste cu diferente se reprezinta ca diferenta dintre lista deschisa si gaura
sa
Exemplu: [1, 2, 3|G] G
8) Introduceti regula:
c o n c a t e n a r e D e s c h i s e (LDG, L2): G=L2 .
Incercati pentru:
? X=[m, n , p |G]G, c o n c a t e n a r e D e s c h i s e (X, [ 1 , 2 , 3 ] ) .
Scrieti regula astfel nc
at s
a se obtina X = [m, n, p, 1, 2, 3].
9)Predicatul concatenare/3:
c o n c a t e n a r e 3 (LD1G1 , LD2G2 , LD1G2): G1=LD2 .
? X=[a , f |G]G, c o n c a t e n a r e 3 (X , [ p , l | G2]G2 , Raspuns ) .
? X=[a , f |G]G, c o n c a t e n a r e 3 (X , [ p , l | G2]G2 , Raspuns [ ] ) .
10) Testati si pentru predicatul concatenare33.
c o n c a t e n a r e 3 3 (LD1G1 , G1G2 , LD1G2): G1=LD2 .
? X=[a , f |G]G, c o n c a t e n a r e 3 3 (X , [ p , l | G2]G2 , Raspuns ) .
? X=[a , f |G]G, c o n c a t e n a r e 3 3 (X , [ p , l | G2]G2 , Raspuns [ ] ) .
Tema: