Možným riešením je implementovať funkciu vracajúcu zoznam bez posledného prvku (podobne ako v príklade except ). A výsledný zoznam zostaviť v hlavnej funkcií pomocou nej a funkcií first, last, append a cons.


; Vráti zoznam bez posledného prvku.

(defun except (zoz)
 (cond ((null zoz) NIL)
       ((null (rest zoz)) NIL)
       (T (cons (first zoz) (except (rest zoz))))
 )
)

; Hlavná funkcia.
; Predpokladám, že zoznam je neprázdny, a má aspoň 2 prvky, ak by to tak
; nemalo byť, treba to v vymenfl ošetriť.

(defun vymenfl (zoz)
 (cons (first (last zoz)) (append (except (rest zoz)) (cons (first zoz) NIL)))
)

; Príklady:
(vymenfl '(1 2 3 4 5)) ; -> (5 2 3 4 1)
(vymenfl '(1 2))       ; -> (2 1)

 


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