Differences
This shows you the differences between two versions of the page.
jui:cviko5 [2011/08/16 22:33] |
jui:cviko5 [2011/08/16 22:33] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== JUI - 5. cviceni ====== | ||
+ | ===== POle ===== | ||
+ | |||
+ | * klasicky - vytvoreni - ''make-array'', | ||
+ | |||
+ | <code lisp> | ||
+ | ;;3-rozmerne pole s dim = 2x4x6 | ||
+ | (setf pole (make-array '(2 4 6) :initial-element nil )) | ||
+ | |||
+ | ;;pristup k prvku | ||
+ | (aref pole 0 2 5) ;vypise nil - nic jsme tam nezaradili | ||
+ | |||
+ | ;;prirazeni | ||
+ | (setf (aref pole 0 2 5) '(1 3) ) | ||
+ | |||
+ | </code> | ||
+ | ===== struktury ===== | ||
+ | <code lisp> | ||
+ | (defstruct Zaznam | ||
+ | (hodnota (progn (princ "Zadej cislo "))) | ||
+ | (levy nil) | ||
+ | pravy | ||
+ | ) | ||
+ | |||
+ | ;;vytvoreni instance | ||
+ | (setf z (make-zaznam)) ; otaze se na jmeno | ||
+ | |||
+ | ;;prirazeni hodnoty | ||
+ | (setf (zaznam-levy z)) | ||
+ | </code> | ||
+ | |||
+ | ===== hashovaci tabulka ===== | ||
+ | * dvojice <klic, hodnota> | ||
+ | * vyhoda: rychle hledani v tabulce) | ||
+ | |||
+ | <code lisp> | ||
+ | ;;vytvoreni; make-hash-table | ||
+ | (setf ht (make-hash-table)) | ||
+ | |||
+ | ;;pristup k prvkum: gethash | ||
+ | |||
+ | (gethash klic ht) - hashuje podle cehokoliv | ||
+ | ;;neexistuje - vraci nil | ||
+ | |||
+ | (setf (gethash 'klic ht) 10) | ||
+ | |||
+ | ;;odstraneni | ||
+ | (remhash 'klic ht) | ||
+ | |||
+ | |||
+ | ;;prochazeni hash tabulkou | ||
+ | maphash funke tabulka - ma 2 parametry: klic, hodnota | ||
+ | |||
+ | ;;pr. vypsani prvku tabulky | ||
+ | (maphash #'(lambda (k h) | ||
+ | (format t "Klic: ~A hodnota: ~A ~%" k h) | ||
+ | ) | ||
+ | ht | ||
+ | ) | ||
+ | </code> | ||
+ | |||
+ | <code lisp> | ||
+ | ;; pomoci hashovaci tabulky spocete cetnost prvku v seznamu | ||
+ | (defun spocti-cetnosti (seznam) | ||
+ | (let (ht) | ||
+ | (setf ht (make-hash-table)) | ||
+ | (mapcar #'(lambda (a) | ||
+ | (setf (gethash a ht) (if (gethash a ht) (+ 1 (gethash a ht)) 1)) | ||
+ | ) | ||
+ | seznam | ||
+ | ) | ||
+ | (maphash #'(lambda (k h) | ||
+ | (format t "Prvek ~A ma cetnost ~A ~%" k h) | ||
+ | ) | ||
+ | ht | ||
+ | ) | ||
+ | ) | ||
+ | ) | ||
+ | |||
+ | |||
+ | ;;mame orientovany acyklicky graf reprezentovany seznamem | ||
+ | ( (a b c) (b c d) (c d) (d)) | ||
+ | ;;zjistit, do jakych uzlu vede cesta | ||
+ | |||
+ | |||
+ | </code> | ||