Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Напишете LISP функција (transformiraj L) која на влез добива една листа L со
- произволна структура (може да биде составена од подлисти со произволна длабочина). Под
- претпоставка дека атомичните елементи на листата L се наоѓаат на длабочина 0 и секое
- влегување во подлиста го зголемува нивото за 1, функцијата transformiraj треба да го направи
- следното: да го избрише секој елемент за кој важи дека кога ќе се собере со вредноста за
- длабочината на која се наоѓа ќе се добие парен број (во листата има само позитивни цели
- броеви). При трансформацијата целосно се задржува структурата на влезната листа.
- Ако на пример се повика со (индексите до вредностите се однесуваат на нивото и се само за
- појаснување):
- (transformiraj '(10 20 (21 (32 82) 31 (22 (43 (74 64 94) ) ) ) (21 (22 (33) 52) ) 70) )
- Резултатот ќе биде:
- '(10(21 (32) ((43 (74 94) ) ) ) (21 (( ) 52) ) 70)
- (defun transformiraj (lista)
- (pom lista 0)
- )
- (defun pom (lista dlabocina)
- (cond
- ((null lista) nil)
- ((listp (car lista))(remove 'nil (cons (pom (car lista)(+ 1 dlabocina))(pom (cdr lista) dlabocina))))
- ((evenp (+ (car lista) dlabocina))(pom (cdr lista) dlabocina))
- ((oddp (+ (car lista) dlabocina))(cons (car lista)(pom (cdr lista) dlabocina)))
- )
- )
- (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