JAKICH OBLICZEē DOKONUJA PONIĩSZE FUNKCJE LISPU?
1. DEFINE (( (COUNT (LAMBDA (E)
(COND ((NULL E) 0) ((ATOM E) 1)
(T (PLUS (COUNT (CAR E)) (COUNT (CDR E))))))) ))
gdzie: PLUS (n,m)=n+m
2.
DEFINE (( (AMONG (LAMBDA (A L) (COND ((NULL L) NIL)
((EQ A (CAR L)) T)
(T (AMONG A (CDR L) )))))))
3. DEFINE (( (INSIDE (LAMBDA (A E) (COND ((ATOM E) (EQ A E))
((INSIDE A (CAR E)) T)
(T (INSIDE A (CDR E)))))) ))
4.
DEFINE (( (COPYN (LAMBDA (X N) (COND ((ZEROP N) NIL)
(T (CONS X (COPYN X (SUB1
N) )))))) ))
gdzie argument N jest liczba naturalną.
gdzie; ZEROP (n) = T jeĞli n=0; NIL w przeciwnym przypadku
SUB1(n) =n-1
5
DEFINE (( (LENGTHS (LAMBDA (L) (COND ((NULL L) 0)
(T (ADD1 (LENGTHS (CDR L))))))) ))
gdzie; ADD1(n) = n+1
6.
DEFINE (( (UNIONS (LAMBDA (X Y) (COND ((NULL X) Y)
((MEMBER (CAR X) Y) (UNIONS (CDR
X) Y))
(T (CONS (CAR X) (UNIONS (CDR X) Y)))))) ))
7
DEFINE (( (INTERSECT (LAMBDA (X Y) (COND ((NULL X) NIL)
((MEMBER (CAR X) Y) (CONS (CAR X)(INTERSECT (CDR X) Y)))
(T (INTERSECT (CDR X) Y))))) ))
funkcja zwraca dlugosc listy E
funkcja sprawdza, czy A nalezy do L
funkcja sprawdza, czy A nalezy do L
funkcja tworzy liste
poprzez zwielokrotnienie X N razy
np: COPYN(A 3)=(A A A)
funkcja zwraca dlugosc listy L
funkcja laczy dwie listy bez powtorzen
funkcja zwraca liste wspolnych
elementów list X i Y
!"#$%&'()*+,#'('-.',/0$!$,#'('12
!")3"'4)*'-.+,56-%78)-'9-+
#:;:<=>,?
-=>@A,B/<2C,<DE<,FG;H=>,BI<J@KL,M=@HFNOM=@HFNPL,#(+5.-.68,56-%78+,!"#$,!)4)7$,56-%78.,
Q'#)*$7R
#:;:<=>,D
-=>@A,B/<2C,<SO<,#(+5.-.68,56-%78+,!"#$,!)4)7$,56-%78.,Q'#)*$7R
#:;:<=>,S
(:<:,K>TU,V>JIVTWP<:,;>X<=@K:,BI<J@K=,7)0),/YZW2,/2
7)0)/[ZW2CW
7)0)/YE?ZW2C\677/\677/7)0)/YZ,\677/W222
#<:K;],7)0),/?ZS2^,7)0),/DZD2^,7)0),/SZ__2
#:;:<=>,_
#<:K;],P:VUN`a,7)0),/,/',Q,72,/7,Q,'22C,b
3;H=>c
/(+5.-+,7)0)/,9'4Q(',/\+0?,\+0D2
/7)-(
//-699,\+0?2,\+0D2
//4+4Q+",/7'",\+0?2,\+0D2
/7)0),/7(",\+0?2,\+0D2,2
/0,/7)-\,/7'",\+0?2
/7)0),/7(",\+0?2,\+0D2,22,2,2
NV:H
/(+5.-+,4+4Q+",/9'4Q(',/',9'02
/7)-(
//-699,9'02,-.92
//+d,',/7'",9'022,02
/0,/4+4Q+",',/7(",9'0222,2,2
f(n)=n^3-n : diff(exp(n,3),n) = a to mozna zapisac = diff(prod(n,prod(n,n)),n)
f(n)=n2+n = 3n : prod(3,n) = mozna zapisac tez = sum(sum(n,n),n)
f(n)=n^2+n : sum(exp(n,2),n) = mozna zapisac tez = sum(prod(n,n),n)
coto(1,3)=succ(succ(coto(0,4)))=succ(5)=6
coto(2,2)=succ(succ(coto(1,3)))=
=succ(succ(succ(succ(coto(0,succ(succ(2)))))))=8
8 7 6 5 4 4 3
funkcja coto(x,y) przeprowadza dzialanie:
2*x+y+x = 3x+y
coto(3,44)=53
Tu mam najmniejsza pewnosc,
ale moim zdaniem to tak:
coto((A B C)(C B A))=(C B A)
bo:
coto((ABC)(CBA))
member(A CBA)
T -> member(A BA)
T -> member(A A)
eq(A A) -> T
coto((BC)(CBA))
member(B CBA)
T -> member(B BA)
eq(B B) -> T
coto((C) (CBA))
member(C CBA)
eq(C C) -> T
coto(()(CBA))
null() -> (CBA)
sorki za takie
rozpisanie, ale
nie bardzo wiem
jak to inaczej
zrobi
ć
:)
ogólnie chodzi o
to jakie warunki i
kroki
wykonywane sa
w kolejnosci
#:;:<=>,e
#<:K;],P:VUN`@=,BI<J@K=
/7'",f//',Q2,7,(22,C
/7(",f//',Q2,7,(2,C
CAR((A B) C D) = (A B)
CDR((A B) C D) = (C D)