Advertisement
Latkoski

посебни листи за секое ниво

Jan 12th, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.70 KB | None | 0 0
  1. (defun listaNivoa (lista nivo)
  2.     (cond
  3.     ((null lista) nil)
  4.     ((listp (car lista))(cons (listaNivoa (car lista)(+ 1 nivo))(listaNivoa (cdr lista) nivo)))
  5.     (t (cons nivo (listaNivoa (cdr lista) nivo)))
  6.     ))
  7.  
  8. (defun mnozestvo (lista)
  9.     (cond
  10.     ((null lista) nil)
  11.     (t (cons (car (flatten lista))(mnozestvo (remove (car (flatten lista))(cdr (flatten lista))))))
  12.     ))
  13.  
  14. (defun flatten (lista)
  15.     (cond
  16.         ((null lista) nil)
  17.         ((listp (car lista))(append (flatten (car lista))(flatten (cdr lista))))
  18.         (t (append (list (car lista))(flatten (cdr lista))))
  19.        
  20.         )
  21.     )
  22. (defun nivoa (lista)
  23.     (mnozestvo (listaNivoa lista 0))
  24.     )
  25.  
  26. (defun soPodnivoa (lista nivo brojac pomosna)
  27.     (cond
  28.         ((null lista) pomosna)
  29.         ((equal nivo 0) lista)
  30.         ((and (equal nivo (+ 1 brojac))(listp (car lista)))(soPodnivoa (cdr lista) nivo brojac(append (car lista) pomosna)))
  31.         ((listp (car lista))(append (soPodnivoa (car lista) nivo (+ 1 brojac) pomosna)(soPodnivoa (cdr lista) nivo brojac pomosna)))
  32.         (t (soPodnivoa (cdr lista) nivo brojac pomosna))
  33.         )
  34.     )
  35.  
  36. (defun bezPodnivoa (lista)
  37.     (cond
  38.         ((null lista) nil)
  39.         ((listp (car lista))(bezPodnivoa (cdr lista)))
  40.         (t (cons (car lista)(bezPodnivoa (cdr lista))))
  41.         )
  42.     )
  43.  
  44. (defun oddeleni (lista nivo)
  45.     (bezPodnivoa (soPodnivoa lista nivo 0 nil))
  46.     )
  47.  
  48. (defun predfinal (lista nivoa)
  49.     (cond
  50.         ((null nivoa) nil)
  51.         (t (append (list(oddeleni lista (car nivoa)))(predfinal lista (cdr nivoa))))
  52.         )
  53.     )
  54. (defun final (lista)
  55.     (predfinal lista (nivoa lista))
  56.     )
  57.  
  58.  
  59.  
  60.  
  61. (print (final '(1 1 (2 2 (3 3)4 4))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement