Нарисуй состояние Робота после выполнения алгоритма бег с препятствиями из данного начального состояния.
Поле: 4 строки, 23 столбца. Робот в клетке (3; 23). В третьей строке закрашены столбцы 2, 5, 9, 13, 16, 19; стены стоят между столбцами 2–3, 3–4, 7–8, 8–9, 10–11, 15–16, 17–18, 21–22. Других внутренних стен нет. Строки считаем сверху, столбцы слева.
алг бег с препятствиями
дано |
надо |
нач
нц 22 раз
если слева свободно и клетка чистая
то закрасить
влево
иначе вверх
влево
вниз
все
кц
кон
По правилу союза «и» ветвь «то» выполняется, только если истинны обе проверки. Поэтому чистую клетку закрашиваем только при свободном проходе слева. Если хотя бы одна проверка ложна, выполняем обход по второй строке.
Обе ветви сдвигают Робота ровно на один столбец влево и возвращают в третью строку. После
| Повторение | Столбец до шага | Проверка | Действия | Столбец после шага |
|---|---|---|---|---|
| слева свободно, клетка чистая | закрасить, влево | |||
| слева стена | вверх, влево, вниз | |||
| слева свободно, клетка чистая | закрасить, влево | |||
| слева свободно, клетка чистая | закрасить, влево | |||
| клетка уже закрашена | вверх, влево, вниз | |||
| слева стена | вверх, влево, вниз | |||
| слева свободно, клетка чистая | закрасить, влево | |||
| слева стена | вверх, влево, вниз | |||
| слева свободно, клетка чистая | закрасить, влево | |||
| слева свободно, клетка чистая | закрасить, влево | |||
| клетка уже закрашена | вверх, влево, вниз | |||
| слева свободно, клетка чистая | закрасить, влево | |||
| слева стена | вверх, влево, вниз | |||
| слева свободно, клетка чистая | закрасить, влево | |||
| слева стена | вверх, влево, вниз | |||
| слева стена | вверх, влево, вниз | |||
| слева свободно, клетка чистая | закрасить, влево | |||
| слева свободно, клетка чистая | закрасить, влево | |||
| клетка уже закрашена | вверх, влево, вниз | |||
| слева стена | вверх, влево, вниз | |||
| слева стена | вверх, влево, вниз | |||
| клетка уже закрашена | вверх, влево, вниз |
Первоначальная закраска сохраняется: команды очистки нет. Добавляем клетки ветви «то». Первую клетку цикл не обрабатывает: Робот пришёл в неё последним шагом. Поэтому она чистая. Итоговое поле:
Робот в клетке (
