Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача с функционалами 
:(
    Опции темы
annafiotika
  Дата 5.12.2011, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.12.2011

Репутация: нет
Всего: нет



Помогите пожалуйста решить зачачу!!!

На основе использования функционалов разместить точечные пары списка в порядке возростания CAR и CDR частей.
Например : ((1.11)(2.10)(3.2)) -> ((3.2)(1.11)(2.10)).

сессия на носу! программа очень нужна!
PM MAIL   Вверх
newbee
Дата 5.12.2011, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Я бы помогла, но не поняла зависимости перехода одного списка в другой.


--------------------
You're face to face
With man who sold the world
PM   Вверх
annafiotika
Дата 5.12.2011, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.12.2011

Репутация: нет
Всего: нет



Допустим это изначальный список ((1.11)(2.10)(3.2)), далее нужно умножить каждую точечную пару и в порядке возрастания написать список. То есть, 
1*11=11
2*10=20
3*2=6
Результирующий список ((3.2)(1.11)(2.10))

Буду очень благодарна, если поможешь!!!
PM MAIL   Вверх
newbee
Дата 5.12.2011, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Компилятора под рукой нет, но по идее так (я не знаю какой у тебя диалект лиспа и функция сортировки может называться по-другому):

Код

(sort '((1 . 11) (2 . 10) (3 . 2))
 (lambda (a b)
  (< (* (car a) (cdr a)) (* (car b) (cdr b)))))



--------------------
You're face to face
With man who sold the world
PM   Вверх
annafiotika
Дата 5.12.2011, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.12.2011

Репутация: нет
Всего: нет



Спасибо, но не то. Нужно с помощью функционалов это реализовать. (((
PM MAIL   Вверх
newbee
Дата 5.12.2011, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



А что такое функционал?

Добавлено через 41 секунду
Я просто далека от студенческой терминологии...


--------------------
You're face to face
With man who sold the world
PM   Вверх
annafiotika
Дата 5.12.2011, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.12.2011

Репутация: нет
Всего: нет



аппликативные функционали - apply , funcall.
отображающие функционалы - mapcar, maplist, mapcan.

PM MAIL   Вверх
newbee
Дата 5.12.2011, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Если я правильно поняла терминологию, то функционал - это просто функция высшего порядка, так их обычно называют. Sort - одна из них. Просто на map-функциях сортировку не сделать, по-моему.


--------------------
You're face to face
With man who sold the world
PM   Вверх
annafiotika
Дата 5.12.2011, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.12.2011

Репутация: нет
Всего: нет



Студент я никудышний! Спасибо большущее))
PM MAIL   Вверх
Catstail
Дата 31.1.2013, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.1.2013

Репутация: нет
Всего: нет



Вспомогательная функция

 
Код


(defun pmin (lst &optional (r (car lst)))
  (cond ((null lst) r)
        ((< (caar lst) (car r)) (pmin (cdr lst) (car lst)))
        (t (pmin (cdr lst) r))))

==> pmin



Решение задачи:

Код


(defun solve (lst)
   (vsort-p (mapcar #'(lambda (x) (list (* (car x) (cdr x)) x)) lst )))

==> solve

(solve '((1 . 11) (2 . 3) (3 . 5) (1 . 0) (6 . 1) (7 . 2)))

==> ((1 . 0) (2 . 3) (6 . 1) (1 . 11) (7 . 2) (3 . 5))


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0920 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.