Вложени списъци

Пример: (1 (2 (((3)) 4) (5)) ((6)))

  1. Да се реализира функция (count-atoms ll), която по даден списък от списъци с произволно ниво на влагане връща броят на атомите в ll.
  2. Да се реализира функция (flatten ll), която по даден списък от списъци с произволно ниво на влагане връща списък от всичките атоми на ll. Задачата да се реши с директна рекурсия и с функциите от по-висок ред apply и map.
  3. Да се реализира функция (deep-accumulate reduce base ll), която обобщава рекурсивна схема върху списък с вложения на произволно ниво, като base е едноаргументна функция, която се прилага над листата, а reduce е функция на произволен брой аргументи, които комбинира резултатите на дадено ниво.

Функции от по-висок ред над списъци

  1. Да се напише функция (scanl comb nv l), която връща списъка (nv, nv # a1, (nv # a1) # a2 , ... , (...((nv # a1) # a2) # ... )# an, където с # е означен comb
  2. Да се напише функция (scanr comb nv l), която връща списъка (nv, a1 # nv, a1 # (a2 # nv), ... ,a1 # (a2 # ... (an-1 # (an # nv)) ...), където с # е означен comb
  3. Да се напише функция (inits l), която връща списъка (() (a1) (a1 a2) ... (a1 a2 ... an))
  4. Да се напише функция (tails l), която връща списъка ((a1 a2 ... an) (a2 ... an) ... (an) ())
  5. Да се напише функция (subs l), която връща списък от всички подсписъци на l

Последно модифициране: събота, 12 ноември 2011, 17:38