Выборка n-ых элементов из списка списков

 
0
 
LISP | Functional languages
ava
nikitaDalek | 01.10.2013, 08:19
Здравствуйте, уважаемые!
Я только начал изучать Lisp, и все дается с огромным трудом.
Пытаюсь решить задачу: "L – список простых списков. Возвратить список из N-ых элементов.", но не получается.
Выстрадал следующий код:

(defun nElOfLists(ls n)
        (if (> n 0)
            (append  (nth n (car ls)) (nElOfLists (cdr ls) n) )
        )
)

Прошу подтолкнуть в нужном направлении, понимаю, данный код ужасен и неправилен.
Comments (2)
ava
Stolzen | 01.10.2013, 08:13 #
сначала напишите функцию, которая возвращает n-й элемент из обычного списка, потом сделаете map этой функции на список списков
Т.е. что-то типа (map (lambda (xs) (nth n xs)) ls) 
ava
Catstail | 07.10.2013, 19:12 #
Есть функция nth, которая принимает два параметра: номер элемента n и список L. Она возвращает n-й элемент заданного списка L. Элементы нумеруются с нуля. Поэтому, самое правильное - использовать отображающий функционал mapcar:


(defun subl (n lst)
  (mapcar #'(lambda (x) (nth n x)) lst))

==> subl
(subl 1 '((1 2 3) (11 22 33) (111 222 333)))

==> (2 22 222)
(subl 2 '((1 2 3) (11 22 33) (111 222 333)))

==> (3 33 333)

Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit