В отличие от предыдущей задачи, алгоритм существует для любых исходных натуральных чисел.
Исполнители5
Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости: вверх, вниз, влево, вправо
При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →.
Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ:
сверху свободно, снизу свободно, слева свободно, справа свободно
Цикл ПОКА < условие > команда
выполняется, пока условие истинно, иначе происходит переход на следующую строку.
Сколько клеток приведенного лабиринта соответствуют требованию, что, выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение?
НАЧАЛО
ПОКА < снизу свободно> вниз
ПОКА < слева свободно> влево
ПОКА < сверху свободно> вверх
ПОКА < справа свободно> вправо
КОНЕЦ
1) 1
2) 2
3) 3
4) 0
Последний цикл алгоритма заканчивается в клетке, у которой справа стоит стенка. Только в таких клетках может начинаться требуемый в задаче маршрут.
Всего получилось 10 возможных клеток – начал маршрутов.
Можно продолжить логические рассуждения и сократить количество возможных начал, но, по-моему, проще выполнить проверку каждой клетки.
Пробуем от каждой клетки спускаться до упора вниз, затем до упора влево, затем до упора вверх, и до упора вправо.
Если оказались не в клетке начала маршрута, то эту точку отбрасываем.
После 10 проверок остается единственная клетка (F4).
Ответ:
Ответ: - В лабиринте есть только одна клетка, начав движение из которой и выполнив имеющуюся программу, робот окажется в этой же клетке.
Игры1
Большое количество простых игр так же можно представить алгоритмами. Выполнение ходов соответствует шагам алгоритма. Принятие решения о том или ином ходе – ветвление.
Два игрока играют в следующую игру. На координатной плоскости стоит фишка. Игроки ходят по очереди. В начале игры фишка находится в точке с координатами (5,2). Ход состоит в том, что игрок перемещает фишку из точки с координатами (x,y) в одну из трех точек: или в точку с координатами (x+3,y), или в точку с координатами (x,y+3), или в точку с координатами (x,y+4). Выигрывает игрок, после хода которого расстояние по прямой от фишки до точки с координатами (0,0) не меньше 13 единиц. Кто выигрывает при безошибочной игре обоих игроков – игрок, делающий первый ход, или игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока? Ответ обоснуйте.