36 lines
754 B
Common Lisp
36 lines
754 B
Common Lisp
;1.1
|
|
|
|
(defun F(L)
|
|
((lambda (x)
|
|
(
|
|
(cond
|
|
((null L) 0)
|
|
((> x 2) (+ (car L) (F (cdr L))))
|
|
(t x)
|
|
)
|
|
)
|
|
)(F (car L)))
|
|
)
|
|
|
|
; 1.3
|
|
|
|
;(1 2 3 4 5 7)
|
|
|
|
;3
|
|
; replace_with_zero(lst k level)=
|
|
; nil if lst is null
|
|
; 0 if lst is atom and level=k and lst is not null
|
|
; lst if lst is atom and level!=k and lst is not null
|
|
; U replace_with_zero(l_i k level+1) where l_i in lst, otherwise
|
|
|
|
(defun replace_with_zero (lst k &optional (level 0))
|
|
(cond
|
|
((null lst) nil)
|
|
((and (atom lst) (= level k)) 0)
|
|
((atom lst) lst)
|
|
(t (mapcar #'(lambda (x) (replace_with_zero x k (+ level 1))) lst))
|
|
)
|
|
)
|
|
|
|
(print (replace_with_zero '(a (1 (2 b)) (c (d))) 2))
|
|
(exit) |