![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
DarkWishmaster |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть лабиринт, надо его пройти по правилу правой руки.
вот к примеру 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
Но тут проблема в том что например робот идёт направо, там тупик и направо тоже тупик он поворачивает налево и он должен придерживаться уже левой стены, это самое главное реализовать. Ну потом что-бы показать результат для самого короткого пути то все клетки увелечиваем на еденицу если робот по ней прошел, и дальше проходим по меньшим единицам пока доходим до цели. Сообщение отредактировано: DarkWishmaster - 27.03.2011 19:13 |
![]() ![]() |
TarasBer |
![]()
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> У меня там переменые x и y меняются в зависимости от того куда смотрит робот
Я понял. У тебя x, y - это вектор сдвига, а i, j - координаты. Плохие названия, неговорящие. Обычно x, y - координаты, а dx, dy - вектор сдвига. Но в данном случае как раз проще хранить в качестве направления именно число от 0 до 3. > З.Ы если мы делаем так: IF Ok then то оператор сразу понимает что Ok(boolean) должен быть True? а для False как? If not ok then ? Ну да. Это должно быть очевидно, если понимать, что заголовок оператора if - это любое выражение типа boolean. Это может быть как переменная этого типа ( if b then ... ), так и оператор, возвращающий значение этого типа ( if x>y then ... ). Добавлено через 1 мин. > if (a[i,j]=1) or (i>n) or (j>m) then Block:=True else Block:=False; Тоже типичный бульщит (bool shit) А сразу почему не написать Block := (a[i,j]=1) or (i>n) or (j>m); -------------------- |
DarkWishmaster |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: ![]() ![]() ![]() |
Tarasber, спасибо, исправлюсь, пока в привычку не вошло.
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:17 |