Advertisement
Latkoski

removemin - septemvri 2014 - prv termin

Jan 7th, 2017
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.82 KB | None | 0 0
  1. Дефинирај функција removemin која како аргумент прима листа од цели броеви и ја враќа
  2. листата добиена со отстранување на сите појавувања на минималниот елемент од листата –
  3. аргумент.
  4. а) (30 п) Да се претпостави дека листата – аргумент не содржи подлисти.
  5. Пример: (removemin '(5 1 4 2 3))(5 4 2 3)
  6.  (removemin '(5 1 4 2 1 3 2 1 1 5))(5 4 2 3 2 5)
  7. б) (35 п) Да се земе во предвид дека листата – аргумент може да содржи подлисти.
  8. Пример: (removemin '(5 ((1) 3) (4) 2 3))(5 (NIL 3) (4) 2 3)
  9.  (removemin '(5 ((1) 3) (((4)) 2) 1 (3 2 (1 (1)) 5)))(5 (NIL 3) (((4)) 2) (3 2 (NIL) 5))
  10.  
  11. (defun removemin (lista original-lista)
  12.     (cond
  13.        ((null lista) nil)
  14.        ((listp (car lista))(cons (removemin (car lista) original-lista)(removemin (cdr lista) original-lista)))
  15.        ((equal (car lista)(najdiNajmal (flatten original-lista)))(removemin (cdr lista) original-lista))
  16.        ((not(equal (car lista)(najdiNajmal(flatten original-lista))))(cons (car lista)(removemin (cdr lista) original-lista)))
  17.         )
  18.     )
  19.  
  20. (defun najdiNajmal (lista)
  21.     (cond
  22.         ((null (cdr lista))(car lista))
  23.         ((< (car lista)(cadr lista))(najdiNajmal(cons (car lista)(cddr lista))))
  24.         (t (najdiNajmal (cdr lista)))
  25.         )
  26.     )
  27.  
  28.  
  29. (defun flatten (lista)
  30.     (cond
  31.         ((null lista) nil)
  32.         ((listp (car lista))(append (flatten (car lista))(flatten (cdr lista))))
  33.         (t (append (list (car lista))(flatten (cdr lista)))
  34.         )
  35.     ))
  36.  
  37.  
  38. (print (removemin '(5((1)3)(((4))2)1(3 2(1(1))5))'(5((1)3)(((4))2)1(3 2(1(1))5))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement