Помощь - Поиск - Пользователи - Календарь
Полная версия: Робот
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Zxzc
Здравстуйте,
Цитата
Робот
Пропала связь между роботом-разведчиком и космическим кораблем,
совершившим посадку в бескрайней марсианской пустыне. В такой
ситуации робот переходит на выполнение алгоритма АВАРИЙНЫЙ. При этом
робот может исполнять следующие вспомогательные алгоритмы:
СЕВЕР - продвижение на 30 метров на север
ЮГ - продвижение на 30 метров на юг
ВОСТОК - продвижение на 30 метров на восток
ЗАПАД - продвижение на 30 метров на запад
ОСТАВЬ - втыкание в песок специального флажка
ВОЗЬМИ - взятие флажка
Последнее действие возможно не всегда, а только тогда, когда
флажок находится рядом с роботом. Для того, чтобы проверить
возможность взятия флажка, робот может проверить выполнение условия
РЯДОМ. В одном месте можно воткнуть только один флажок. Перед началом
работы у робота всего три флажка.
Исполнение алгоритма автоматически прервется, как только робот
попадет в зону посадки космического корабля, имеющей форму круга
диаметром 50 метров.
Управляющее устройство робота не имеет оперативной памяти, поэтому
никаких величин в алгоритме использовать не разрешается.
Разработайте алгоритм АВАРИЙНЫЙ, гарантирующий возвращение робота
в зону посадки с любого расстояния. Поверхность марса считать
плоской.

---------------------------------------
Источник: Сборник олимпиад по информатике
URL: http://olimpru.chat.ru/
Avtor: Жуков Евгений Михайлович
e-mail: zhevg@gala.net

Подскажите, пожалуйста, решение... Если можно НАМЕКНУТЬ, хочу сам догадаться.
Zxzc
Кстати, у меня было одно решение, связанное с тем что марс круглый, поставить флажок и идти идти идти идти ... Пока не найдешь флажок потом повернуть налево, и снова тоже самое. Но вот беда, стоит дойти до севера, и алгоритм север перестанет работать... эх..
zZz
А есть еще какие нибудь условия, например, если идти все время на север робот упрется в стенку или обойдя планету вернется на прежнее место? и если размеры поля ограничены, можно проверять это какой либо командой?

думаю должны быть еще условия тк задача в нынешнем виде имеет много 'неясных пятен', связаных с размерами поля действия
Zxzc
Я думаю глупо обходить планету по меридианам, даже и если есть какая-то процедура переделывающая север в юг... Думаю движение должно осуществлятся по спирали, но как это реализовать?
zZz
Нажмите для просмотра прикрепленного файла
единственное, надо определиться с расположением робота, ведь если он будет в середине этой матрицы, то не понятно, куда идти... вообщем, больше данных надо... а так что придумал - написал...
Zxzc
dry.gif Не вижу логики... Аналогично на север? А флаги кто собирать будет? А если корабль на юго-западе? Эх..
Цитата
Так до тех пор пока не найдем флаг

Как реализовать этот алгоритм? У нас же нет памяти, а значит конструкция IF...THEN...ELSE будет работать только для текущей клетки!!!
zZz
Блин, товарищ, объясняю на пальцах, раз меня не понял...(сам же просил намекнуть - я и намекнул)+см предыдущий пост
Нажмите для просмотра прикрепленного файла
это моя первая блок-схема за последние лет 5, так что не придирайтесь к ней - хотя в целом алгоритм должен выглядеть именно так
Цитата
А если корабль на юго-западе?

Цитата
единственное, надо определиться с расположением робота, ведь если он будет в середине этой матрицы, то не понятно, куда идти... вообщем, больше данных надо... а так что придумал - написал...

задача о нахождении корабля в данном виде не может быть решена, поскольку не определены пределы нашего поля, нет средств анализа положения робота, и в конце концов мы вообще ниче не знаем - (да кто вообще такого робота без оперативки сделал? NASA? всегда считал что у них в любом калькуляторе проц покруче чем у меня в компе, а оперативки на любой машине с мой жесткий диск, а тут робота отправили на Марс lol.gif lol.gif lol.gif )
zZz
Нажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файла
я решил, вот - пример реализации моего алгоритма, надеюсь разберешься, тут только для северного направления - но продолжение я думаю и сам допишешь - но самое главное - принцип, вообщем, будет что-то непонятно - пиши, будем разбирать - мне кстати понравилась задача - решение придумал ночью , пытаясь уснуть - потихоньку схожу с ума smile.gif

2Altair - еле смог отправить, ошибка до сих пор идет - ты просил скрин, что пишет форум - так вот форум мне ниче не пишет - мне браузер пишет что соединение закрыто с удаленного компа(с сервера тоесть) - сам я оперой пользуюсь - но на iExplorer'е проверил - то же самое, как я все-таки отправил - да самым геморройным образом - сначала просто пост написал - потом в него по одному файлу добавлял - причем каждый раз заново заходил - все время эта ересь шла - из за чего все это у меня даже догадок нет, но довольно-таки неприятно и неудобно
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.