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

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

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

> Пройти лабиринт по правилу правой руки.
DarkWishmaster
сообщение 27.03.2011 18:43
Сообщение #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 - 27.03.2011 19:13
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
DarkWishmaster
сообщение 1.04.2011 14:47
Сообщение #2


Бывалый
***

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

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


Спасибо, Lapp и TarasBer, буду исправляться по тихоньку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 20.07.2025 14:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"