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
- (defvar start (readinput nil))
- ;Flat list
- (defun flatten (list)
- (cond
- ((null list) nil)
- ((atom (car list)) (cons (car list) (flatten (cdr list))))
- (t (append
- (flatten (car list))
- (flatten (cdr list))
- ))
- )
- )
- ;dolzina na vgnezdena lista
- (defun len (list)
- (cond
- ((null list) 0)
- ((atom (car list)) (+ 1 (len (cdr list))))
- (t (+ (len (car list)) (len (cdr list))))
- )
- )
- ;proverka za parnost na indeks i nivo
- (defun paren (index)
- (cond
- ((eq(mod index 2) 0)t)
- (t nil)
- )
- )
- (defun neparen (index)
- (cond
- ((eq(mod index 2) 0) nil)
- (t t)
- )
- )
- ;broenje kolku pati se pojavuva element vo lista
- (defun countIt (list el)
- (cond
- ((null list) 0)
- ((eq (car list) el) (+ 1 (countIt (cdr list) el)))
- ((listp (car list)) (+ (countIt (car list) el) (countIt (cdr list) el)))
- (t (countIt (cdr list) el))
- )
- )
- ;brisi element spored baranjeto
- (defun pomosna (el list level counter)
- (cond
- ((null list) nil)
- ((and (atom (car list)) (eq (car list) el))
- (if (and (paren (+ counter 1)) (neparen level))
- (pomosna el (cdr list) level (+ counter 1))
- (cons (car list) (pomosna el (cdr list) level (+ counter 1))) )
- )
- ((listp (car list))
- (cons
- (pomosna el (car list) (+ level 1) counter)
- (pomosna el (cdr list) level (+ counter (countIt (car list) el)))
- )
- )
- (t (cons (car list) (pomosna el (cdr list) level counter)))
- )
- )
- (defun trans (list flat rezult)
- (setq after (pomosna (car flat) list 0 0))
- (cond
- ((null flat) rezult)
- (t
- (trans after (remove (car flat) flat) after)
- )
- )
- )
- ;glavna funkcija
- (defun transformiraj (list)
- (cond
- ((null list) nil)
- (t (trans list (flatten list) '()))
- )
- )
- ;--don't change below this line
- (print (transformiraj start))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement