> 1 <

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

phlamey

Members


Статус

2 сообщений

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

#5979   2012-04-17 14:42 GMT+3 часа(ов)      
Никак не могу ничего придумать по этому поводу. Помогите пожалуйста.
Задача:
На основе использования функционалов разработать функцию, которая будет распологать точечные пары списка в порядке возрастания произведения CAR и CDR частей.

phlamey

Members


Статус

2 сообщений

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

#5987   2012-04-18 00:44 GMT+3 часа(ов)      
вот сделал сортировку списка
(defun SORT (list)
(if list
((lambda (elem result)
(cond
((null result) (cons elem nil))
((= elem (car result)) result)
((> elem (car result)) (cons elem result))
(T (cons (car result) (SORT (cons elem (cdr result)))))))
(car list)
(SORT (cdr list)))))

а вот как добавить сюда функционал и сортировку точечных пар?

bokunopico

Members


Статус

54 сообщений

Где: Russia Нижний Новгород
Род занятий:
Возраст:

#5989   2012-04-18 00:59 GMT+3 часа(ов)      
> вот сделал сортировку списка
Мне почему-то кажется, что это сделал VH. Ну, если ты действительно сам написал, то тебе не составит труда переправить sort, чтобы она принимала предикат и функцию-ключ:
(defun f (list)
(stable-sort list #'< :key #'(lambda (x) (* (car x) (cdr x)))))
 
CL-USER> (f '((1 . 3) (2 . 1) (4 . 8) (2 . 4)))
((2 . 1) (1 . 3) (2 . 4) (4 . 8))
> 1 <


Онлайн :

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