1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| 1qsd |
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Kost Репутация: 0 |
Помогите решить вот эту несложную задачу. Преподаватель говорит, что решать её нужно как то через матрицы.
Удав расположен в виде нескольких линий, из которых каждая следущая перпендикулярна предыдущей. Направление каждой линии и её протяженность задаются буквами "L" , "R" и числом. Например 25L15R5 ("25" - длина линии = 25, "L" - поворачивает на 90 градусов влево, "15" - длина линии = 15 , "R" - поворачивает на 90 градусов вправо , "5" - длина линии = 5). Определить, пересечет ли он себя. Сообщение отредактировано: 1qsd - |
![]() ![]() |
| Lapp |
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
2 Malice:
Случай с подходом к хвосту сзади лечится добавлением минус-первой точки к массиву координат; ее координаты, как и координаты нулевой точки, нулевые: 0,0. Остальные звенья это нулевое звено не пересечет, так как оно нулевой длины. Соответственно, цикл while нужно начинать с (i+1)mod 2. 2 Lapp: (разговоры самого-с-собой - первый признак помешательства.. 10L0R0L0L5 Исключать пары нулевых звеньев типа L0R0 ? нет.. Ведь может и не быть пересечения после разворота: 10L0L0L5 - это просто поворот направо.. Неужели Michael_Rybak все же прав (сам того не зная -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
| Lapp |
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Неужели Michael_Rybak все же прав (сам того не зная "Долгие повороты" не нужно учитывать никаким специальным образом при исследовании разворота. Дело в том, что последовательность L0R0L0L0 - уже содержит перпендикулярное звено, которое будет учтено. Так что нужно отслеживать только действительный (быстрый) поворот назад, типа 10L0L5. Это я вставил, и оно, вроде, работает, но.. ..Но тут другая проблема вылезает 10L0R0L0R0L5 - представляет собой прямую линию, но в середине есть три нулевых звена, которые все имеют общую точку с ненулевыми... Вот такая фигня.. Может, запретить нулевые звенья совсем?.. Или убирать их при парсинге.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
1qsd Удав 26.03.2007 18:59
мисс_граффити С матрицами...
Единственная идея: берем матрицу из… 26.03.2007 21:04
1qsd 1) можно и не через матрицы
2) можно пользоваться … 26.03.2007 22:03
мисс_граффити Идея такая: разбиваем удавчика на отрезки, которые… 26.03.2007 23:15
1qsd давайте по порядку
1) как записывать в массив: сам… 26.03.2007 23:51
мисс_граффити 1) мне кажется, тут подойдет запись с тремя полями… 27.03.2007 0:09
1qsd А вы можете код с клеточками (во втором сообщении … 27.03.2007 0:37
мисс_граффити а сам не хочешь попробовать хотя бы? 27.03.2007 1:24
Michael_Rybak И уточни еще, что если он не пересекает себя, но к… 27.03.2007 2:15
Lapp Я тоже не придумал, как тут использовать матрицы, … 27.03.2007 11:43
Lapp
Идея такая: разбиваем удавчика на отрезки, которы… 27.03.2007 15:52
Michael_Rybak
В таком случае горизонтальные нельзя проверять т… 27.03.2007 17:43
Malice
В таком случае горизонтальные нельзя проверять то… 27.03.2007 18:54
Michael_Rybak 10L10L10R10R10R30 27.03.2007 21:02
Гость О чем я и говорил. Пересекает еще и смежные отрезк… 27.03.2007 22:23
Malice Эт я был.. Я же имел ввиду случай типа:
27.03.2007 22:29
Michael_Rybak Он не пересекает смежные отрезки. Я ведь специальн… 28.03.2007 1:06
Malice Гы :) В таком случает надо определьтся - включает … 28.03.2007 1:35
Michael_Rybak У меня не получался нигде квадрат 11х11. Получало… 28.03.2007 2:53
Lapp Критику принял.
Думаю.. 28.03.2007 4:06
Lapp Коллеги, я не вполне все же вас понял..
Michael_Ry… 28.03.2007 5:30
Lapp 2 Lapp:
(а с кем еще и поговорить-то ночью.. :))
В… 28.03.2007 10:26
1qsd Если удав выглядит как спираль, например так 1R2R3… 28.03.2007 12:33
Lapp
например так 1R2R3R4R5R6 ... программма не работа… 28.03.2007 14:19
Lapp По ходу дела, посмотрев на все сложности, возникши… 28.03.2007 16:29
Malice Теперь я думаю, как говорится, тема раскрыта :) Я … 28.03.2007 22:18
Michael_Rybak Я считаю, что нужно строго определить самопересече… 28.03.2007 22:23
Lapp Мужики, не драматизируйте ситуацию. Не забывайте … 29.03.2007 5:02![]() ![]() |
|
Текстовая версия | 5.11.2025 20:27 |