@@ -19,101 +19,91 @@ \section{СПОСОБ 1: СПИСКИ}
1919Создание списка, состоящего из двухэлементных списков.
2020
2121\ begin{lstlisting}
22- (defun list_merge_cc (countries cities)
23- (cond
24- ((null countries) Nil)
25- ((null cities) Nil)
26- (T (cons
27- (list (car countries) (car cities))
28- (list_merge_cc (cdr countries) (cdr cities))
29- ))
30- )
22+ (defun list_merge (countries cities)
23+ (mapcar #'(lambda (ctr cty) (list ctr cty)) countries cities)
3124)
3225
33- (setq list_merged_cc (list_merge_cc countries cities))
26+ (setq list_cc (list_merge countries cities))
3427\end {lstlisting }
3528
3629Поиск страны по столице в списке из двухэлементных списков.
3730
3831\ begin{lstlisting}
39- (defun list_find_country (list_cc city)
40- (cond
41- ((null list_cc) Nil)
42- ((equal (cadar list_cc) city) (caar list_cc))
43- (T (list_find_country (cdr list_cc) city))
32+ (defun list_country (list_cc city)
33+ (reduce #'(lambda (a b) (or a b))
34+ (mapcar #'(lambda (el)
35+ (and (equal (cadr el) city) (car el))
36+ ) list_cc
37+ )
4438 )
4539)
4640
47- (list_find_country list_merged_cc 'Moscow ) ;;; Russia
48- (list_find_country list_merged_cc 'Minsk ) ;;; Belarus
49- (list_find_country list_merged_cc 'Sidney ) ;;; Nil
41+ (list_country list_cc 'London ) ;;; GB
42+ (list_country list_cc 'NotExist ) ;;; Nil
43+ (list_country list_cc 'Moscow ) ;;; Russia
5044\end {lstlisting }
5145
5246Поиск столицы по стране в списке из двухэлементных списков.
5347
5448\ begin{lstlisting}
55- (defun list_find_city (list_cc country)
56- (cond
57- ((null list_cc) Nil)
58- ((equal (caar list_cc) country) (cadar list_cc))
59- (T (list_find_city (cdr list_cc) country))
49+ (defun list_city (list_cc country)
50+ (reduce #'(lambda (a b) (or a b))
51+ (mapcar #'(lambda (el)
52+ (and (equal (car el) country) (cadr el))
53+ ) list_cc
54+ )
6055 )
6156)
6257
63- (list_find_city list_merged_cc 'Russia ) ;;; Moscow
64- (list_find_city list_merged_cc 'Belarus ) ;;; Minsk
65- (list_find_city list_merged_cc 'Australia ) ;;; Nil
58+ (list_city list_cc 'GB ) ;;; London
59+ (list_city list_cc 'NotExist ) ;;; Nil
60+ (list_city list_cc 'Russia ) ;;; Moscow
6661\end {lstlisting }
6762
6863\section {СПОСОБ 2: ТОЧЕЧНЫЕ ПАРЫ }
6964
7065Создание списка, состоящего из точечных пар.
7166
7267\ begin{lstlisting}
73- (defun cons_merge_cc (countries cities)
74- (cond
75- ((null countries) Nil)
76- ((null cities) Nil)
77- (T (cons
78- (cons (car countries) (car cities))
79- (cons_merge_cc (cdr countries) (cdr cities))
80- ))
81- )
68+ (defun cons_merge (countries cities)
69+ (mapcar #'(lambda (ctr cty) (cons ctr cty)) countries cities)
8270)
8371
84- (setq cons_merged_cc (cons_merge_cc countries cities))
72+ (setq cons_cc (cons_merge countries cities))
8573\end {lstlisting }
8674
8775Поиск страны по столице в списке из двухэлементных списков.
8876
8977\ begin{lstlisting}
90- (defun cons_find_country (list_cc city)
91- (cond
92- ((null list_cc) Nil)
93- ((equal (cdar list_cc) city) (caar list_cc))
94- (T (cons_find_country (cdr list_cc) city))
78+ (defun cons_country (cons_cc city)
79+ (reduce #'(lambda (a b) (or a b))
80+ (mapcar #'(lambda (el)
81+ (and (equal (cdr el) city) (car el))
82+ ) cons_cc
83+ )
9584 )
9685)
9786
98- (cons_find_country cons_merged_cc 'Moscow ) ;;; Russia
99- (cons_find_country cons_merged_cc 'Minsk ) ;;; Belarus
100- (cons_find_country cons_merged_cc 'Sidney ) ;;; Nil
87+ (cons_country cons_cc 'London ) ;;; GB
88+ (cons_country cons_cc 'NotExist ) ;;; Nil
89+ (cons_country cons_cc 'Moscow ) ;;; Russia
10190\end {lstlisting }
10291
10392Поиск столицы по стране в списке из двухэлементных списков.
10493
10594\ begin{lstlisting}
106- (defun cons_find_city (list_cc country)
107- (cond
108- ((null list_cc) Nil)
109- ((equal (caar list_cc) country) (cdar list_cc))
110- (T (cons_find_city (cdr list_cc) country))
95+ (defun cons_city (cons_cc country)
96+ (reduce #'(lambda (a b) (or a b))
97+ (mapcar #'(lambda (el)
98+ (and (equal (car el) country) (cdr el))
99+ ) cons_cc
100+ )
111101 )
112102)
113103
114- (cons_find_city cons_merged_cc 'Russia ) ;;; Moscow
115- (cons_find_city cons_merged_cc 'Belarus ) ;;; Minsk
116- (cons_find_city cons_merged_cc 'Australia ) ;;; Nil
104+ (cons_city cons_cc 'GB ) ;;; London
105+ (cons_city cons_cc 'NotExist ) ;;; Nil
106+ (cons_city cons_cc 'Russia ) ;;; Moscow
117107\end {lstlisting }
118108
119109\section {ВЫВОДЫ }
0 commit comments