, �� n - ������� ������� N,
� m - ������� ������� M) � N, ��� ���
f(x[1],...,x[n]) = F ( f(x[1],...,x[n-1]), x[n])
����� ���������� i��������� �����i�:
k := 0; f := f0;
{i����i���: f - �������� �����i� �� (x[1],...,x[k]) }
while k <> n do begin
| k := k + 1;
| f := F (f, x[k]);
end;
��� f0 - �������� �����i� �� ��p���i� ����i�������i
(����i�������i ������� 0). ���� �����i� f ��������� ���� �� �� ��p���i�
����i���������, �� ������ p���� ���i������ ��
k := 1; f := f (x[1]);
�p������ i���������� �����i�
1. f(A) = ���� ����� ������� A.
F(x, y) = x + y;
(DEFUN SUMMA (lst)
((ATOM (CDR lst)) (CAR lst))
(SUMMA (CONS (+ (CAR lst) (CADR lst)) (CDDR lst))) )
2. f(A) = �i�i������ (�����������) ����� ������� A
F(x, y) = min(x, y) ��� max(x, y)
(DEFUN lmin (lst)
((ATOM (CDR lst)) (CAR lst))
((< (CAR lst) (CADR lst)) (lmin (CONS (CAR lst) (CDDR lst))))
(lmin (CDR lst)) )
3. g(A, B) - �����p��� ������� �����pi� A �� B, �������� ���� �p���������i
��������� A �� B.
�����i� f(C), �� � = {a1*b1, a2*b2, ..., aN*bN},� i����������.
F(x, y) = x + y
(DEFUN SCALAR (lst1 lst2)
((NULL lst1) 0)
(+ (* (CAR lst1) (CAR lst2)) (SCALAR (CDR lst1) (CDR lst2))) )
������ 1. ���� ��i ����i�������i x[1]..x[n] �� y[1]..y[k] �i��� �����.
�������, �� � �p��� ����i����i��� �i�����i����i��� �����, ����� �� �����
� ����� ���p������ ����i ����� ���, ��� ���������� �p���. ������ ��i���
�(n+k).
(DEFUN PIDPOSLID (lst1 lst2)
((NULL lst2))
((NULL lst1) (NULL lst2))
((= (CAR lst1) (CAR lst2)) (PIDPOSLID (CDR lst1) (CDR lst2)))
(PIDPOSLID (CDR lst1) lst2) )
�� ����p������ ��, �� ���� x[n1] = y[k1] �� y[1]..y[k1] - �i�����i����i���
x[1]..x[n1], �� y[1]..y[k1-1] - �i�����i����i��� x[1]..x[n1-1].
������ 2. ���� ��i ����i�������i x[1]..x[n] �� y[1]..y[k]
�i��� �����. ������ ����������� ������� ����i�������i, ��� �
�i�����i����i��� ���� ����i���������. ������ ��i��� - O(n*k).
����'����. ��������� ����� f(n1,k1) ����������� ������� ��������
�i�����i�������i ����i��������� x[1]..x[n1] �� y[1]..y[k1]. ���i
x[n1] <> y[k1] => f(n1,k1) = max (f(n1,k1-1), f(n1-1,k1));
x[n1] = y[k1] => f(n1,k1) = max (f(n1,k1-1), f(n1-1,k1),
f(n1-1,k1-1)+1 );
���i���� f(n1-1,k1-1)+1 >= f(n1,k1-1), � �p����� ������� �������� ����� �����
����� ���i���� �� ���� i� ���.
(DEFUN lp (lst1 lst2)
((OR (NULL lst1) (NULL lst2)) 0)
((/= (CAR lst1) (CAR lst2)) (MAX (lp lst1 (CDR lst2)) (lp (CDR lst1) lst2)))
(+ 1 (lp (CDR lst1) (CDR lst2))) )
�����i� ������
�����i� ������ ��������� ��������� � �������� ����� ������ (COS - Current Output Stream).
1. (PRIN1 obj). ������ ��������� ������������� ��'���� � COS i �������
��'���. �����i� ����� ������� �������������� �� P-i����. ���� �i���������
��i��� � �������� �������� ��������. ��i��� *PRINT-POINT* ���������
����������� �i���i��� ���������� ���� ��� ���������� �� �����i �������.
2. (PRINC obj). ������ �� i PRIN1, ��� P-i���� ���������� � ������������
���������. �������� ���������� ��i��� *PRINT-ESCAPE* ��� ������� PRINC
��� �i���� T.
(DEFUN PRINC (obj *PRINT-ESCAPE*)
(SETQ *PRINT-ESCAPE* T)
(PRIN1 obj) )
3. (WRITE-BYTE n). ���� n - �i�� ����� �i� 0 �� 255, �� �����i� �������� �
COS ������, ASCII-��� ����� ���i���� n, i ������� n.
4. (TERPRI n). ���� n - ���i�'���� �i�� �����, �� � COS ���������� n ������i�
ASCII ������ �����. ���� �����i� ��������� ��� ��������i�, n ���������
�i���� 1. ���� �����i� ������� NIL.
(DEFUN TERPRI (n)
((AND (INTEGERP n) (>= n 0))
(LOOP
((ZEROP n) NIL)
(WRITE-BYTE 13)
(WRITE-BYTE 10)
(DECQ n) ) )
5. (PRINT obj) ��� ������ �����i� ����� ��������������� �����i� PRINT.
���� �� ���� ��������. ��� ������� ��� �������� ������������, � ���i�
���������� ���� ��������. ����� ������� ��������� �i��������� �����i� ��
����� �����, � �i��� ������ ��������� ��������� ����i���. ���������
�����i� � �������� ���������. �������� ������� �����i� PRINT � ����
����������� �������. �����i� PRINT ����� ��������� ���:
(DEFUN PRINT (x)
(TERPRI) (PRIN1 x) (PRINC " ") )
6. (SPACES n). ������ n ������i� ASCII - ������i� (����i��i�) � COS.
������� �i���i��� ��������� ������i� �i��� ���� �� ���� ��������� ������i�
����� �����.
7. (FRESH-LINE). ���� �� ����������� �� ������� �����, �����i� ������ �������
NIL. I����� ���� ������ � COS ����� ����� i ������� �.
8. (WRITE-STRING ������), (WRITE-LINE ������). � COS ���������� P-i�'�
�������. ���� �������� �� � ��������, �����i �����i� ���������� NIL.
�����i� WRITE-LINE �i��� ������ ������� � COS ����������� ������ �����i�
�� ����� ����� �������� (TERPRI).
9. (SET-CURSOR ����� �������). ��������� ����� ��� �i��� �� ����i� 80*25.
�� �����i� ���������� ������ � �i����i��� �����i�.
10. (ROW), (COLUMN). �i����i��� ���������� �������� ����� (��������) ���������
��������� �������.
11. (CLEAR-SCREEN). ����� �����, ���������� ������ � (0, 0) �� ������� T.
��������� ���'����
�����i��� ����������� ��������� ���'���� ���� ������ �i���i��� �������
i������������� muLisp. ���� �����i�����i ����������� �������i��� ������i����
���'��� �i� ������, ��� ���� ������������. ���'���, ��� �� ����
����������������� ���������, �������� ��� ��������� ����� �������� �����.
��� i�i�i��i���i� muLisp ������������ ����i� �������� ���'��i, ��� ���i�
����������� �� 4 ������i:
- ������� ����i� (64�), ��� ��������� ���'��� ��� 4 �������i�-����i����i�,
�����i���� ��� ������� ������� �� �����.
- ������� ������i� (128�), ��� ��������� ���'��� ��� ������� �i�� PRINT-i���i
������� (64�) �� ��������� ��i������� ������� ������� ����� (64�).
- ������� ����i����i� (256�), ��� ��������� ���'��� �i� 2 ��������-����i�����,
�����i��i ��� ������� cons-� �� �i� D-���, �����i���� ��� ���������� �����i�.
���i���� cons � �������� ���������� ����� �i���, ������� ����i����i� �
����i����� ����� i����.
- ������� ����� (64�), ��� ��������� ���'��� ��� ������������ ����� ��
��i����� �����. �i ��� ����� ����������i �� ����������� �i���� ������i
����i�.
����� ����� ��� ������ i������������� muLisp �����i��� 512� ���� ���'��� �i� DOS.
��i� ��i���
MuLisp �� �������� ����� ��i��� � ����� ����������� (���i��� �� ������).
�i� ��� ������� ��������� ���'��i ���i������� ��i ������i ��'���� �����,
������ �� ���� ������������� �����i��� ��������� �� ��������� �������i�-
����i����i�, ��������� � �������i� ������ ������� �� ������������ ��i�
������i� �������, ��� �i ����� ��i����, ��� D-����. ������� � ������������
����������, ��i �� ����� ������������ �� �������� ��������� �����i�, ��
���i�������. ���i ������� ����������� ����������� �i ������ �i� ��� �������
���������.
� ������i ������� ��������� ����� ��i��� ��i ���i���i ��'���� �����
��i��������� �� ���������� � ������ � �i��i� �i����i��� ������i �����. ��
�������� �������� ������� �������� ����� ��� ��������� ����� ��'���i�.
����������i� �������� �����
�i��� �������� ��i��� ���i� ��� ���i����� � �������� �������� ����� ����
��������� �i���� ���'��i ��� ����, ��� �������� ���� ����� ����������
���������, ���������� �� ��, �� i��i ������i ����� ����� �������� �i���i���
�i���� ���'��i. ���� ������ ���� ������i�, �� ��i��������� ����������i�
�������� ����� ������ �i����� ��������, ������� ���'��i, ��� �� �������,
���i� ��� ���i����� ��������. ��� ��������� �� ����i�� ��� ����� ������i
�����, ��i ����������� ����, ����� ���� �����������.
����, muLISP ���� ��������� �� ��i�� ����� ������� �� ����i�� �������� �����.
���� ��i� ��i��� �� ����������i� �������� ����� �i���������� �����������,
���� ����� �� ��������� �����i��� ��� �����������, ���i���� ���� ����������
������� ����� � �����i �������.
����� ���� ���� ��� �������� ��i��� � ����������i�� �������� �i� �i������i
����� � ������i. ��i� ��i��� �������� ����� ����� �������. ����� ��� ��,
����� ������� �������� �i��������� � ����������i� �������� �����. �
�i������i, �� �� ������� ��������� �����������, ��� ��� �������i ������
��������� ����, �� �������������� muLISP, �� ������� �����i��� ����������.
�����, �i���� �� "thrashing" ������ � ���� ���i, ���� ������� �������
��������� ������������� �i���i��� ���� �� ��i� ��i��� ��� ���� ����������
���������� ������i �����. ������� "thrashing" � ������ ��������� ����
��������� ���� �����i. ���� �������� ���� ���� ���i���� ������ ��i�������
����i�� ���'��i ��� (�� 512�) i (���) ���������i� �������� � ����� ���������
�� ����� �� ���'��i.
������ ����������
������ ���������� muLISP ������������ ��������������� ���������� ��
��������������� �������� �������. ���� ����������� ������, �� �i���
���i�������� ��� ����������� �� ��� ������� �� ����� ������� ��������
�i������ � ������i ���i�:
Continue, Break, Abort, Top-level, Restart, System?
���i� ������� ��i��, ������ ���������� ����� ���� � ���i� ������ ��������
�� i���i (�,�,�,�,R �� S �i����i���).
�i��������, �� ���i� �����������i � ������� ��������� ����� �i�.
- Continue (����������): ������� ��������� �������i, �� ���������
�����������. ���� �������� ����������� ���� ������� �����������, �������
� ����i�����, �� ��������� ������������, �i�� ����������� �� ����.
���� ����������� �i������� � ���������i �������� �������, ��������, ��������
��� ����������i ��������������� �������, ����������� �� �������� ��������� �����i�;
- Break (�������): ��������� ���������� ��������� �������� � �������� �� ���������
����i� �i���� ����� "read-eval-print" ("�������-����������-����"). �� ��������
������������i �����i���� ��� (i) ��i���� ������� ���������� muLISP �����
������������ ��������� ��������. ��� ������ � ������� � �i��������� ������
�������� �����i�� ( RETURN ) �i��� ����� ������;
- Abort (�����������): �������� ��������� ��������, �������� ����������
����������, ����i����� � ����� ��i����, ��������i �������� � �������
��������� �� �������� �i���� ����� "read-eval-print". ���������� �����i�,
�������� ������������ �� ���������� ��i���� ����������� ����i�����;
- �op-level (�����i� �i����): �������� ��������� ��������, ��������
��������i �������� ���������� ����������, ������������ � ����� ��i����,
����i�� �� ������� ������i ��i��i � ���i��i ���i (CIS �� COS) � �������
��������� ��������� �i����i ����� "read-eval-print". ���������� �����i�,
�������� ������������ �� ���������� ��i���� ����������� ����i�����;
- Restart (��������� �����): ������� ��i �i�����i �����, �i����������� �i�
��������� ���������� muLISP �� i�i�i�� ���� ������� muLISP. ��i ��'���� �i�
��i�����, �����i� �� �������� ������������ � ��������� ���������i muLISP
����������;
- S�stem (�������): ������� ��i �i�����i �����, ������� ��������� muLISP
�� ������� ��������� ���i��i� ��.
������� ���������� � ������i
� ����-���� ��� � ���i ��������� �������� i�i�i������ ������������ �������
���������� � ������i ���� �������� ��������� �������� � ������� ��������� ��
�������.
����������� � ������i i�i�i������ ������ ���������� ����i�i 'ESC' ��
����i����i ������i. ���� �� ����i����i ���� ����i�i 'ESC', �� ������
����������� ���� ���� �'��������� ������ ���������� ����i�i �i�� ����� ([)
� ���������� ����������� ����i�i 'CTRL'.
���� � i ��� �� ��������, �� ������ ��� �������i� ���������� � ������i ����
���� ��i����� ������ �����i���i� Default Readtable ������� ����i��� muLISP.
��� ���������i ����������� � ������i �� �����i ������i ����i������
���i��������:
Console Interrupt Break: NIL
�� ��� �� ���������� ����� �'��������� �i������ � ������i ���i� �����������.
���������� ���� ���i� ���i����, �� ���������� ������.
���� � ������ ������ ���� �i����i�i �� ����������� � ����i�����, �������
��i������ ����������� � ������i ������ ������������ ��� (���� �� ������
��������).
���i�������� ��� �������
� ������ ����i�i ����������� ���i�������� ��� ������� � ������i muLISP,�
����� ���i�, �� � � ������������i ����������� ��� ����i �������.
���� muLISP ������� ���������� ����, ����������� �����i� BREAK. BREAK ����
�i����i��� ���i�������� ��� �������, ���������� ��������� �������� ��
��������� ������������i ���i� ����������� ������ �� ���i�.
����� � �����i����� ������� �������� ���i�������� ��� ������� muLISP:
- DISK FULL (���� ������) : ������, �� ���'��i ��� ����i����� �����,
��������� �� ��������� ����i, �����. ��������� �������� ������������, �
������ ����������� �� ��������. ���i���� ���� ���������� �i�������, �
������i��� ������ � i��i ����� �� ��i� ������i (�� ��������� �����i�
EXETUTE ) �� ���������� ����� �� �����;
- END-OF-FILE (�i���� �����): ������, �� ��i������ ������ ������� ���i ��
������ �i��� ��i����� ����� ( CIF ) ��� � ���� ������i� �i���.
�i����� �� ���i��������� "end-of-file" ����i������ i�'� CIF � ������i ������
����: "drive:name.type";
- FILE NOT FOUND (���� �� ��������) : ������, �� ���i���� �� (���) SYS-����,
�������� � �������� ��, �� i�i�i���� muLISP, �� ��������, ��� SYS-����
���i��� ����i�. SYS-���� ���� ���� ������������ �i���� �i� ���������� �i��
����i� muLISP, �� ��������������� ��� ����i����� �����.
���i��i �� SYS-�����, ��i� ����, ������ ���� ����������i � muLISP �
������������� ������ RDS �� LOAD �i����i���. ���� ���� � ��� ������
�����������, � ���� �� ��������, ���i��� ���i�������� "file not found"
������� ������� ������ NIL;
- INSUFFICIENT ARGUMENTS (���� ��������i�) : ������, �� �����i�, ���
������� ���������� ���� ��������, ����������� ��� ��������i�. �����i���,
��i ������ ��������� ��� ��� �������, �: MAX, MIN, -, /, ADD1, SUB1, LCM,
ABS, SIGNUM, NUMERATOR, DENOMINATOR, FLOOR, CEILING, TRUNCATE, ROUND, MJD,
REM, DIVIDE, LOGNOT, BITLENGTH �� SHIFT;
- INSUFFICIENT MEMORY, ABORTING (���� ���'��i, �����������): ������, �� ��
�i��� ������� ���'��i ��� ������������ � �����i�������� ���������� muLISP.
������ muLISP ��������������, ��������� ����������� �� ���i��� ��.
�i��������, �� ���������� muLISP, �� ����i������ � SYS-����i, ���� ����
����������� �� ���, �� �� ������ ��'�� ���'��i, �i� ���, �� ��i� ��
���������� ���� ��������. ������� �� ������ ���'��i ������ �i���� ���i,
���� ���, �� ��i� SYS-���� ��� ������������, �� �����i� �������i� ��'����
���'��i ��� ����i����� ���������� muLISP. ������ ���� ������������
SYS-����i� - �� ��������� �i������ ��'��� ���'��i ��� ���.
- MEMORY FULL (���'��� ���������) : ������, �� ���'��i ��� �����������
��������� ������� muLISP �� �������. ��������� ������� ��������������,
������ ����������� �� ��������.
�i����, ������� ��������� ���'���� ��������� ���������� �i���i��� ���'��i
����� ������� ����� ��� ������� ����������� ������ ������� muLISP. ����
������� � ��'��i ���'��i ��� ����i����� ��'���i� ����� �������� ��i �����i
�������, ������ �� �������. ����� � ���i��������� ��� ������� ����i������
���������� � �������i� ����i:
GC: nnnn aaaa/aaaa vvvv/vvvv pppp/pppp ssss/ssss tttt/tttt
�i�����������i �����, �� ����� �� "GC:", ��������� ����i� ���'��i, ��
���������� � ����i� � �������� 4-� �������� �����. ����, ���� ���� ���������
������� �����, ���'����� � ��������;
- NONINTEGER ARGUMENT (���i��� ��������) : ������, �� �����i�, ��� �������
�i�i ���������, ��������� � ���i��� ����������. �����i�, ��� ���� �� �������
���� �����i����, ��: LOGAND, LOGIOR, LOGXOR, LOGNOT, SHIFT �� BITLENGTH;
- NONINTEGER ARGUMENT (���������� ��������) : ������, �� �����i�, ���
������� ������i ���������, ��������� � ���������� ����������. ���� �������
���� ��������� ��� ��������� �����i�: =, /=, <, >, <=, >=, MAX, MIN, +, -, *,
/, ADD1, SUB1, INCQ, DECQ, GCD, LCM, ABC, SIGNUM, NUMERATOR, DENOMINATOR,
FLOOR, CEILING, TRUNCATE, ROUND, MOD, REM �� DIVIDE;
- NONSYMBOLIC ARGUM�NT (������������ ��������) : ������, �� �����i�, ���
������� ��������i ���������, ��������� � ������������ ����������. �� �����
�����i� �i���������: SET, SETQ, PSETQ, POP, PUSH, INCQ �� DECQ;
- SYNTAX ERROR (����������� �������) : ������, �� �����i� READ �����i�� ���
����i ����i �����, ��� ������i��� � ��������� ���������i, ���������, (A.)
�� (AB.CD). ���i���� ����������� �� ����� �������� ���������� ��������
������ ����� ��� ���, ���� ���� ���� �����i������ ������������-
����������������;
- UNDEFINED FUNCTION (����������� �����i�) : ������, �� ��i������ ������
������������ �������, �� �� �� ��������� �����i�. ���������� �i��� ���
����i �i�� ������� �: ���i� ���i� BREAK, ��������� ������������� ������� ��
����������� ���i��� �������� �� ��������� �������: ( RETURN ( EVAL BREAK ))
- ZERO DIVIDE (�i����� �� 0) : ������, �� ���� ��������� �����i� �i����� �
�������� �i�������. ������ �����i��� ������ ����: /, FLOOR, CEILING,
TRUNCATE, ROUND, MOD, REM �� DIVIDE.
��������
1. (1 ���) �����i� f(x) ��������� ��������� �����:
f(x) = 3*x+1, ���� x - ����p��, x<>1.
f(x) = x/2 , ���� x - ��p��.
���� x = 1, �� ���������� �����i� �����������.
�� ������� ����p������ N �������� ����i����i��� N, f(N), f(f(N)), ..., 1.
H������� �����i� (PROBLEM3X n), ��� ����p�� ������� ����p��� ����i�������i.
2. (1 ���) H������� ���������� �����i� f(x) = sin(x) i� ������� �������� EPS
(SIN_MY x EPS). ����i���: ���p�������� p�������� ����i� � p�� �����p�.
sin(x) = x - (x^3)/3! + (x^5)/5! - (x^7)/7! + (x^9)/9! - ...
3. (1 ���) �� i��� ���� �����, ��� �i������� � ������� � ����� ��������� ����i���������
����� lst1, lst2 �� lst3. �����i� (FIND3 lst1 lst2 lst3) ������� ������ ��
����� (���� ���� i���) � ������� ��i���� O(K+L+M), �� K, L, M - �������
�i����i���� ����i���������, i����� ��������� NIL.
4. (2 ����) � �p� ����� ���i��i�. �p���� ���.
�� ���� �p�� ������������ ����� ���i���� �i���i��� ���i��i� ���� � ���i��
����� (�p��� ����'������). ���p� ���, ��� ����p� ������i� ���i����.
H������� �����i� ���������� ���� �p���� (NIM a b c), �� a, b, c -
�i���i��� ���i��i� � ������. �����i� ������� ����p���� ���� (x.y),
�� x - ����p �����, � ��� �p���, y - �i���i��� ������ ���i��i�.
����'���� 4. ���������� �������� Z = a XOR b XOR c. ���� Z <> 0, �� �� ������
������ �p����� ����� �p��, ��� Z = 0. �i��� ����� �� �� �� ����� ����'���p,
�i��� ���� ���� �������� Z ��i������ i �� ���� ��pi������� 0. �� ����� ������ ���,
��� Z = 0. ���i���� ���p����� �����i�� � 0 0 0, ����� Z = 0 XOR 0 XOR 0 = 0,
�� �p��p�������� ����� ����p����, �� ������ ���p���. ���� �p� ������ ���i Z = 0,
� ����'���p ��� ���p���� ��p����i�, �� ��������� �i� ������ ����, ����'���p
���p�.
3 = 011 3 XOR 2 = 1, 1<3 -> ����� �p��� � ����� 2 ���i���
4 = 100 4 XOR 2 = 6, 6>4 -> �p��� �� �����
5 = 101 5 XOR 2 = 7, 7>5 -> �p��� �� �����
-XOR---
2 = 010
����, ���� �� �i������ 2 ���i��� � ��p�� �����, �� ���������� 1 4 5,
Z = 1 XOR 4 XOR 5 = 001 XOR 100 XOR 101 = 0, �� ��� i �p���.