Advertisement
Guest User

Untitled

a guest
Jan 12th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; read input
  2.  
  3. (defun read-input(p)
  4. (cond
  5.     ((null p) nil)
  6.     (T (cons p (read-input (read nil nil))))
  7. )
  8. )
  9.  
  10. (defun readinput(i)
  11.     (cdr (read-input 1))
  12. )  
  13. ;--don't change above this line
  14.  
  15.  
  16. ; write your function here
  17.  
  18.  
  19.  
  20. ;http://pastebin.com/5SmCzPnh drugo resenie so pomosna lista
  21.  
  22. (defun izdvoj(lista start end)
  23.     (brisiNIL (pomosna lista start end 1))
  24. )
  25.  
  26. (defun atomi(lista)
  27.     (cond
  28.         ((null lista) nil)
  29.         ((listp (car lista)) (append (atomi (car lista)) (atomi (cdr lista))))
  30.         (T (cons (car lista) (atomi (cdr lista))))
  31.         )
  32.     )
  33.  
  34. (defun broi (lista)
  35.     (cond
  36.         ((null lista) 0)
  37.         ((listp (car lista)) (+ (broi (car lista)) (broi (cdr lista))))
  38.         (T (+ 1 (broi (cdr lista))))
  39.         )
  40.     )
  41.  
  42. (defun pomosna (lista start end mom)
  43.     (cond
  44.         ((null lista) nil)
  45.         ((listp (car lista))
  46.              (cons (pomosna (car lista) start end mom) (pomosna (cdr lista) start end (+ mom (broi (car lista))))))
  47.         ((and (atom (car lista)) (>= mom start) (<= mom end))
  48.              (cons (car lista) (pomosna (cdr lista) start end (+ mom 1))))
  49.         (T (pomosna (cdr lista) start end (+ 1 mom)))
  50.         )
  51.     )
  52.  
  53.  
  54. (defun dolzina (lista)
  55.     (cond
  56.         ((null lista) 0)
  57.         ((listp (car lista)) (+ (dolzina (car lista)) (dolzina (cdr lista))))
  58.         (T (+ 1 (dolzina (cdr lista))))
  59.         )
  60.     )
  61.  
  62. (defun brisiNIL (lista)
  63.     (cond
  64.         ((null lista) nil)
  65.         ((and (listp (car lista)) (eq 0 (dolzina (car lista))))
  66.             (brisiNIL (cdr lista)))
  67.         ((listp (car lista)) (cons (brisiNIL (car lista)) (brisiNIL (cdr lista))))
  68.         (T (cons (car lista) (brisiNIL (cdr lista))))
  69.         )
  70.     )
  71.  
  72.  
  73. ;--don't change below this line
  74. (setq x (readinput nil))
  75. (setq l  (car x))
  76. (setq start (cadr  x))
  77. (setq end (caddr  x))
  78. (print (izdvoj l start end))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement