Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 12
1

Задача на языке LSP

22.12.2011, 23:36. Просмотров 1265. Ответов 7
Метки нет (Все метки)


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

Заранее благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2011, 23:36
Ответы с готовыми решениями:

Подключение Common.lsp
Доброго времени суток, хотелось бы узнать как решить проблему следующего характера: Для работы с...

Почему просит загрузить приложение в AutoCAD во время выполнения .lsp?
Почему Автокад просит загрузить другое приложение в то время, как выполняется это? Такое появилось...

LINQ и LSP
Основа вопроса: хабр http://habrahabr.ru/post/191770/ из работ автора оригинальной статьи...

Не запускается .lsp скрипт
Здравствуйте! У меня возникла проблема с Autocad 2013, а точнее, с запуском lsp скрипта. Не знаю...

7
defun
602 / 616 / 44
Регистрация: 30.04.2011
Сообщений: 702
23.12.2011, 08:48 2
Lisp
1
2
3
4
5
6
7
8
9
10
CL-USER> (defun f (l)
           (if (and (= (first l) (apply #'max l))
                    (= (second l) (apply #'min l)))
               (mapcar #'(lambda (x) (/ x 2.0)) l)
               l))
F
CL-USER> (f '(15 3 4 5 11 12))
(7.5 1.5 2.0 2.5 5.5 6.0)
CL-USER> (f '(3 15 4 5 11 12))
(3 15 4 5 11 12)
Добавлено через 8 минут
если не вход подаётся вектор типа #(1 2 3), то можно
Lisp
1
2
CL-USER> CL-USER> (coerce #(1 2 3 4 5) 'list)
(1 2 3 4 5)
а обратно
Lisp
1
2
CL-USER> (coerce '(1 2 3 4 5) 'vector)
#(1 2 3 4 5)
по той причине, что
Lisp
1
(apply #'max arg)
работает только для списков.
... или я про векторы чего-то подзабыл))

Добавлено через 32 минуты
или так
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CL-USER> (defun f (obj)
           (flet ((test (obj)
                    (and (= (first obj) (apply #' max obj))
                         (= (second obj) (apply #' min obj))))
                  (mapping (obj) (mapcar #'(lambda (x) (/ x 2.0)) obj)))
             (let ((obj-l (coerce obj 'list)))
               (if (typep obj 'vector)
                   (if (test obj-l) (coerce (mapping obj-l) 'vector)
                       (coerce obj-l 'vector))
                   (if (test obj) (mapping  obj) obj)))))
 
CL-USER> (f '(15 3 4 5 11 12))
(7.5 1.5 2.0 2.5 5.5 6.0)
CL-USER> (f #(15 3 4 5 11 12))
#(7.5 1.5 2.0 2.5 5.5 6.0)
CL-USER> (f '(3 15 4 5 11 12))
(3 15 4 5 11 12)
CL-USER> (f #(3 15 4 5 11 12))
#(3 15 4 5 11 12)
0
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 12
23.12.2011, 18:47  [ТС] 3
спасибо большое, но мы только проходили такие процедуры как: DEFUN,CAR,CDR,NULL,COND
и я боюсь если я в таком виде предоставлю препод не поверит(
если можно напишите пожалуйста задачу на этих процедурах.

Спасибо.
0
defun
602 / 616 / 44
Регистрация: 30.04.2011
Сообщений: 702
23.12.2011, 19:41 4
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CL-USER> (defun max- (l)
           (if (null (cdr l)) (car l)
               (if (> (car l) (second l))
                   (max- (cons (car l) (cddr l)))
                   (max- (cdr l)))))
 
CL-USER> (defun min- (l)
           (if (null (cdr l)) (car l)
               (if (< (car l) (second l))
                   (min- (cons (car l) (cddr l)))
                   (min- (cdr l)))))
 
CL-USER> (defun f (l pred)
           (if (null l) ()
               (if pred
                   (cons (/ (car l) 2.0)
                         (f (cdr l) t)) l)))
 
CL-USER> (defun fun (l)
           (f l (and (= (first l) (max- l))
                        (= (second l) (min- l)))))
 
CL-USER> (fun '(15 3 4 5 11 12))
(7.5 1.5 2.0 2.5 5.5 6.0)
CL-USER> (fun '(3 15 4 5 11 12))
(3 15 4 5 11 12)
Добавлено через 1 минуту
ну а векторов касаться не будем, раз вы
Цитата Сообщение от dema2810 Посмотреть сообщение
только проходили такие процедуры как: DEFUN,CAR,CDR,NULL,COND
Добавлено через 7 минут
min- и max- дублирующий код, переписываем, а преподу скажешь, что заглянул немного вперёд и про funcall прочитал

Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(defun max-min (l pred)
           (if (null (cdr l)) (car l)
               (if (funcall pred  (car l) (second l))
                   (max-min (cons (car l) (cddr l)) pred)
                   (max-min (cdr l) pred))))
 
(defun f (l pred)
           (if (null l) ()
               (if pred
                   (cons (/ (car l) 2.0)
                         (f (cdr l) t)) l)))
 
(defun fun (l)
           (f l (and (= (first l) (max-min l #'>))
                        (= (second l) (max-min l #'<)))))
1
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 12
24.12.2011, 16:54  [ТС] 5
спасибо огромное)
можно еще один вопрос что такое pred?) и почему нигде не используется функция Lst(

Добавлено через 19 минут
(defun max-min (l pred)
max-min- это назавание функции??
(l pred) не знаю что(
0
defun
602 / 616 / 44
Регистрация: 30.04.2011
Сообщений: 702
24.12.2011, 17:54 6
Цитата Сообщение от dema2810 Посмотреть сообщение
(l pred) не знаю что(
- список параметров)
0
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 12
25.12.2011, 17:07  [ТС] 7
Цитата Сообщение от transformator.t Посмотреть сообщение
- список параметров)
т.е. вместо (1 pred) я могу написать что угодно?
0
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 12
27.12.2011, 00:30  [ТС] 8
no function definition: FIRST
консоль выдает это((

(defun max-min (l pred)
(if (null (cdr l)) (car l)
(if (funcall pred (car l) (second l))
(max-min (cons (car l) (cddr l)) pred)
(max-min (cdr l) pred))))

(defun f (l pred)
(if (null l) ()
(if pred
(cons (/ (car l) 2.0)
(f (cdr l) t)) l)))

(defun fun (l)
(f l (and (= (first l) (max-min l #'>))
(= (second l) (max-min l #'<)))))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2011, 00:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Установка Secret Net LSP
Помогите с установкой Secret net lsp. Выходит ошибка

Задача на языке с++
Ввести с клавиатуры целое число. Если число равно 1, то в заданных массивах Р(K), Q(L) и S(M)...

задача на языке Си
программа запрашивает ввод с терминала оператора , если оператор не выводит ответ в течение 10 с,...

Задача на функцию на языке Си
Дано натуральное n и m цифры.A(n,m) необходимо рассчитать значение, где A(n,m)={m+1,если n=0 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.