Advertisement
Latkoski

transformiraj - juni 2014 - grupa 1

Jan 7th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.87 KB | None | 0 0
  1. Напишете LISP функција (transformiraj L) која на влез добива една листа L со
  2. произволна структура (може да биде составена од подлисти со произволна длабочина). Под
  3. претпоставка дека атомичните елементи на листата L се наоѓаат на длабочина 0 и секое
  4. влегување во подлиста го зголемува нивото за 1, функцијата transformiraj треба да го направи
  5. следното: да го избрише секој елемент за кој важи дека кога ќе се собере со вредноста за
  6. длабочината на која се наоѓа ќе се добие парен број (во листата има само позитивни цели
  7. броеви). При трансформацијата целосно се задржува структурата на влезната листа.
  8. Ако на пример се повика со (индексите до вредностите се однесуваат на нивото и се само за
  9. појаснување):
  10. (transformiraj '(10 20 (21 (32 82) 31 (22 (43 (74 64 94) ) ) ) (21 (22 (33) 52) ) 70) )
  11. Резултатот ќе биде:
  12. '(10(21 (32) ((43 (74 94) ) ) ) (21 (( ) 52) ) 70)
  13.  
  14.  
  15. (defun transformiraj (lista)
  16.     (pom lista 0)
  17.     )
  18.  
  19. (defun pom (lista dlabocina)
  20.     (cond
  21.         ((null lista) nil)
  22.         ((listp (car lista))(remove 'nil (cons (pom (car lista)(+ 1 dlabocina))(pom (cdr lista) dlabocina))))
  23.         ((evenp (+ (car lista) dlabocina))(pom (cdr lista) dlabocina))
  24.         ((oddp (+ (car lista) dlabocina))(cons (car lista)(pom (cdr lista) dlabocina)))
  25.         )
  26.     )
  27.  
  28. (print (transformiraj'(1 2(2(3 8)3(2(4(7 6 9))))(2(2(3)5))7)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement