|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.05.2013, 13:42 | #1 |
Регистрация: 27.05.2013
Сообщений: 9
|
Детская задача для исполнителя Робот
Народ, нужны советы по поводу решения этой задачи.Буду признателен любым советам.
Условие:Добраться до стенки,по ходу движения засаживая грядки. Задачу необходимо решить, используя условный оператор "если", а также, при необходимости, цикл "пока". При необходимости использовать сложные условия с логическими операциями И, ИЛИ, НЕ. Последний раз редактировалось ZarinZomanu4; 27.05.2013 в 14:22. |
27.05.2013, 13:51 | #2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Ничерта не разобрать. К тому-же всё перекрывается всплывающими окнами.
После минуты попыток что-то прочесть, мне захотелось пойти поблевать.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
27.05.2013, 13:57 | #3 |
Регистрация: 27.05.2013
Сообщений: 9
|
Спасибо за подсказку.Исправил.
|
27.05.2013, 14:07 | #4 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Почему про грядки не пишете? Лень? ТОгда и нам помогать Вам лень.
Задачу нужно оформлять соотвеиствующим образом. И желательно давать свои наработки (предположения). Сидеть и два часа разбираться с условием задачки, здесь никто не будет.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
27.05.2013, 14:38 | #5 |
Регистрация: 27.05.2013
Сообщений: 9
|
Абсолютно не лень просто сие обстоятельство прошло мимо меня.Ч то же касается наработок:
{ налево; вперед ( 1 ); направо; пока ( впереди_свободно ) { вперед ( 1 ); } посади; налево; пока ( слева_стена или справа_стена ) { вперед ( 1 ); если ( грядка и (слева_стена или справа_стена) ) { посади; } как в условие прописать чтобы были засеяны грядки в ответвлениях трезвых мыслей нет. |
27.05.2013, 15:21 | #6 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
У Вас посыл не правильный. Робот должен обходить любой лабиринт, который представлен в данной размерности матрицы. Алгоритм Дейкстры, Вам в помощь.
Если в кратце, за начальное положение принимается текущее положение робота и идёт движение до ближайшей "стены". По пути проверяется, не обнаружена-ли клумба. Если обнаружена - посадка. Иначе, проверка на положение стен. Если от стены положений более 2-х Проверяем, проходил ли робот по одной из дорог и отбрасывается та, по которой проходил. Если остаются две дороги, то можно избрать два случая 1) случайный выбор (метод монеты) 2) обход лабиринта по кругу, т.е. всегда он идёт либо прямо, либо сворачивает в одну из сторон (вправо, влево). Выбор направления сворачивания, никак не влияет на обход лабиринта. Заодно проверяется, все-ли клумбы посажены. Если все-останов. Нет времени детально расписывать по шагам, но надеюсь, основную идею Вы поняли. А, да (забыл) нужно делать проверки на границы матрицы. Они тоже считаются "стенами". Кстати, от границ матрицы, робот дожен делат один поворот, противоположный тому, что делал ранее и идти в обратном направлении. Выглядеть это будет примерно так: От алгоритма Дейкстры, это несколько далековато, но в конечном итоге, лабиринт он обойдет. Правда некоторые меры от зацикливания, всё-же нужно будет предпринять. А, вот. Покурил - вспомнил. По данному алгоритму бегала "Мышь Шеннона".
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 27.05.2013 в 15:45. |
27.05.2013, 16:04 | #7 |
Регистрация: 27.05.2013
Сообщений: 9
|
Спасибо буду пробовать.
|
27.05.2013, 22:30 | #8 |
Регистрация: 27.05.2013
Сообщений: 9
|
Если Вам не сложно, подскажите пожалуйста как избежать зацикливания?
|
27.05.2013, 23:20 | #9 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Если путь уже пройден, но свободных путей впереди нет, то возврат до первой свободной клетки, разворот по принятым правилам и всё с начала.
Кстати, заметил свою ошибку. С клетки X2-Y2 (массив нумеруется с X0-Y0), робот будет переходить на клетку X1-Y2, а затем на клетку X1-Y3. Уперевшись в стену, он опять зделает левый поворот (алгоритм с левосторонним обходом).
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 27.05.2013 в 23:26. |
28.05.2013, 00:31 | #10 |
Регистрация: 27.05.2013
Сообщений: 9
|
Чуйка мне подсказывает что задача решается проще ибо предназначена для детей.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Робот для постоянного обновления прайс-листов | vvladiss | Фриланс | 6 | 21.05.2016 17:19 |
Ищу исполнителя для курсовой по распараллеливанию | DeNdRo1D | Фриланс | 2 | 05.10.2012 21:54 |
Сформулировать задачу для правильного поиска исполнителя | К_И_В | Фриланс | 1 | 22.02.2012 00:51 |
[C\C++]Робот для имитации работы на компьютере | severovdrei | Фриланс | 4 | 29.11.2011 17:41 |
детская игра -подбери парную куртинку? как? | tatiana74 | Помощь студентам | 8 | 07.02.2010 14:37 |