Professional Documents
Culture Documents
PLPF Probl Prolog
PLPF Probl Prolog
Sectiuni
domains declara lintele
se var
i
Nume-string
Presume-string
Lista = integer
*
predicates - se declara
&
predicatele ,
ce contin
depinde de tipul de problema
clauses -se defines predicatele
fapte predicate intotdeauna
=
odev
.
-
= cr :
goal e
pt .
scop intern
Tipuri de problema
·
Liste :
lista-integer *
domains
Hista-integer
*
Elem-integer
predicates
membe /Elem ,
Lista) sau
/integer , Lista) Far Elem in domains
afisare (Lista)
clauses
Lapto-member
~
, dacesteprimule
e very e
autom in
[ afisare
.
-
afirare /(3) : -1 Estei
-
..
regula a
-
,
. ·
>
- ur elem
,
afisare , membr al listei , concataz liste ,
elimdin lista
domains
Lista-integer *
Elem-integer
predicates ↓
wr .
elem (Lista
, integer/
afisare (Lista)
concert (Lista , Lista Lista) ,
Clim
(integer Lista , , Lista) elimina elem din lista si amane vestrel
Lista) listen
member
(integer ,
clauses
we dam ((3 0) .
~_ elem ((-1<] N) : -
m -
elem ( N1) ,
N = N1 + 1 ·
, ,
member (X ,
[X1 _
]) .
dac este primul elem
member (X -12) : -
listei
afirare /(3) : -1 ..
, ,
afisane/7) .
concat (11 ,
(3 , 4).
concat([) 12 (2) , ,
·
concat((XIR] , (2 (X(R1]) : =
concat(R L R1)
, ,
·
,
elim (X &
(XIR] ,
R) .
elim(X ,
R
,
RI) ·
>
-
palindrom include inversare
imv(Lista Listal ,
palindrom (Listal
inv(11 ,
R) : -
inversare(<1 , (3 , R) .
inversare((] , 41
,
(1) ·
inversee ([X/L] ,
(2
,
R) : -
Inversee (C ,
(X 122] R) ,
.
-inv( , )
palindrom() : ·
>
-
interclasare
maimicsanegal (X Y) ,
: -XL =
Y .
(X X)
maimicsaregal ,
.
intends (1) , L , 2) ·
interes /L , [] L) ·
,
intends ([H1lT1] , [H2 , T2] CHIIT])
Maimicsaregal CH, e
: -
I
,
interd (T1 ,
CH21T2
interes (CH1lT1] , (H2pT2) , CH2IT]) : - H1 > H2
,
intends)[Hilt1] , T2, T) .
.
pt a verifica apartementa
pt .
a swie into-un fisier sou baza de date
S
· Fisiere
7
file f = > name
Fiser INF) name .
Fis ,
dat s nume simbolic fis
INSF)
- weave si adargare date (fis Studenti) (scop intern) .
domains
file f =
predicates
creare
citive - Sir
(string)
Start
clauses
creave : -write ("Date stud : ") , openwrite (f ,
"studenti dat &
witedevice (f) ,
readhe(s) ,
citire-sin(s) ,
write device(sweet ,
close file (f) .
!.
citive-sir (5) : -
write(s) Needle/s1) ,
citive-sir (S1)
,
.
start : -creare .
>
-
afisare contnut
afisare
citire-linie
>
-
predicate predefinite
openwrite (NF losefile (NF)
,
NSF) , open
read
, openappend &
deschide fis pt Inchide fis.
.
Dnieve citire
adargone
readdevice (NF) ,
writedevice
,
laf
redirecteaz op. de wine snieve daca am
ajune
la 17 fis
in
Fis
·
Baza de date dinamica
>
-
predicate predefinite :
numeBD) inceputul
asserta ( < fapt ,
<
coanga la BD
paz cuenta
asset 1 -n -1 im
assert - & la sf .
3D
retract) - stege fapt din BA
-a
un
>
-
def .
BD
adangane de fapte la st BA
predicatean
creare
causes
reave : -write ("Date stud ") :
,
write /"Nume") readle (Nume)
, ,
,
=
,
creare
,
.
:
,
Start : -create .
Definite :
Prolog-lb descriptiv .
bazat pe
logica ou
pred ,
deod . I
permite existente
nu de
agumente fe logica =
.
cone descrierea relativlor
&
intre obietele problemei
Op logic
.
: SAU ; Sio NOT not))
complexe : liste
Sg .
cur .
(
Continuare linte
>
- minim bista (maxim este invers)
domains
lista-integer *
predicates
minim (lista ,
integer
clauses
minim([X Y] , X] : X Y , . ,
=
=
minim([X , Y3 , y3 : = x > Y , %.
minim([H/X] Y1 : minim (X Y) -
,
Hx =
Y !.
, ,
Probleme simple
>
-
factorial
predicates
fact (integer integer ,
clauses
fact (0 ,
11 .
, ,
cmmde
>
si comma
-
predicates
modulo /in are
,integer iinte
ger
,
mude (in nteger)
-eger ,
ommuc ( in
-eger ,
Y wh
-eger , nteger)
i
clauses
modula (x 4 , ,
2) : -
X < .
Y
modula (X Y z) ,
: -
X) =
Y
,
X1 = X- Y modula (X1 Y , z)
, , , .
mmde (X , 0 , X) .
ammdc(X Y C) : -
modulo (X Y 2) crumde(y z C).
, , , ,
, , ,
crummc(X Y c) : - aude (X , Y A) ,
C = (x Y)/A
*
.
, , ,