Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; read input
- (defun read-input(p)
- (cond
- ((null p) nil)
- (T (cons p (read-input (read nil nil))))
- )
- )
- (defun readinput(i)
- (cdr (read-input 1))
- )
- ;--don't change above this line
- ; write your function here
- ;dolzina na lista so podlisti
- (defun dolzina(lista)
- (cond
- ((null lista) 0)
- ((listp(car lista))(+ (dolzina (cdr lista))(dolzina (car lista))))
- (T(+ (dolzina (cdr lista)) 1))
- )
- )
- (defun transformiraj(lista)
- (pom 1 lista 0 (izramni lista))
- )
- ;kolku isti elementi ima vo edna lista
- (defun kolku(lista num br)
- (cond
- ((null lista) br)
- ((eq (car lista) num) (kolku (cdr lista) num (+ 1 br)))
- (T(kolku (cdr lista) num br))
- )
- )
- ;dali e paren broj na pojavuvanja na nekoj broj
- (defun paren(lista num)
- (cond
- ((eq (mod (kolku lista num 0) 2) 0) 1)
- (T 0)
- )
- )
- ;mi izdvojuva niza do opredelen index
- (defun izdvoj(lista br n mem)
- (cond
- ((eq n br) mem)
- (T (izdvoj (cdr lista) (+ 1 br) n (append mem (list (car lista)))))
- )
- )
- ;ja izramnuva listata
- (defun izramni(lista)
- (cond
- ((null lista) NIL)
- ((listp (car lista)) (append (izramni(car lista)) (izramni (cdr lista))))
- (T (append (list (car lista)) (izramni (cdr lista))))
- )
- )
- ;glavnata funkcija
- (defun pom(ind lista br iz)
- (cond
- ((null lista) NIL)
- ((listp (car lista)) (cons (pom ind (car lista) (+ 1 br) iz) (pom (+(dolzina (car lista)) ind) (cdr lista) br iz)))
- ((and (eq (paren (izdvoj iz 0 ind '()) (car lista)) 1) (eq(mod br 2)1)) (pom (+ 1 ind)(cdr lista) br iz))
- (T (cons (car lista) (pom (+ 1 ind) (cdr lista) br iz)))
- )
- )
- ;--don't change below this line
- (print (transformiraj (readinput nil)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement