Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задаxа на языке Lisp 
:(
    Опции темы
dema2810
Дата 27.12.2011, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дан массив из 15 вещественных чисел.Если минимальный элемент массива находится на 2 месте, а максимальный - на 1 месте массива, то все элементы массива уменьшить в 2 раза.

 Мы только проходили такие процедуры как: DEFUN,CAR,CDR,NULL,COND.
 помогите в решение плиз, очень нужна задачка последний зачет остался((
 заранее благодарен.
PM MAIL   Вверх
newbee
Дата 27.12.2011, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


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

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



Код

(defun magic-list (list)
 (if (and
      (= (first list) (apply 'max list))
      (= (second list) (apply 'min list)))
  (mapcar (lambda (x) (/ x 2)) list)
  list))
Только я использовала не массив, а список.

Добавлено через 2 минуты и 10 секунд
В целях оптимизации стоит написать так, чтобы минимум и максимум находились за один проход списка, но, думаю, ты не станешь этого делать...


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


Бревно
**


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

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



Цитата(dema2810 @  27.12.2011,  11:51 Найти цитируемый пост)
 Мы только проходили такие процедуры как: DEFUN,CAR,CDR,NULL,COND.
Фак. Прогрлядела этот момент. Тогда, чтобы мое решение тебе подошло, нужно вручную реализовать first, second, apply и mapcar и отказаться от lambda в пользу отдельной функции деления пополам... У меня есть эти реализации, чуть позже поищу, дам. Может кто раньше выложит свою решение.



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


Бревно
**


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

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



Я сейчас посмотрела, дописать необходимые для моей реализации функции только на перечисленных тобой "процедурах" не получится, нужно решение задачи по-другому разворачивать. Сейчас может быть еще какие-нибудь лисперы подтянутся, сделают... Ну или мой вариант в крайнем случае можешь сдать... Типа сам еще несколько функций выучил )


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


Новичок



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

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



Цитата(newbee @ 27.12.2011,  13:43)
Я сейчас посмотрела, дописать необходимые для моей реализации функции только на перечисленных тобой "процедурах" не получится, нужно решение задачи по-другому разворачивать. Сейчас может быть еще какие-нибудь лисперы подтянутся, сделают... Ну или мой вариант в крайнем случае можешь сдать... Типа сам еще несколько функций выучил )

был такой вариант препод послал меня вмсесте с ним)

Это сообщение отредактировал(а) dema2810 - 27.12.2011, 13:52
PM MAIL   Вверх
newbee
Дата 27.12.2011, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


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

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



Эээх... С тебя печенька!

Код

(defun max-in-list (list &optional max)
 "Return maximal field in the list"
 (cond
  (list
   (max-in-list (cdr list)
                (cond
                 ((or (not max)
                      (> (car list) max))
                  (car list))
                 (t max))))
  (t max)))

(defun min-in-list (list &optional min)
 "Return minimal field in the list"
 (cond
  (list
   (min-in-list (cdr list)
                (cond
                 ((or (not min)
                      (< (car list) min))
                  (car list))
                 (t min))))
  (t min)))

(defun /2 (list)
 (cond
  (list (cons (/ (car list) 2) (/2 (cdr list))))))

(defun my-first (x)
 (car x))

(defun my-second (x)
 (car (cdr x)))

(defun magic-list (list)
 (if (and
      (= (my-first list) (max-in-list list))
      (= (my-second list) (min-in-list list)))
  (/2 list)
  list))



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


Новичок



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

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



ПАсибаааааааааааааааааааааааааааааа smile

Добавлено @ 14:48
(magic-list '(15 7 10 9 8 ))   вожу в консуле
ошибка: слишком мало аргументов smile 


Это сообщение отредактировал(а) dema2810 - 27.12.2011, 14:48
PM MAIL   Вверх
newbee
Дата 27.12.2011, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


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

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



Мммм а какой у тебя лисп? В Common Lisp все работает, только что проверила: (15/2 7/2 5 9/2 4)


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


Новичок



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

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



а дай плиз ссылочку на лис как у тя мож и правда у меня левый
PM MAIL   Вверх
newbee
Дата 27.12.2011, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


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

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



http://www.sbcl.org/platform-table.html побробуй это.


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


Опытный
**


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

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



Цитата(newbee @ 27.12.2011,  14:14)
Эээх... С тебя печенька!

Код

...

эй, так нечестно! у тебя кроме упомянутого набора еще '( or not > < / = )


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
newbee
Дата 28.12.2011, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


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

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



Цитата(k0rvin @  28.12.2011,  14:33 Найти цитируемый пост)
эй, так нечестно! у тебя кроме упомянутого набора еще '( or not > < / = ) 
Ждем твоего варианта без использования функций сравнения и деления )



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


Опытный
**


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

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



Цитата(newbee @ 28.12.2011,  13:38)
Ждем твоего варианта без использования функций сравнения и деления )

к сожалению, указанного автором набора недостаточно, чтобы решить данную задачу, так что не дождетесь =)


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

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

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


 




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


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

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