У исполнителя Робот есть четыре команды перемещения (вверх, вниз, влево,
вправо). При выполнении каждой из них Робот перемещается на одну клетку в
соответствующем направлении в прямоугольном лабиринте. Для проверки
истинности условия отсутствия стены у клетки, в которой находится Робот,
используются команды: сверху свободно, снизу свободно, слева свободно, справа
свободно. Если Робот начнет движение в сторону находящейся рядом с ним стены, то
он разрушится, и выполнение программы прервется,
нач
пока <справа свободно> вправо
пока <сверху свободно> вверх
пока <слева свободно> влево
пока <снизу свободно> вниз
кон
Количество клеток в лабиринте, соответствующих требованию, что, выполнив
предложенную программу, Робот уцелеет и остановится в той же клетке, с которой он
начал движение, равно:
Давайте разберем данную программу шаг за шагом:
1. На первом шаге у нас есть условие "пока справа свободно". Это означает, что Робот будет двигаться вправо до тех пор, пока справа от него нет стены. Если появится стена, то выполнение программы прервется и Робот разрушится.
2. На втором шаге у нас есть условие "пока сверху свободно". Это означает, что Робот будет двигаться вверх до тех пор, пока сверху от него нет стены. Если появится стена, то выполнение программы прервется и Робот разрушится.
3. На третьем шаге у нас есть условие "пока слева свободно". Это означает, что Робот будет двигаться влево до тех пор, пока слева от него нет стены. Если появится стена, то выполнение программы прервется и Робот разрушится.
4. На четвертом шаге у нас есть условие "пока снизу свободно". Это означает, что Робот будет двигаться вниз до тех пор, пока снизу от него нет стены. Если появится стена, то выполнение программы прервется и Робот разрушится.
5. Наконец, после выполнения всех шагов программы, Робот будет остановлен в той же клетке, с которой он начал движение.
Теперь давайте рассмотрим пример лабиринта, чтобы понять, сколько клеток соответствуют условию программы.
Предположим, у нас есть прямоугольный лабиринт размером 5x5 клеток. Клетка (1,1) будет начальной позицией Робота.
### Пример лабиринта
```
+--+--+--+--+--+
|R | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
```
Где R - начальная позиция Робота, пустые клетки обозначены пробелами, знак "+" - стена.
Теперь рассмотрим, как Робот будет перемещаться в данном лабиринте согласно программе.
1. На первом шаге Робот сдвинется вправо на клетку (1,2).
```
+--+--+--+--+--+
| R| | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
```
2. На втором шаге Робот сдвинется вверх на клетку (2,2).
```
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| R| | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
```
3. На третьем шаге Робот сдвинется влево на клетку (2,1). Здесь у Робота нет препятствий, поэтому он может двигаться дальше.
```
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| R| | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
```
4. На четвертом шаге Робот сдвинется вниз на клетку (1,1). Обратите внимание, что Робот вернулся в свою начальную позицию, и выполнение программы завершается.
```
+--+--+--+--+--+
| R| | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
| | | | | |
+--+--+--+--+--+
```
Таким образом, в данном примере лабиринта Робот переместится по 4 клеткам и остановится в исходной позиции. Следовательно, количество клеток в лабиринте, соответствующих требованию программы, равно 4.