Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2011, 14:15   #1
Ulq
Пользователь
 
Аватар для Ulq
 
Регистрация: 17.08.2011
Сообщений: 14
По умолчанию Робот-разведчик и космический корабль

Пропала связь между роботом-разведчиком и космическим кораблем, совершившим посадку в бескрайней марсианской пустыне. В такой ситуации робот переходит на выполнение алгоритма АВАРИЙНЫЙ. При этом робот может исполнять следующие команд:
СЕВЕР - продвижение на 1 метр на север;
ЮГ - продвижение на 1 метр на юг;
ВОСТОК - продвижение на 1 метр на восток;
ЗАПАД - продвижение на 1 метр на запад;
ОСТАВЬ - втыкание в песок специального флажка;
ВОЗЬМИ - взятие флажка;
РЯДОМ - проверяет наличие флажка в точке нахождения робота.
В одном месте можно воткнуть только один флажок. Перед началом роботы у робота всего три флажка.Исполнение алгоритма автоматически прервется, как только робот попадет в зону посадки космического корабля, имеющей форму круга диаметром 2 метра. Управляющее устройство робота не имеет оперативной памяти, поэтому никаких величин в алгоритме использовать не разрешается.
Нужно разработать алгоритм АВАРИЙНЫЙ, гарантирующий возвращение робота в зону посадки с любого расстояния. Поверхность Марса считать плоской.
_______________________________
Объясните пжл. , что тут хотят от меня, и если можно начало этого алгоритма.
Спасибо)
Ulq вне форума Ответить с цитированием
Старый 05.11.2011, 21:03   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Робот стартует с позиции S. Расставляет 3 флажка А, B и C как показано на рис:



Например: СЕВЕР, ЗАПАД, ОСТАВЬ (это флаг В), ЗАПАД, ЮГ, ЮГ, ЮГ, ОСТАВЬ (это флаг С), ВОСТОК, ВОСТОК, ВОСТОК, ВОСТОК, СЕВЕР, СЕВЕР, ОСТАВЬ (это флаг А).

Робот стоит в точке с флажком А, это важно!

Далее, алготитм такой:

1) относим флажок А на 2 метра на восток: ВОЗЬМИ, ВОСТОК, ВОСТОК, ОСТАВЬ

2) возвращаемся на 2 метра на запад: ЗАПАД, ЗАПАД

3) двигаемся в цикле: [ СЕВЕР, ЗАПАД, ЗАПАД, ЗАПАД ] пока не прийдём в точку, где стоит флажок B. Для этого в конце цикла выполняем команду РЯДОМ. Если флажка нет, повторяем цикл, если есть, то переходим к шагу 4)

4) переносим флажок B на северозапад: ВОЗЬМИ, СЕВЕР, ЗАПАД, ОСТАВЬ

5) от новой позиции флажка B идём на юг, пока не встретим флажок С. Т.е. выполняем команду ЮГ, далее РЯДОМ. Если флажка нет, повторяем цикл, если есть, то переходим к шагу 6)

6) переносим флажок С на югозапад: ВОЗЬМИ, ЮГ, ЗАПАД, ОСТАВЬ, и возвращаеся на старое место флажка: СЕВЕР, ВОСТОК.

7) В цикле идём к флажку А: [ ВОСТОК, ВОСТОК, ВОСТОК, СЕВЕР ]. После каждого цикла выполняем команду РЯДОМ. Если флажка нет, повторяем цикл, если есть, то переходим к шагу 1)

Всё, алгоритм закончен. После первого круга поиска ситуация будет примерно такая (робот вернулся в точку, куда на первом шаге он отнёс флаг А):



После второго круга (маршрут второго круга отмечен зелёным):



Удачи в поисках потерянного корабля
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 05.11.2011 в 21:33.
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Торговый робот solo578 Фриланс 5 27.12.2011 17:26
vb-робот аналитика Microsoft Office Excel 7 25.08.2011 14:29
Корабль в паскале Allemon Паскаль, Turbo Pascal, PascalABC.NET 0 23.12.2010 18:23
"Космический Стрелок" Игра slav9n Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 28.02.2010 03:42
робот на VB Backfire Microsoft Office Access 3 10.11.2009 21:38