����i� 4
������i �����i�
������i �����i� ��������� ������i ����������i ������i� ��� �i���� �� ���������
�������. ���������� ���� ������ ��� ������ ����� ��� ��������� ���i�������
����������. ��� ����� ���i������� ���������� ����i� �i��� �����, ���������i�
�� ���������i� ��������� ��������� �� 25000 ���������� ����i�.
����i������� ��������� �����i��� � ���������, �i��i�����, �������� �� �i�����.
� ���i ������������� �i�� ���� � n-������, ����� �i���i��� ���i� ��������i�
����������. ��������� �������� �����i� ���������:
1. (+ ... ). 3. (* ... )
2. ( - ... ) 4. (/ ... )
�����i� ��������� ������� ���� ���� ��������i�. �����i� �i��i����� �������
�i����� ������� ��������� �� ���� ��i� i���� ��������i�. �����i� ��������
������� ������� ���� ��������i�. �����i� �i����� ������� ������ �i� �i�����
������� ��������� �� ������� i���� ��������i�.
$ (+ 2 4 6 7) $ (- 20 3 5 6) $ (* 2 4 6) $ (/ 24 2 2 3)
19 6 48 2
�����i� ��i������� �� ��������� ����� ��������� ������������ ������:
1. (ADD1 n). ������� ��������, ��� �� ������� �i���� �� ��������.
2. (SUB1 n). ������� ��������, ��� �� ������� ����� �� ��������.
3. (INCQ sym n) ��i���� �������� ������� sym �� ����� n.
4. (DECQ sym n) ������ �������� ������� sym �� ����� n.
���� �����i� ��������� (�i��i�����) ������i ��������� ��� ��������i�, �� ������� ����������� �� ������i: ���������� �i���i��� ��������i�. ���� � �����i� INCQ ��� DECQ �������� ���� �������� - ������, �� ��i������� (���������) �������� ������� �i��������� �� �������. ���i� ����, �� �����i� INCQ �� DECQ ���������� ��������� ����������� �i�, �������� ������i�, ��i ����������� �� ��� �� ���������, ��i�������.
$ (ADD1 6) $ (SUB1 10)
7 9
$ (SETQ S 10) $ (INCQ S 14) $ (DECQ S 4)
10 24 30
�����i� MIN �� MAX ���������� ������ � �i����i��� �i�i������� (������������) ���������.
1. (MIN ... ). $ (MIN 12 3 45 67) $ (MAX 1 2 5 3)
2. (MAX ... ). 3 5
������i ������ � �i��i ����������� � ����i���i� ����i. ����� 3 * 5 + 5 * 7 ���
���������� ����� ������ � ������i (+ (* 3 5) (* 5 7)), ����� (3 + 6) * 7 - �
������i (* (+ 3 6) 7).
�����i� ���i������ ����� �� �i���� ����� n ��������i�.
1. ( < n1 n2 ... nM) ������� i�����, ���� n1 < n2 < ... < nM.
2. ( > n1 n2 ... nM) ������� i�����, ���� n1 > n2 > ... > nM.
3. ( /= n1 n2 ... nM) ������� i�����, ���� i������ ���� � ��� �����, ��i �� ���i������ ���� ������.
�� �����i� ���i������ ����� �i��������� <= , = �� >=.
$ (< 2 4 6) $ (>= 5 3 3 2) $ ( /= 4 4 5)
T T T
$ (< 6 6 8 15) $ (<= 6 6 8 15) $ ( /= 4 4 4)
NIL T NIL
1. �����i� ����������
(TRUNCATE m n), (ROUND m n), (CEILING m n) (FLOOR m n)
�i �����i� ���������������� ��� ���������� �������� ����� �� �i���.
TRUNCATE ������ ���������� �� �������� �i���� � �������� ����. ROUND
������ ���������� �� �������� �i���� �� �������� �� m/n. CEILING ������
���������� �� ��������� �i���� �� �����i� ���i, FLOOR - �� ����i� ���i.
������ ����-��� �����i� � ����� ����������� (f m n) ���i��������� �������
�����i� � ����� ����������: (f (/ n m)), �� f - ����-��� � ���������
�������� �����i�.
$ (TRUNCATE 6/4) $ (TRUNCATE -6/4) $ (CEILING 9 4) $ (CEILING -9 4)
1 -1 3 -2
$ (FLOOR 6 4) $ (FLOOR -6 4) $ (FLOOR 6/4) $ (FLOOR -6/4)
1 -2 1 -2
2. �����i� �����i
(REM m n), (MOD m n), (DIVIDE m n)
����i����� �����i� REM ������� ������ �i� �i����� ����� m �� n.
�����i� MOD ������ �� REM, ��� ������� ������ �����i. ���� (TRUNCATE m n)
������� q, � (REM m n) ������� r, �� m=q*n+r. �����i� (DIVIDE m n) �������
����, CAR ����� ���i���� �����i, � CDR - �����i �i� �i����� m �� n.
$ (REM 6 4) $ (DIVIDE 7 2) $ (REM -6 4) $ (MOD 6 4)
2 (3 . 1) -2 2
3. ���� �����
(SIGNUM n)
������� �������� -1, 0 ��� 1 ���� n �i����i��� �i�'����, 0, ��� �������.
4. ������ �����
(ABS n) - ������ ����� n.
5. ��������� �� ���������
(NUMERATOR n), (DENOMINATOR n) - ��������� �� ��������� ����� n.
$ (signum -5/3) $ (abs -5/3) $ (numerator 10/8) $ (denominator 10/8 )
-1 5/3 5 4
6. ���i���i ���i��i �����i�
(LOGAND n1 n2 ... nM), (LOGIOR n1 n2 ... nM), (LOGXOR n1 n2 ... nM),
(LOGNOT n).
$ (LOGAND 5 7 3) $ (LOGIOR 4 2 1) $ (LOGXOR 5 2 3) $ (LOGNOT 6)
1 7 4 -7
7. �����i �����i�
(NOT ��'���), (AND �����1 �����2 ... �����N), (OR �����1 �����2 ... �����N).
$ (AND (EQL 'as 'as) (< 2 4)) $ (OR NIL (< 4 56)) $ (NOT (EQL 'd 'g))
T T T
8. ����.
(SHIFT m n) - ���� ����� m �� n �i�i�.
$ (SHIFT 3 1) $ (SHIFT 3 -1) $ (GCD 24 66 600) $ (LCM 24 66 600)
6 1 6 6600
9. ���, ���.
(GCD n1 n2 ... nM), (LCM n1 n2 ... nM).
�i �����i� ��������� �i����i��� ����i����� ��i����� �i����� M ����� ��
�������� ��i���� ������.
�p��������i �����i
������ 1. ������ lst �� 100 �������i�, ��i ���i������ 0 ��� 1. �������� �����i�
(CHANGE01 lst), ��� ������� ������, � ����� ��i �������� 0 ���i���i �� 1, � 1 - �� 0.
�����i��� ���i��� ������������ �������� ��������� ����������� �i� X := 1 - X.
(DEFUN CHANGE01 (lst)
((NULL lst) NIL)
(CONS (- 1 (CAR lst)) (CHANGE01 (CDR lst))) )
������ 2. ��i���� a �� b �������i �����. �������� �����i� � ������ �����
(�� ��������� �� �����i�), � ���������i ��� ��i��i ���i������� �����
����������. ��������������� �����i��i ��i��i �������������.
$ (SETQ a 2 b 3) // a = 2, b = 3
$ (SETQ a (+ a b) b (- a b) a (- a b)) // a = 3, b = 2
������ 3. �i����, �� lst - ������, ���� �i����� �������� ����i����i��� �����.
�����i� (NUM lst) ������� ����������� �i���i��� �i���� ����� � �����.
(DEFUN NUM (lst)
((NULL (CDR lst)) 1)
((/= (CAR lst) (CADR lst)) (+ 1 (NUM (CDR lst))))
(NUM (CDR lst)) )
������ 4. ������ lst1 �� lst2 �i����� ������ ��������i ����i�������i �����.
������ �i���i��� ��i����� �������i� � ��� �������. ������ ��i��� ���������
������� ���i������� O(K+L), �� K �� L - ������� �����i� lst1 �� lst2 �i����i���.
(DEFUN COMELEMENT (lst1 lst2)
((OR (NULL lst1) (NULL lst2)) 0)
((< (CAR lst1) (CAR lst2)) (COMELEMENT (CDR lst1) lst2))
((> (CAR lst1) (CAR lst2)) (COMELEMENT lst1 (CDR lst2)))
(+ 1 (COMELEMENT (CDR lst1) (CDR lst2))) )
� ����i irratnal.lsp �i������� ������� ���i� i����i�������� ��
��������������� �����i�. ��������� ���������������� �����i� ��������� �
���i����.
1. (EXP x) ���������� e^x
2. (EXPT x y) ����i�� x^y
3. (LOG x y) �������� logyx. ���� y �� ������, ������ ��������� �i���� e.
4. (LN x) ����������� ��������
5. (SQRT x) ���������� ���i��
6. (ISQRT x) �i�� ������� � ����������� ������
7. (SIN x) �� (ASIN x) �i��� �� ����i���
8. (COS x) �� (ACOS x) ������� �� ����������
9. (TAN x) �� (ATAN x) ������� �� ����������
10.(RANDOM n) ���������� ���������� �����, ����� �� n.
���������i ���������i�
MuLisp ����������� ������ ����� PROGN ��� ���������� ����, ��i ���������
�i�� �����i�. ���i� ����, i������������ muLisp ����i��� � �i�i �����i�
�����i COND ���������i�. �����i COND-� ������� ���������� �����i�
������������, ��������� �� �����������. ����i����i ����� ������������
�������� �� ����������� ���� � ������i ��������� �������. ���������� ����i
���������i i�������i�.
1. QUOTE ��'���. ������� ��'��� obj ��� ���� ����������. QUOTE ����
����������������� ��� �����i����� ���������� ������� ��������, ��i
����������� �� �������� �����i�, �� ������������.
$ (SETQ a 125)
$ a $ (QUOTE a) $ (CAR (CONS 4 7)) $ (CAR '(CONS 4 7))
125 a 4 CONS
2. LOOP �����1 �����2 ... �����N. �������� �������� ����� � ����i�������
������� ����, ���� �� �����i������ ������� COND � ����������, �� �i���� NIL.
���������� �����i� LENGTH ���������� ������� ������. � ������� ���������
������������� �����������, � �i���� - ������������� ���i��� ��������.
(DEFUN LENGTHr (lst) (DEFUN LENGTH (lst)
((NULL lst) 0) (SETQ ct 0)
(+ 1 (LENGTHr (CDR lst))) (LOOP
) ((NULL lst) ct)
(SETQ lst (CDR lst) ct (+ 1 ct))
) )
3. IF �������� [THEN] �����1 [ELSE] �����2. ���� �������� ��������� ��
���i���� NIL, �� �������� [THEN] �����, i����� �������� [ELSE] �����.
$ (IF (EQL 'r 'r) (CAR '(q w e r t y)) (CDR '(q w e r t y))) - q
$ (IF (EQL 'r 'w) (CAR '(q w e r t y)) (CDR '(q w e r t y))) - (w e r t y)
4. IDENTITY ��'���. ������� ��'��� ��� ������ ��i�. �� �����i� �������������
��� ������������ ��i���� �� ��������i� � ������� �������.
5. PROGN �����1 �����2 ... �����N. ����i����� �������� ����� �� �������
��������� ���������� �����N.
6. PROG1 �����1 �����2 ... �����N. ����i����� �������� ����� �� �������
��������� ���������� �����1. �����i� �������������� ��� ����, ��� �������
�����i��i ��i��i ��� ���������� ���������i� � ������i ���������� i���� �����i�.
$ (SETQ a '(q w e r t y)) $ a
$ (PROG1 (CAR a) (SETQ a (CDR a))) (w e r t y)
q
7. COND cond1 cond2 ... condN. �������� CAR ����� COND ����� ����, ����
�� �����i������ ����� ��������, �i��i��� �i� NIL, ��� ���� ��i ��������� ��
������ ��������i. � ������� ������� COND �������� CDR ������� cons - �����
� ����������, ���� �� ���i���� NIL, �� �i�� �����i�, �������������� ������
�����i� PROGN. ���� CDR - ������� COND �����, ��� �� ���i���� NIL, �
������i�, �� ����������� �������� ���������. ���� ��������i ��i ���������
�� ��i ���� ��������� NIL, �� COND ������� NIL.
8. COMMENT ��������. I����� ��� ��������� �� ������� NIL. ������� ���i�
��������� ��������i� ������������� � ��������i �����i�.
9. RETURN ��'���. ������� ��������� �����i�, ��� �i����� RETURN, ��i�����
���� �� ������� ��'��� � ���i ����� ��������.
10. RESTART ������� ��i �i�����i �����, �i����������� �i� ���������
���������� �� i�i�i�� ���� ������� muLisp. ��i ��'���� �i� ��i�����,
�����i� ����������� �� �������� ������������ ��������� ����������
����������.
11. SYSTEM ������� ��i �i�����i �����, ������� ��������� muLisp �� �������
��������� ������i��i� ������i.
12. EXECUTE �������� ��������� �����. ����������� ������ ������� muLisp,
���������� ��������� �������i � ��������� ������. EXECUTE ������� ��� ������
� �������� ��� NIL, ���� <��������> �� ��������.
$ (EXECUTE "command.com" "/c dir c:")
���������� ����������� �����i�
1. ������i���� ����� n ���������� ����� (����������� n!), ��� ����������
����������� ��������� �����:
0! = 1 $ (DEFUN FACTORIAL (n) $ (FACTORIAL 10)
N! = N*(N-1)! ���� N>0. ((ZEROP n) 1) 3628800
(* n (FACTORIAL (- n 1))) )
���� � ���������i� �������i ���������� ���� ������ �����, �� ���� ���������
������������ �����. �������������� ������� ����� LOOP ����� ��������
����������� �������. �������� �����i� ���� �i��� ����������:
$ (DEFUN FACTORIAL1 (n rslt) $ (FACTORIAL1 10)
(SETQ rslt 1) 3628800
(LOOP
((ZEROP n) rslt ) $ (FACTORIAL 0 a)
(SETQ rslt (* n rslt)) 1
(SETQ n (- n 1)) ) )
2. ����i����i��� �����, ����� ������� ��� ���i���� ���i ���� ��������i�, �
����i ��� �������� ���i������ 1, ���������� ����i����i��� �i������i. N-��
����� ����i�������i �i������i F(N) ���� ���� �������� �� ����������� ��������:
F(0)=1, F(1)=1, F(N) = F(N-1) + F(N-2).
$ (DEFUN FIBON (n) $ (FIBON 20)
((<= n 1) 1) 10946
(+ (FIBON (- n 1)) (FIBON (- n 2))) )
��������� ����� ����� �����i� �� � ����������, ���i���� ��� ���������� N-���
����� �i������i �����i��� ��������� (N-2) ����� �i������i ��i�i, (N-3) - ����i
i ��� ���i. ��������� �����i� FIB � ������ �����������, ������i ��� � ���� ���
������� �����i� ������i ���i������� �i����i��� F(0) �� 0).
$ (DEFUN FIB (n f1 f2) $ (FIB 20 1 0)
((ZEROP n) f1) 10946
(FIB (- n 1) (+ f1 f2) f1) )
��������
1. ��������� �����i� MIN, MAX, INCR, DECR ��� �����i�.
�����i� INCR (DECR) ������� i�����, ���� �������� ��������i� �����������
� ����������� (��������) �������.
2. �������� �����i�, ��� �� ������� � �i��������� ���������:
a) ���� �������i� �) �i���i��� �i������i�
�) �i���i��� �������i� �) �i������ ������
3. �������� �����i�:
a) (DIVIS x y) - ������� ������ �� ������ �i� �i����� x �� y. ��������� ��������� � ������i �����. �� ��������������� �����i� �i����� �� �����i.
�) (POW x y) - x � ������i y. ������������� ��������� � ������� ��i���� O(y) �� O(log y).
�) (SLIST n) - ������� ����� n �� �����i ��������. �� ��������� ��������� �����i� ��������� ������ ������� �����, ������� ���� ���i���� n.
�) (PERLEN n) - �� ����������� ������ n ��������� ������� ���i��� ����� 1/n.
�) (SUMFACT n) - ���� 1/0! + 1/1! + ... + 1/n!.
4. (UNITE lst1 lst2). ����� ��� �������i ������ lst1 �� lst2 � ���� ��������� ������.
5. �������� �����i�:
�) (BINARY n) - �i���i��� ����i� � ��i������� ������������i ����� n.
�) ��� �� ��� ���� ����� �� ���������� ����i��.
���(a, b) = ���(a - b, b), ���� a > b,
���(a, b - a), ���� a < b,
a, ���� a = b.
�) ��� ���� ����� �� �����i������� ���������� ����i��.
���(a, b) = ���(a mod b, b), ���� a > b,
���(a, b mod a), ���� a < b,
a, ���� b = 0.
b, ���� a = 0.
�) (INVERTBIT a n) - �������� n-�� �i� ����� a.
�) (EQ2 a b c) - ����'����� ��������� �i������.
�) (SQTR a b c) - ������ ����� ���������� �� ������ ��������� (����������� ������� ������).