Ak je pole korektne reprezentované, stačí spočítať jeho riadky a na zistenie počtu stĺpcov stačí spočítať prvky prvého riadku (počet stĺpcov).
; Vychádzame z toho, že pole je korektne definované a prvý
; riadok má toľko prvkov ako všetky. A predpokladáme, že ak má
; 0 riadkov a 0 stĺpcov reprezentuje sa prázdnym zoznamom.
; Takéto pole (()) nepovažujeme za korektné, ale možno funkciu rozmerpola
; upraviť tak, aby aj pre takéto pole vrátila (0 0).
; Počet prvkov zoznamu
(defun pocet (zoz)
(cond ((null zoz) 0)
(T (+ 1 (pocet (rest zoz))))
)
)
; Hlavná funkcia.
; Vráti (riadky stĺpce).
(defun rozmerpola (pole)
(cond ((null pole) (list 0 0))
(T (list (pocet pole) (pocet (first pole))))
)
)
Príklady:
(rozmerpola '() ) -> (0 0)
(rozmerpola '((1 2 3)(4 5 6))) -> (2 3)