prolog: el sistema - gpd.sip.ucm.esgpd.sip.ucm.es/jaime/docencia/pl/bloque1.pdf · [x+5, s(s(c))]...
TRANSCRIPT
P rol og: e l si stem a
D i sp on i b l e en : http: / /www. s wi - prolog. org/ p a ra d i sti n ta sp l a ta form a s.
P osi b i l i d a d es d e i n terp reta ci on / com p i l a c i on .
H a b i tu a l m en te u ti l i zam os el i n ter p rete. Con sol a con :
Welc ome to SWI -Prolog ( Multi -threaded, Vers i on 5 . 6 . 1 4)
. . .
For help, us e ? - help( Topi c ) . or ? - apropos ( Word) . ? -
D esd e este prom p t se l a n za n ob jeti vos term i n a dos en .
P a ra sa l i r
? - halt .
7 / 27
U n program a . P a reja s d e b a i l e
Sa b i en do l os i n vi ta dos q u e ven d r a n a u n a fiesta , d eterm i n a r p osi b l esp a reja s d e b a i l e ch i co/ch i ca .
E scr i b i m os en u n a rch i vo d e texto ’ p a reja s. p l ’ :
chi c a( ros a) .
c hi c a( laura) .
c hi c a( ana) .
c hi c o ( pedro ) .
c hi c o ( j uan) .
c hi c o ( pablo ) .
pare j a( X, Y) : - c hi c o ( X) , c hi c a( Y) .
G u a rd am os el a rch i vo y l o con su l tam os ( ca rgam os) d esd e eli n ter p rete:
? - [ parej as ] .
o b i en
? - c ons ult( parej as ) . ? - c ons ult( ’ pare j as . pl ’ ) .
? - [ ’ < path> /parej as . pl ’ ] .
8 / 27
Resol vi en do ob jeti vos
Qu e resp u esta ( s) d eb em os ob ten ter p a ra l os si gu i en tes ob jeti vos:
? - pare j a( X, Y) .
? - pare j a( X, ana) .
? - pare j a( X, j uan) .
? - pare j a( lui s , Y) .
D esa r rol l a r e l a r b ol d e b u sq u ed a p a ra
? - pare j a( X, Y) .
9 / 27
Op era ci on es con n u m eros n a tu ra l es
H em os d efin i d o l a su m a p a ra n a tu ra l es represen ta dos con c ( cero)y s ( su cesor ) . D efin i r l a s si gu i en tes op era ci on es:
m u l ti p l i ca c i on
r esta (X − Y d eb e ser 0 si X < Y ) .
m en or (X es m en or q u e Y)
p oten ci a XY
d i vi si on en tera
fa ctor i a l
ca l cu l a r e l N -esi m o n u m ero d e l a ser i e d e fib on a cci
1 0 / 27
E stru ctu ra s d e d a tos. L i sta s
Se represen ta n u ti l i za n do term i n os com pu estos f ( t1 , . . . , tn ) ( p a ral os n a tu ra l es ya h em os u ti l i za d o u n a estr u ctu ra d e d a tos s( ) ) .
L a s l i sta s son u n a d e l a s estr u tu r a s m a s u ti l i za d a s en P rol og. Sonsecu en ci a s fin i ta s ( p ero d e l on gi tu d a rb i tr a r i a ) d e el em en tos. L os
el em en tos se escr i b en en tre corch etes [ y ] y sep a ra dos p or
com a s. E jem p l os:
[ a, b, c ]
[ X+5 , s ( s ( c ) ) ]
[ e l , [ gato ] , [ s obre , [ e l ] , te j ado ] ]
[ ] ( l i sta va ci a )
L a l on gi tu d d e l a l i sta es e l n u m ero d e el em en tos q u e ti en e( [ ] ti en e l on gi tu d 0) .
1 1 / 27
E stru ctu ra s d e d a tos. L i sta s I I
L a n ota ci on d e corch etes es a zu ca r si n ta cti co: P rol og p or d eb a jou ti l i za l os fu n ctores ( s ı m b ol os d e fu n ci on )
[ ] ( l i sta va c ı a , a r i d a d 0) y ’ . ’ ( d e a r i d a d 2) .
E n l os ejem p l os a n ter i ores ten em os:
[ a, b, c ] � . ( a, . ( b, . ( c , [ ] ) ) )
[ X+5 , s ( s ( c ) ) ] � . ( X+5 , . ( s ( s ( c ) ) , [ ] ) )
[ e l , [ gato ] , [ s obre , [ e l ] , te j ado ] ] � . ( e l ,
. ( . ( gato , [ ] ) , . ( . ( s obre , . ( . ( e l , [ ] ) , . ( te j ado ,
[ ] ) ) ) , [ ] ) ) )
( se ve m a s fa c i l en form a a rb orea )
1 2 / 27
E stru ctu ra s d e d a tos. L i sta s I I I
L a n ota ci on con el fu n ctor . es com p l i ca d a . H ay u n a n ota ci on
m a s com od a , r eem p l a za n do ’ . ’ p or e l op era dor i n fi jo |
[ ] si gu e i gu a l
. ( X, Xs ) se escr i b e com o [ X| Xs ]
E sta n ota ci on es u ti l p a r a d efin i r p red i ca dos sobre l i sta s. E s u ti la si m i l a r :
[ X����
cabeza ( elemento )
| Xs����
resto/cola ( lista )
]
P or ejem p l o:
[ a, b, c ] ≡ [ a| [ b| [ c | [ ] ] ] ] ≡ [ a����
cabeza
| [ b, c ]� �� �
resto
]
1 3 / 27
Perten en ci a a u n a l i sta
Qu erem os u n pred i ca do:
esta(X, Ys): := X pertenece a la lista Xs
es ta( X, [ X| Xs ] ) .
e s ta( X, [ Y| Xs ] ) : - e s ta( X, Xs ) .
( N ota : esta esta p red efin i d o en swi -p rol og com o m em b er )
Tam b i en p od em os u ti l i za r va r i a b l es a n on i m a s y escr i b i r :
es ta( X, [ X| ] ) .
e s ta( X, [ | Xs ] ) : - e s ta( X, Xs ) .
E jerc i c i o : u ti l i za n do esta d efin i r e l p red i ca do intersec(X,Xs, Ys): :=Xpertenece a ambas listas Xs e Ys.
P r egu n ta : q u e ob ten em os con el ob jeti vo esta(a , Xs)?
1 4 / 27