> 1 <
Автор | Сообщение |
incredible1000
4 сообщений |
#4373 2011-05-25 13:46 GMT+3 часа(ов) |
Написал прогу выводящую последние n символов(т.е. функцию last).
(defun len(lst) (cond ((null lst) 0) ((+ 1 (len (cdr lst)))) ) ) (defun my-last(lst num) (cond ((< (len lst) num) NIL) ((= (len lst) num) lst) ((> (len lst) num) (my-last (cdr lst) num)) ) ) (my-last '(1 2 3)'2) Не могу написать прогу реализующую butlast(вывод первых n элементов). Вход: (my-butlast '(1 2 3 4 5)'2) Выход: (1 2) Помогите пожалуйста! |
|
ander-skirnir![]()
227 сообщений |
#4375 2011-05-25 15:33 GMT+3 часа(ов) |
butlast возвращает не первые n элементов, а все, кроме n последних.
Вот простейшее, но крайне неоптимальное по производительности, решение: (defun %butlast (list &optional (n 1)) |
|
incredible1000
4 сообщений |
#4380 2011-05-25 16:37 GMT+3 часа(ов) |
Просто мне надо реализовать ее без продвинутых функций nthcdr и reverse. только c помощью базовых car и cdr, cond, cons...
|
|
ander-skirnir![]()
227 сообщений |
#4382 2011-05-25 16:58 GMT+3 часа(ов) |
(defun %nthcdr (list n) |
|
> 1 <