����祭��. ��ॢ��
����������� ��� ��� 横�i�, � 类�� ���i���� ��६� ���設�, �� ���������
��७�� ��ॢ�.
�������� ⨯� ��ॢ� �㤥�� ������� ��� NIL (���� ��ॢ�), ��� ��������
(���祭�� . (�i��� ᨭ . �ࠢ�� ᨭ)), �� �i��� � �ࠢ�� ᨭ� � ������ࠬ�
⨯� ��ॢ�. ���ਪ���, ��ॢ� 瘟 ᪫�������� � ��� �������, �㤥 ���
�����: (Element . (NIL . NIL)).
�㭪�i� INSEL ��⠢��� ������� n � ��ॢ� tree �� ����㯭�� �ࠢ����: ���
��ॢ� ����, � �⢮�� ��ॢ� (n . (NIL . NIL)). I���� ��⠢�� ������� �
�i�� �i���ॢ� �� n ���� �� ���祭�� ���筮� ���設� ��� � �ࠢ� �i���ॢ�,
�� �i���. �㭪�i� INSL �⢮��� �� ᯨ� ������ ��ॢ�, ���設��� 类��
����� ��i ������� ᯨ᪠. ��ॢ� ����������� �����稬, ��i�쪨 �� ��室i
���� ��i�� ���ࠢ� �� ��ਬ�� �i���⮢���� ᯨ᮪ �������i� � �����箬�
���浪�.
(DEFUN insel (n tree)
((NULL tree) (CONS n (CONS NIL NIL)))
((> n (CAR tree)) (cons (car tree) (cons (cadr tree) (insel n (cddr tree)))))
(cons (car tree) (cons (insel n (cadr tree)) (cddr tree))) )(DEFUN INSL (lst tree)
((NULL lst) tree)
(SETQ tree (insel (car lst) tree))
(INSL (CDR lst) tree) )
����㯭i ��i �㭪�i� ��������� ���i� ��ॢ�: PUD (Print Up-Down) - ���i� ���� ����, PLR (Print Left-Right) - ���i� ��i�� ���ࠢ�.
(DEFUN PUD (tree) (DEFUN PLR (tree)((NULL tree)) ((NULL tree))
(PRIN1 (CAR tree)) (SPACES 3) (PLR (CADR tree))
(PUD (CADR tree)) (PRIN1 (CAR tree)) (SPACES 3)
(PUD (CDDR tree)) ) (PLR (CDDR tree)) )
�㭪�i� REVT (Reverse Tree) ������ ��ॢ�: ����� �ࠢ� �i���ॢ� ��� �i��� �i���ॢ�� i �������.
(DEFUN REVT (tree)
((NULL tree) NIL)
(CONS (CAR tree) (CONS (REVT (CDDR tree)) (REVT (CADR tree)))) )
�ਪ����
$ (SETQ a (INSL '(5 1 7 3 9 2 4 8 10) NIL)) $ (SETQ b (REVT a))$ (PLR a) $ (PLR b)1 2 3 4 5 7 8 9 10 T 10 9 8 7 5 4 3 2 1
�㭪�i� HEIGHT ������ ����� ��ॢ�. �����⨬���, � ���� ���쮣� ��ॢ� ���i���� 0. ���� �����쮣� ��ॢ� ���i���� ���ᨬ㬮�i �i� ���⠬� �i���� � �ࠢ��� �i���ॢ ���� �������. (HEIGHT a) = 4, �� a ���� � ����।�쮣� �ਪ����.
(DEFUN HEIGHT (tree)
((NULL tree) 0)
(MAX (ADD1 (HEIGHT (CADR tree))) (ADD1 (HEIGHT (CDDR tree)))) )
�㭪�i� �����i���� ��������� ��ॠ����i� ����i����i� �
�������� ����� ���� �ணࠬ㢠��� �i�.
1. RPLACA . �i��㢠����� ���i�� CAR-������� ��'��1 ����i������ �� ��'��2,
����������� �����i������� ��'��. ��� ��'��1 - ᯨ᮪, � ���訩 �������
ᯨ᪠ ���i������� �� ��'��2. ��� ��'��1 - �i�� ��ॢ�, � ���� �i��� ᨭ
���i������� �� ��'��2. ��� ��'��1 - ᨬ��� (a�� �� NIL), � ᨬ��� ����
���祭�� ��'��2.
$ (SETQ a '(a b c d)) $ (SETQ b '((1 . 2) . (3 . 4))) $ (SETQ s 'd)
$ (RPLACA a '(11 12)) $ (RPLACA b 5) $ (RPLACA s 'g)
((11 12) b c d) (5 . (3 . 4)) Val(s)=d,Val(d) = g
2. RPLACD . �i��㢠����� ���i�� CDR-������� ��'��1 ����i������ �� ��'��2, ����������� �����i������� ��'��. RPLACA � RPLACD � �᭮����� �㭪�iﬨ, �i ��i����� �i���� �������� ᯨ�i�. �� ����� �।�⠢�� �१ 㧠���쭥�� �㭪�i� ���� SETF:
(RPLACA x y) - � (SETF (CAR x) y)(RPLACD x y) - � (SETF (CDR x) y)
3. NSUBSTITUTE . �����i������� ���� �����鮣� �i��� ᯨ��. ���i ������� ���i������� �� ���i �� ��쮢��� �i��i ����������i, ��� 直� ��ॢiઠ �� ���� �� ���i���� NIL. ��� ��� �� �������, � �� �����祭�� ��� = EQL.
$ (NSUBSTITUTE 1 3 '(4 5 6 (3 3 4 5) 3 4 1))
(4 5 6 (3 3 4 5) 1 4 1)
$ (NSUBSTITUTE 10 5 '(4 5 6 3 4 1) >) $ (NSUBSTITUTE 10 5 '(4 5 6 3 4 1)
4. NSUBST . �㭪�i� ����� � i NSUBSTITUTE, ��� �����i������� ���� ��i� �i��i� ᯨ��.
$ (NSUBST 1 3 '(4 5 6 (3 3 4 5) 3 4 1))
(4 5 6 (1 1 4 5) 1 4 1)
5. DELETE . ������ �i ᯨ�� ��i �������, ��� 直� ������ ��ॢiન �� ��⮬ �� ���i���� NIL.
$ (DELETE 3 '(1 2 3 4 3 2 1))
(1 2 4 2 1)
6. NREVERSE . ������ ������� ᯨ��, �祯����� � ��'�⮬.
$ (NREVERSE '(a b c d)) $ (NREVERSE '(1 2 3 (1 2 3) 4 5 6) '(1 2 3))(d c b a) (6 5 4 (1 2 3) 3 2 1 1 2 3)
7. NBUTLAST . ��� n - ��� ��� ����⭥ �i��, � �㭪�i� NBUTLAST ������� ᯨ᮪ ��� n ��⠭�i� �������i� (�i��㢠����� ���i�� n-�� ����, ���⮣� � �i��� ᯨ�� �� NIL). ��� ��㣨� ��㬥�� �� �������, � �� �����祭�� n=1.
$ (NBUTLAST '(a b c d e)) $ (NBUTLAST '(a b c d e) 3)(a b c d) (a b)
8. NCONC ... . ����������� ᯨ᮪, 直� ᪫�������� � �������i� ᯨ�i� - ��㬥��i� � ��������� ���浪�. �i��㢠����� �����i���i� ��⠭�i� CDR-�������i� ᯨ�i�. ��� ������� ������� (NCONC list list), �� list - ���-直� ᯨ᮪, � १���⮬ �㤥 ����⭨� ᯨ᮪, ���� ���㤮�� 类�� �㤥 ���i�祭���.
$ (NCONC '(1 2) '(3 4) '(5 6 7))
(1 2 3 4 5 6 7)
9. SPLIT . �������� ᯨ᮪ �� ��� ᯨ᪨ ���।��i. ���祭�� ᯨ�� ��� ���� ���� ��������. �㭪�i� SPLIT ������� ���� �������� ᯨ��.
$ (SETQ a '(1 2 3 4 5 6)) $ a$ (SPLIT a) (1 2 3)(4 5 6)
10. SORT . ���������� ������� ᯨ�� �� �᭮�i ����.
$ (SORT '(2 5 3 4 1 6 8 9 7) >)
(9 8 7 6 5 4 3 2 1)
�������� 1. �����
�i��i��� ����i� � �������� ��ॢi.
2. ����� �।�� ��䬥�筥 �ᥫ, �i ���室����� � ���設�� ��ॢ�.
3. ������ �㭪�i� 袨����� ���㢠��� QSORT.
�� �����祭�� �� �����i�
��⮪����� ����� (CIS - Current Input Stream) ������� ���᮫�.
1. ��� �⠭�� ����� � ��i����� ��⮪� ������⮢���� �㭪�i� READ. �i��
��������� ������� (SETQ a (READ)) �� ������i ����� � ���᮫i ��ࠧ, 直� �㤥
���⠭� � ��� ��i��i� �. �� �쮬� �� �㤥 ������� ���i�쪠
��'��i�, � ��i��i� � �㤥 ��� ���訩 ��'��. ���ਪ���, �� ��
������: as bf gh, � ��i��� a ��� ���祭�� as. ��� �� ��� ����� ᯨ᮪
(᪫����� ��'��), � ���� �����i��� ������ � ��㣫�� �㦪��: (as df gh).
2. �㭪�i� (CLEAR-INPUT) ����� ���� �����. � ���-类�� ������� �����������
NIL.
3. �㭪�i� (READ-LINE) ��� ������� � CIS ���� �� �㤥 ���⠭� ᨬ���
���室� �� ����� �冷� (). ����������� ᨬ���, �-i�'� 类�� ᪫�������� �
��i� ���⠭�� ᨬ���i� � �i �㫨 �订��i � ��i����� �浪�, ���i� .
4. �㭪�i� (READ-CHAR) ��� ����㯭�� ������� � CIS � ������� ����.
5. �㭪�i� (UNREAD-CHAR) ������� � CIS ��⠭�i� ���⠭�� ᨬ���.
6. �㭪�i� (LISTEN) ������� T �� CIS �� ���i�, � NIL �� �� �i�諨 ��
�i��� 䠩��.
7. �㭪�i� (OPEN-INPUT-FILE "") � (CLOSE-INPUT-FILE "")
������⮢������ ��� �i������ � ������� 䠩�� ��� �����.
8. �㭪�i� (OPEN-OUTPUT-FILE "") � (CLOSE-OUTPUT-FILE "")
�i����i��� �i��ਢ���� � ���ਢ���� 䠩� ��� ������ i��ଠ�i�.
�ਪ����
1. �����㢠� �i��i��� �i�� sym � 䠩�i name.
(DEFUN f (name sym) (SETQ a (READ))(SETQ c 0) (IF (EQL a sym) (INCQ c)) )
(OPEN-INPUT-FILE name) (CLOSE-INPUT-FILE name)
(LOOP c)
((NOT (LISTEN)))
2. �����㢠� 䠩� � ������� ���浪�, �� ���� ������� � �⮬���.
(DEFUN rew (in out) (PUSH (READ) temp) )
(OPEN-INPUT-FILE in) (LOOP(OPEN-OUTPUT-FILE out) ((EQL temp NIL))(SETQ temp NIL) (WRITE (POP temp))(LOOP (SPACES 1) )
((NOT (LISTEN))) (CLOSE-INPUT-FILE in)
(CLOSE-OUTPUT-FILE out) )
��������
1. ������ �㭪�i� (SRT ), 猪 ����� ⥪�⮢�� 䠩� � �������� ���i � 䠩� .
2. ������ �㭪�i� (PRNUM2 num) � (PRNUM16 num), �i �i����i��� �������
������i ����⪮�i � � ��i������� � �i�⭠���⪮���� �।�⠢����i.
3. ������㢠� �� ������ �� n � ᨬ����� y ᯨ᮪ (y yy yyy yyyy ....
yyyyyyyy. �i��i��� �i�� s � ��⠭�쮬� �������i ᯨ�� ���i���� n.
�p����� 1. �� ��������� �� ��i������
�।�⠢����� (������� � �� ��ॢ���� 10000 ��i������ ��i�). �����i���
�������, � �i������ ���� �� 15.
����i���: ������� �i���� �� 9 � ����⪮�i� ��⥬i ���� �
���i��i��� �� 9 �㬨 ��� � (�i�᭮, ��堩 � �
S = a[n]*10^n + a[n-1]*10^(n-1) + ... + a[1]*10 + a[0].S mod 9 = (a[n]*(10^n-1)+a[n] + a[n-1]*(10^(n-1)-1)+a[n-1] +
+ ... + a[1]*(10-1)+a[1] + a[0]) mod 9 � ��i�쪨 10^k - 1 �i������ �� 9, � i S mod 9 = (a[n] + ... +a[1] +a[0]) mod 9,� �ip��).
������i筮 ������� �i����� �� 15 � ��⥬i ���� �
����ᮬ 16 �㤥 ���i��i��� �� 15 �㬨 ��i� �i�⭠���⪮��� ��� �. ��
����� ��i����� � �ࠢ� ���i�� �� ��ࠤ�, �i �������筮 �����
���⢮p�� � �i�⭠���⪮�i ���, ���室��� �� ��� � �i���� �� �� 15. ���
����讪 0, � ������� � �i����� �� 15, i���� - �i.
�p����� 2. ���� � � K-i�i� ��⥬i ����
a a ...a (K<=36).
n n-1 0
����� ����讪 �i� �i����� ���� �� m.
�� K, n, m, � ����讪 �i� �i����� �� m �।�⠢������� � ����⪮�i� ��⥬i
����.
����i���: � ��⥬i ���� � �᭮��� K � �।�⠢������� � �����i
a[n]*K^n + a[n-1]*K^(n-1) + ... +a[0]*K^0.
�������� ����讪 �i� �i����� ���� �� m (����讪 �i� �i����� a �� b �����稬� �p�� a mod b):
(a[n]*K^n + a[n-1]*K^(n-1) + ... +a[0]*K^0) mod m =
� n � � n �
=� SUM a[i]*K^i� mod m = � SUM a[i]* (K^i mod m)� mod m =� i=0 � � i=0 �
��⠭�� pi��i��� �������� � ����㯭���: H�堩 K^i mod m=t, ⮤i K^i =p*m+t, � (a[i]*K^i) mod m = (a[i] * (p*m+t)) mod m = = (a[i]* p*m) mod m + (a[i]*t) mod m = = (a[i] * (K^i mod m)) mod m, �� �쮬� ��� ���i�쭨� �ᥫ b[i] �����������n n
( SUM b[i] ) mod m =( SUM b[i] mod m ) mod m.i=0 i=0
�i��i⨬� ⠪�� �祢���� �i�i��� K^i mod m =[(K^(i-1) mod m) * K] mod m, ��i�쪨 �� K^(i-1) = p*m+t, � K^(i-1) mod m = t,
K^i = p*m*K+t*K � K^i mod m = t*K mod m == [(K^(i-1) mod m)*K] mod m.
����� �쮣� ������� (��� a[i] - K-i�i ��� �):s:=0; t:=1;
for i:=0 to n do begin s:=(s+a[i]*t) mod m; t:=t*K mod m; end;
� ��i��i� S �i�� ���i�祭��
�� ������� �㤥 ���pi����� �㪠�� ����.
�p����� 3.�i�p��㢠� �i��i��� ������� � ��i������� ������ � i.
�i��i��� ���p��i� ��� p���'離� �����i ������� ��� �i�i�i������.
����i���:
cnt:=0; cnt -- �i稫쭨� ������� � ��i i.
while (i<>0) do 横� ����������� �i��i��� ࠧi�, �i���
begin �i�쪮��i ������� � i. "������" �ࠩ��
i:=(i-1) and i; �ࠢ� ������� � ��i������� ������ �.
cnt:=cnt+1;
end; �ਪ���: 110 = i
101 = i-1
------------------100 = i and (i-1)
�p����� 4. ���i����i��� 011212201220200112... �������� ⠪: ᯮ��� ������� 0, ���i� ����������� ����㯭� �i�: ��� ����ᠭ� ��⨭� �ਯ������ �ࠢ� i� ���i��� 0 �� 1, 1 �� 2, 2 �� 0, ⮡�
0 -> 01 -> 0112 -> 01121220 ->...
������ ������, 直� �� �������� N,
(0<=N<=3000000000) �������, 瘟 � ����� �� N-��� �i��i � ���i�������i.
����i���: H�堩 a(k) - k-�� 童� ���i�������i. �����ﭥ��
���i����i���, ��p������ �� ����㯭�� �p������:
a(0)=0;��
a(0)...a(2**k-1)
��p���� �ਯ��㢠��� �� �i�� ���i�������i �ࠢ� �i�� � ���i�������i, ��� �� �쮬� ������� 童� �ਯ����� ��⨭� ��i����� �� �������. ��p����
0->01->0112->01121223->...
��������, � a(k) � �㬠 ������� � ��i������� �।�⠢����i
� k.
��������� ������ �� i����i��. ��� a(0)=0 � �ࠢ������. H�堩 �p���饭��
�ࠢ������ ��� ��� a(i), 0<=i<=2^(k-1)-1 (⮡� ��� ��i� �ᥫ i, �i
᪫��������� �� �i��� �i� � k-1-�� ��i������ ��i�). ���i � ��i�������
p������i l, 2^(k-1)<=l