Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
Wektory 1. Stworzenie wektorów Ø Dla stworzenia najprostrzego wektoru potrzebujemy napisać taki kod w kompilatorze: (vector) ==> ( ) (vector 1) ==> (1) (vector 1 2) ==> (1 2) Dalej, dla stworzenia wektorów będziemy wykorzystowywać funkcje MAKE-ARRAY, ona jest więcej ogólna funkcja od VECTOR. Ø Do tworzenia wektora z przypisaniem wszystkich elementów określonego znaczenia, można użyć argumentu INITIAL-ELEMENT. Naprzykład: stworzymy wektor, jaki składa się z 5 elementów, którzy równą NIL. (make-array 5 :initial-element nil) ==> #(NIL NIL NIL NIL NIL) Ø Dalej stworzymy wektor ze zmiennym rozmiarem. Dla tego urzyjmy argumentu FILL-POINTER. Naprzykład: stworzymy wektor z miejscem dla 5 elementów, ale wektor będzie wygliądać pusty, ponieważ wskaźnik zapełnienia jest równy zero: (make-array 5 :fill-pointer 0) ==> #( ) Ø Ale jeżeli potrzebukemy wektoru rozmiar jakiego będzie zwiększać w zależności od tego ile elementów wpisujemy do niego, to musimy wykorzystać argument ADJUSTABLE. (make-array 5 :fill-pointer 0 :adjustable t) ==> #()
2. Dodawanie elementów do wektorów Ø A teraz możemy dodać do naszego 5-cio elementowego, ale pustego wektoru, elementy za pomocą funkcji VECTOR-PUSH. (defparameter *x* (make-array 5 :fill-pointer 0)) Ø Żeby dodać elementy do wektora z dowolnym rozmirem (ADJUSTABLE) elementy, to musimy wykorzystać funkcje VECTOR-PUSH-EXTEND, jaka pracuje tak samo jak VECTOR-PUSH. \
3. Usunięcie elementów z wektorów Ø Za pomocą funkcji VECTOR-POP możemy zabrać element z wektoru. (vector-pop *x*) ==> C *x* ==> #(A B) (vector-pop *x*) ==> B *x* ==> #(A) (vector-pop *x*) ==> A *x* ==> #() Ø Dla usuwania elementu z wektoru, możemy wykorzystać funkcje REMOVE. Wpisujemy kod. (count 1 #(1 2 1 2 3 4)) (remove 1 #(1 2 1 2 3 4)) (setq z (remove 1 #(1 2 1 2 3 4))) ==> (2 2 3 4) 4. Wyliczanie podanych elementów w wektorze. Ø Teraz skorzystamy z funkcji COUNT, jaka może policzyć ilość podanych elementów w całym wektorze. Naprzykład: (count 1 #(1 2 1 2 3 1 2 3 4)) ==> 3 5. Wyszukiwanie elementów, za pomocą funkcji FIND. (find 1 #(2 1 2 3 2 3 4)) ==> 1 (find 10 #(1 2 1 2 3 1 2 3 4)) ==> NIL Ø Skorzystamy z imennogo parametru KEY, jaki będzie pozwalać nam : (find ‘a #((a 10) (b 20) (a 30) (b 40)) :key #’first) ==> (A 10) (find ‘a #((a 10) (b 20) (a 30) (b 40)) :key #’first :from-end t) ==> (A 30) Ø Funkcja POSITION, jaka wskazuje na pozycje szukanego elementu: (position 1 #(1 2 1 2 3 1 2 3 4)) ==> 0 6. Porównywanie elementów. Dla poruwnania elementów skorzystamy funkcjej COUNT i dodamy do niej argument TEST: (count "foo" #("foo" "bar" "baz") :test #'string=) ==> 1 TEST wykorzystowują dla poruwnania każdego elementu.
7. Sortówanie elementów. Funkcja sortuwania SORT: (sort (vector "1" "3" "2") #'string<) ==> („1” „2” „3”) (sort (vector "audi" "nissan" "saab" "jaguar" "ford" "bmw" "toyota" "porshe" "mercedes-benz") #'string<) ==> #("audi" "bmw" "ford" "jaguar" "mercedes-benz" "nissan" "porshe" "saab" "toyota") 8. Odwracanie elementów Funkcja odwracanie REVERSE: (reverse '(1 2 3 4)) ==> (4 3 2 1) (reverse '(1 (a b) (c d) 4)) ==> (4 (c d) (a b) 1) Tablicy 1. Stworzenie tablicy: (setq array (make-array '(4 4) :initial-element 2)) ==> ((2 2 2 2) (2 2 2 2)(2 2 2 2)(2 2 2 2)) Aby utworzyć talbicę asocjacyną potrzebno użyć funkcji pairlis. (setq alist (pairlis '(a b c) '(1 2 3))) ==> ((a . 1) (b . 2) (c . 3))
2. Sortowanie tablicy: (defun sort-list (x) (let ((n (length x)) (m nil) (r nil)) (dotimes (i n r) (setq m (apply 'min x)) (setq r (append r (list m))) (setq x (remove m x)))))
3. Zamiana element w tablice: ... |
Menu
|