> 1 <

Автор Сообщение

Яков Замир Кацман

Members


Статус

38 сообщений

Где: France
Род занятий:
Возраст:

#7635   2015-05-14 23:45 GMT+3 часа(ов)      
Из Бержа (теория Графов) взял задачу о Лидере.
Но не могу вывести промежуточные результаты.

Как это сделать?

(setq a'((1 0 2 2 1) (2 1 1 0 0) (0 1 1 2 2) (0 2 0 1 1) (1 2 0 1 1)))
(defun make-counter ()
(let ((x -1))
(lambda () (setq x (+ x 1)))
)
)
(setq mc (make-counter))
 
(defun leader (a m)
(if (> 10 (funcall mc))
(mapcar #'(lambda (x)
(apply #'+ (mapcar #'* (leader a m) x))) a))
)
)
(leader a (list nil))



В целом из матрицы получается вектор и умножается на матрицу что бы получить по сложении вектор. Таким образом мы выделяем лидера.
Все просто. Как сделать принт результатам?


ниже, без рекурсионный урезанный уверенно работающий вариант.

CL-USER 19 : 4 > (setq a'((1 0 2 2 1) (2 1 1 0 0) (0 1 1 2 2) (0 2 0 1 1) (1 2 0 1 1)))
 
((1 0 2 2 1) (2 1 1 0 0) (0 1 1 2 2) (0 2 0 1 1) (1 2 0 1 1))
 
CL-USER 20 : 4 > (defun lider_0 (a)
(mapcar #'(lambda (x) (apply #'+ x)) a))
LIDER_0
 
CL-USER 21 : 4 > (defun lider (a) (mapcar #'(lambda (x)
(apply #'+ (mapcar #'* (lider_0 a) x))) a))
LIDER
 
CL-USER 22 : 4 > (lider a)
(31 22 28 17 23)
 
CL-USER 23 : 4 >

отредактировал(а) Яков Замир Кацман: 2015-05-15 00:02 GMT+3 часа(ов)
Море литературы по Лисп-у и смежным технологиям.
> 1 <


Онлайн :

0 пользователь(ей), 13 гость(ей) :




Реклама на сайте: