Výhodné je implementovať funkciu, ktorá nahradí n-tý prvok zoznamu. Potom túto funkciu použijeme v hlavnej funkcií a nahradíme prvok v danom riadku poľa.


; Nahradí prvok určený súradnicami x, y (stĺpec, riadok)

; Nahradí v zozname prvok st za prv. Prvý prvok má index 0.
; Pri chybnom n vráti pôvodný zoznam.

(defun nahrad_prv (n prv zoz)
 (cond ((null zoz) NIL)
       ((= n 0) (cons prv (rest zoz)))
       (T (cons (first zoz) (nahrad_prv (- n 1) prv (rest zoz))))
 )
)

Príklady:
(nahrad_prv 1 'x '(a b c)) -> (a x b)
(nahrad_prv 3 'x '(a b c)) -> (a b c)

; Prechádza riadky a nahradí v danom riadku daný prvok.
; Prvky indexujeme od 0. (0,0) = prvý stĺpec a prvý riadok.
; Pri chybnom stĺpci, alebo riadku vráti pôvodný zoznam.

; Hlavná funkcia.
(defun nahrad (st ri prv pole)
 (cond ((null pole) NIL)
       ((= ri 0) (cons (nahrad_prv st prv (first pole)) (rest pole)))
       (T (cons (first pole) (nahrad st (- ri 1) prv (rest pole))))
 )
)

Príklady:
(nahrad 1 1 'x '((1 2 3)(4 5 6)(7 8 9))) -> ((1 2 3) (4 x 5) (7 8 9))
(nahrad 9 6 'x '((1 2 3)(4 5 6)(7 8 9))) -> ((1 2 3) (4 5 6) (7 8 9))

 


Autori[ ZADANIE | AKO ZAČAŤ | RIEŠENIE ]
Posledná aktualizácia 4. 9. 2001
back  home  next