Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
2 / 2 / 0
Регистрация: 27.04.2013
Сообщений: 43
1

7. Пусть дано n прямоугольников, заданных координатами левой верхней и правой нижней вершины. Стороны прямоугольников параллельны осям координат. Опр

22.06.2013, 20:20. Показов 3959. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пусть дано n прямоугольников, заданных координатами левой верхней и правой нижней вершины. Стороны прямоугольников параллельны осям координат. Определите пару прямоугольников с максимальной площадью пересечения. Напишите функцию для определения площади пересечения двух прямоугольников.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2013, 20:20
Ответы с готовыми решениями:

Даны координаты вершин двух прямоугольников, стороны которых параллельны осям координат
Даны координаты вершин двух прямоугольников, стороны которых параллельны осям координат. Даны...

Количество прямоугольников, расположенных в верхней и нижней четвертях системы координат
Случайным образом формируются координаты А(X,Y) и В(X,Y) ста прямоугольников заданных...

Найти периметр квадрата, стороны которого параллельны осям координат, а противоположные вершины лежат в точках А(x1,y1), D(x2,y2)
Заранее спасибо! найти периметр квадрата, стороны которого параллельны осям координат, а...

Подсчитать количество прямоугольников расположенных в верхней и нижней половинах системы координат
Случайным образом формируются координаты А(X,Y) и В(X,Y) ста прямоугольников заданных...

16
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
24.07.2013, 19:54 2
Вот набросок. Могут быть ошибки.

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
27
28
29
30
;; Пересечение двух отрезков
 
(defun intSeg (a1 b1 a2 b2)
  (cond ((or (<= b1 a2) (<= b2 a1)) nil)
        ((and (<= a1 a2) (>= b1 b2)) (list a2 b2))
        ((and (<= a2 a1) (>= b2 b1)) (list a1 b1))
        ((and (>= a2 a1) (>= b2 b1)) (list a2 b1))
        (t (list a1 b2))))
 
==> intSeg
 
;; Итерационное решение
 
(defun max-area (lstRec)
  (let ((amax -1) (n (length lstRec)))
    (iter (for i from 0 to (- n 2))
      (iter (for j from (1+ i) to (1- n))
           (let* ((rect-i (nth i lstRec))
                  (rect-j (nth j lstRec))
                  (xij (intseg (nth 0 rect-i) (nth 2 rect-i) (nth 0 rect-j) (nth 2 rect-j)))
                  (yij (intseg (nth 3 rect-i) (nth 1 rect-i) (nth 3 rect-j) (nth 1 rect-j))))
                 (when (and xij yij) (maximizing (* (- (nth 1 xij) (nth 0 xij))
                                                    (- (nth 1 yij) (nth 0 yij))) into amax) ))))
   amax))
 
==> max-area
 
(max-area '((1 5 3 -1) (2 10 4 4.5) (0 3 10 0)))
 
==> 6.0
2
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
24.07.2013, 23:37 3
Уже была точно такая задача. С математической стороны пересечение таких прямоугольников снова является прямоугольником и задача сводится к определению максимума или минимума соответствующих координат углов данных многоугольников.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
25.07.2013, 10:54 4
Цитата Сообщение от helter Посмотреть сообщение
С математической стороны пересечение таких прямоугольников снова является прямоугольником и задача сводится к определению максимума или минимума соответствующих координат углов данных многоугольников.
- что я и попытался сделать.
0
3 / 3 / 0
Регистрация: 17.10.2011
Сообщений: 131
21.12.2013, 13:00 5
Цитата Сообщение от Catstail Посмотреть сообщение
Вот набросок. Могут быть ошибки.

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
27
28
29
30
;; Пересечение двух отрезков
 
(defun intSeg (a1 b1 a2 b2)
  (cond ((or (<= b1 a2) (<= b2 a1)) nil)
        ((and (<= a1 a2) (>= b1 b2)) (list a2 b2))
        ((and (<= a2 a1) (>= b2 b1)) (list a1 b1))
        ((and (>= a2 a1) (>= b2 b1)) (list a2 b1))
        (t (list a1 b2))))
 
==> intSeg
 
;; Итерационное решение
 
(defun max-area (lstRec)
  (let ((amax -1) (n (length lstRec)))
    (iter (for i from 0 to (- n 2))
      (iter (for j from (1+ i) to (1- n))
           (let* ((rect-i (nth i lstRec))
                  (rect-j (nth j lstRec))
                  (xij (intseg (nth 0 rect-i) (nth 2 rect-i) (nth 0 rect-j) (nth 2 rect-j)))
                  (yij (intseg (nth 3 rect-i) (nth 1 rect-i) (nth 3 rect-j) (nth 1 rect-j))))
                 (when (and xij yij) (maximizing (* (- (nth 1 xij) (nth 0 xij))
                                                    (- (nth 1 yij) (nth 0 yij))) into amax) ))))
   amax))
 
==> max-area
 
(max-area '((1 5 3 -1) (2 10 4 4.5) (0 3 10 0)))
 
==> 6.0
получается только вторую программу надо запускать?

у меня ошибку ITER выдает. попробовал исправить как было написано тут же на форуме. замена файлов в каталоге не помогла.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
22.12.2013, 18:46 6
Цитата Сообщение от osipov93 Посмотреть сообщение
у меня ошибку ITER выдает
- какую? Умиляют меня студенты (будущие айтишники, инженеры, учёные)... Даже сформулировать проблему не могут:

Вот наиболее ходовые "сообщения":

"не работает" - (как именно? Ошибка? Зависание? Перезагрузка?...)
"выбивает ошибку" - (какую? Текст сообщения? Код ошибки? Да и слово-то какое "выбивает"...)
"не запускается" - (....)
и т.д.

Невольно вспоминается, как блондинка из анекдота объясняет в автосервисе ситуацию (мотор не заводится): "Аккумулятор крутится, а газа нет"

Какую ошибку выдает Iter?
0
3 / 3 / 0
Регистрация: 17.10.2011
Сообщений: 131
23.12.2013, 03:01 7
Цитата Сообщение от Catstail Посмотреть сообщение
- какую? Умиляют меня студенты (будущие айтишники, инженеры, учёные)... Даже сформулировать проблему не могут:

Вот наиболее ходовые "сообщения":

"не работает" - (как именно? Ошибка? Зависание? Перезагрузка?...)
"выбивает ошибку" - (какую? Текст сообщения? Код ошибки? Да и слово-то какое "выбивает"...)
"не запускается" - (....)
и т.д.

Невольно вспоминается, как блондинка из анекдота объясняет в автосервисе ситуацию (мотор не заводится): "Аккумулятор крутится, а газа нет"

Какую ошибку выдает Iter?
Внутри LET: EVFUN:Не найдена функция ITER
==>ERRSTATE
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
23.12.2013, 09:26 8
Цитата Сообщение от osipov93 Посмотреть сообщение
Не найдена функция ITER
- это значит, что ядро (homelispide.exe) ты не заменил.
0
3 / 3 / 0
Регистрация: 17.10.2011
Сообщений: 131
23.12.2013, 23:40 9
Цитата Сообщение от Catstail Посмотреть сообщение
- это значит, что ядро (homelispide.exe) ты не заменил.
заменил. так же выходит
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
24.12.2013, 08:35 10
Значит, заменил не на то... В новом ядре функция Iter есть. Напиши подробно, в какой папке у тебя установлен HomeLisp, и как ты обновлял версию.
0
3 / 3 / 0
Регистрация: 17.10.2011
Сообщений: 131
25.12.2013, 00:48 11
Цитата Сообщение от Catstail Посмотреть сообщение
Значит, заменил не на то... В новом ядре функция Iter есть. Напиши подробно, в какой папке у тебя установлен HomeLisp, и как ты обновлял версию.
в папке C установлен. скачал отсюда архив с форума и заменил. перезагрузил комп. так же
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
25.12.2013, 08:16 12
Вот моя картинка. Выложи сюда свой полный скрин-шот.
Миниатюры
7.	Пусть дано n  прямоугольников, заданных координатами левой верхней и правой нижней вершины. Стороны прямоугольников параллельны осям координат. Опр  
0
3 / 3 / 0
Регистрация: 17.10.2011
Сообщений: 131
26.12.2013, 16:20 13
Цитата Сообщение от Catstail Посмотреть сообщение
Вот моя картинка. Выложи сюда свой полный скрин-шот.
вот. ща попробую другую версию лисп скачать и запустить
Миниатюры
7.	Пусть дано n  прямоугольников, заданных координатами левой верхней и правой нижней вершины. Стороны прямоугольников параллельны осям координат. Опр  
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
26.12.2013, 16:36 14
Посмотри на свою версию... И ты утверждаешь, что заменил?
0
3 / 3 / 0
Регистрация: 17.10.2011
Сообщений: 131
26.12.2013, 22:50 15
Цитата Сообщение от Catstail Посмотреть сообщение
Посмотри на свою версию... И ты утверждаешь, что заменил?
один файл не заменяется что то типа ошибки чтения

Добавлено через 1 час 18 минут
Цитата Сообщение от Catstail Посмотреть сообщение
Посмотри на свою версию... И ты утверждаешь, что заменил?
где можно скачать программу с замененным ядром?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,651
Записей в блоге: 13
27.12.2013, 11:00 16
Цитата Сообщение от osipov93 Посмотреть сообщение
где можно скачать программу с замененным ядром?
- Вот здесь (в этой нити).
1
3 / 3 / 0
Регистрация: 17.10.2011
Сообщений: 131
27.12.2013, 22:56 17
Цитата Сообщение от Catstail Посмотреть сообщение
- Вот здесь (в этой нити).
спасибо)

Добавлено через 2 минуты
теперь работает
1
27.12.2013, 22:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2013, 22:56
Помогаю со студенческими работами здесь

Подсчитать количество случайных прямоугольников расположенных в верхней и нижней половинах системы координат
Случайным образом формируются координаты А(X,Y) и В(X,Y) ста прямоугольников заданных...

Дано n прямоугольников, заданных координатами своих осей вершин
Помогите пожалуйста, написать программу на HomeLisp Пусть дано n прямоугольников, заданных...

Даны два прямоугольника, стороны которых параллельны или перпендику- лярны осям координат
Даны два прямоугольника, стороны которых параллельны или перпендику- лярны осям координат....

Даны два прямоугольника, стороны которого параллельны или перпендикулярны осям координат. Известны координаты
Даны два прямоугольника, стороны которого параллельны или перпендикулярны осям координат. Известны...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru