IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Пройти лабиринт по правилу правой руки.
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Есть лабиринт, надо его пройти по правилу правой руки.
вот к примеру
7 9
1 1 1 1 1 1 1 1 1
1 0 0 1 0 0 0 0 1
1 0 1 0 0 1 0 1 1
1 0 0 0 1 0 0 0 1
1 0 1 0 1 0 1 0 1
1 0 0 0 0 0 1 0 1
1 2 1 1 1 1 1 3 1

1- блок
0 - пусто
2- вход
3- выход
Я знаю как должен вести себя робот, но проблема в том что не могу написать его поведение на Паскале, может вы поможете?
Тут надо помнить в какую сторону смотри робот что-бы можно было знать относительно него какая сторона есть - право а какая -лево
для этого я исп. процедуры:
например если робот смотрит вверх то он идет по x=-1, y=0

procedure RotD; //поворачивает направо
begin
if (x=0) and (y=1) then begin x:=1; y:=0; exit; end;
if (x=0) and (y=-1) then begin x:=-1; y:=0; exit; end;
if (x=-1) and (y=0) then begin x:=0; y:=1; exit; end;
if (x=1) and (y=0) then begin x:=0; y:=-1; exit; end;
end;
procedure RotS; // поворачивает налево
begin
if (x=0) and (y=1) then begin x:=-1; y:=0; exit; end;
if (x=0) and (y=-1) then begin x:=1; y:=0; exit; end;
if (x=-1) and (y=0) then begin x:=0; y:=-1; exit; end;
if (x=1) and (y=0) then begin x:=0; y:=1; exit; end;
end;


procedure Move;
begin
i:=i+x;
j:=j+y;
end;



Но тут проблема в том что например робот идёт направо, там тупик и направо тоже тупик он поворачивает налево и он должен придерживаться уже левой стены, это самое главное реализовать.

Ну потом что-бы показать результат для самого короткого пути то все клетки увелечиваем на еденицу если робот по ней прошел, и дальше проходим по меньшим единицам пока доходим до цели.

Сообщение отредактировано: DarkWishmaster -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
DarkWishmaster   Пройти лабиринт по правилу правой руки.   27.03.2011 22:43
Freedom   Но тут проблема в том что например робот идёт на…   27.03.2011 22:57
DarkWishmaster   а что если тупик, то повернуться не один раз нале…   27.03.2011 23:12
DarkWishmaster   Вообщем вот что получилось: Program Robot; Uses…   29.03.2011 1:07
TarasBer   Ну и жесть вы понаписали. Я так и не понял, а где …   29.03.2011 13:20
DarkWishmaster   Ну и жесть вы понаписали. Я так и не понял, а где…   29.03.2011 17:38
TarasBer   > У меня там переменые x и y меняются в зависим…   29.03.2011 17:46
DarkWishmaster   Tarasber, спасибо, исправлюсь, пока в привычку не …   29.03.2011 17:54
DarkWishmaster   Program Robot_Greedy; Uses Crt; const dx : arra…   30.03.2011 22:17
-TarasBer-   Так если ты хочешь кратчайший путь, то это тебе не…   30.03.2011 22:42
-TarasBer-   > i:=i+dx[robot.direction]; j:=j+dy[r…   30.03.2011 22:44
DarkWishmaster   > i:=i+dx[robot.direction]; j:=j+dy[…   30.03.2011 22:53
-TarasBer-   Через год ты проклянёшь себя при попытке понять, п…   30.03.2011 22:56
Lapp   Нн-дя... DarkWishmaster, ты извини, но ТАК програм…   1.04.2011 12:06
TarasBer   > 1. Зачем делать процедурой кусок кода, которы…   1.04.2011 12:50
Lapp   > 1. Зачем делать процедурой кусок кода, которы…   1.04.2011 14:17
DarkWishmaster   Спасибо, Lapp и TarasBer, буду исправляться по ти…   1.04.2011 18:47


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.05.2024 1:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name