Школа179: /Информатика//Информатика / Архив/2010//Информатика / Архив / 2010 / 7 Б/20091116 ...

 
Это старая версия Информатика/Архив/2010/7Б/20091116 за 2009-11-16 10:07:48..

7Б «Робот». Задание №9: Рекурсия


Плюсник
Выполненные задания должны быть сохранены в каталоге ~/kumir/09/.
Стартовые обстановки находятся в каталоге /home/pub/kumir/fields/09/.
Загрузить среду Кумир для Windows можно отсюда
Архив со стартовыми обстановками (для самостоятельной работы) можно загрузить отсюда

Что умеет робот?

Алгоритм может вызывать сам себя!
Пример рекурсивного алгоритма, перемещающего робота вправо до стены:


Аналогичный алгоритм, перемещающий робота вправо до стены и закрашивающий клетку у стены:


Алгоритм, перемещающий робота вправо до стены, затем возвращающий его в исходную клетку:


Задание 09-А

Робот находится в горизонтальном коридоре. Напишите алгоритм «к стене вправо закрашивая путь», который перемещает робота до правого конца коридора, закрашивая все клетки на своем пути, включая начальную.
В этой задаче нельзя пользоваться конструкцией цикла нц...кц.
Решение задачи сохраните в файле ~/kumir/09/A.kum
Проверьте свой алгоритм на всех стартовых обстановках робота, находящихся в каталоге /home/pub/kumir/fields/09/A

Задание 09-B

Робот находится в горизонтальном коридоре. Напишите алгоритм «к стене вправо закрашивая путь затем вернуться», который перемещает робота до правого конца коридора, закрашивая все клетки на своем пути, включая начальную, затем возвращает в исходную клетку.
В этой задаче нельзя пользоваться конструкцией цикла нц...кц.
Решение задачи сохраните в файле ~/kumir/09/B.kum
Проверьте свой алгоритм на всех стартовых обстановках робота, находящихся в каталоге /home/pub/kumir/fields/09/B

Задание 09-С

Робот находится в горизонтальном коридоре. Справа от робота есть закрашенная клетка. Напишите алгоритм «вправо симметрично закрашенной клетке», который доводит робота до закрашенной клетки, затем перемещает вправо на такое же расстояние, то есть робот должен остановиться в клетке, симметричной начальной позиции относительно закрашенной клетки.
Решение задачи сохраните в файле ~/kumir/09/C.kum
Проверьте свой алгоритм на всех стартовых обстановках робота, находящихся в каталоге /home/pub/kumir/fields/09/C

Задание 09-D

Выполните задание 09-C при дополнительном условии, что робот должен закрасить все клетки, через которые он проходит.
Решение задачи сохраните в файле ~/kumir/09/D.kum
Проверьте свой алгоритм на всех стартовых обстановках робота, находящихся в каталоге /home/pub/kumir/fields/09/D

Задание 09-E

Выполните задание 09-C при дополнительном условии, что робот должен закрасить все клетки между своим первоначальным расположением и первоначально закрашенной клеткой.
Решение задачи сохраните в файле ~/kumir/09/E.kum
Проверьте свой алгоритм на всех стартовых обстановках робота, находящихся в каталоге /home/pub/kumir/fields/09/E

Задание 09-F

Выполните задание 09-C при дополнительном условии, что робот должен закрасить все клетки между первоначально закрашенной клеткой и своим конечным расположением.
Решение задачи сохраните в файле ~/kumir/09/F.kum
Проверьте свой алгоритм на всех стартовых обстановках робота, находящихся в каталоге /home/pub/kumir/fields/09/F

Задание 09-G

Робот находится в горизонтальном коридоре, где-то справа от робота есть стена. Переместите робота в такую клетку, чтобы расстояние от робота до правой стены было вдвое больше, чем первоначально.
Решение задачи сохраните в файле ~/kumir/09/G.kum
Проверьте свой алгоритм на всех стартовых обстановках робота, находящихся в каталоге /home/pub/kumir/fields/09/G

Задание 09-H

Робот находится в горизонтальном коридоре. Справа от робота есть закрашенная клетка. Робот должен дойти до закрашенной клетки, пройти ее, затем пройти вправо на расстояние, вдвое большее, чем первоначальное.
Решение задачи сохраните в файле ~/kumir/09/H.kum
Проверьте свой алгоритм на всех стартовых обстановках робота, находящихся в каталоге /home/pub/kumir/fields/09/H

Задание 09-I

Робот находится снизу от бесконечной стены (в соседней с ней клетке). Где-то слева от робота в стене есть проход. Робот должен дойти до прохода, пройти через проход и вернуться вправо на такое же расстояние (то есть робот должен оказаться в клетке, соседней с первоначальным положением, но по другую сторону стены).

Задание 09-J

Робот находится снизу от бесконечной стены, не обязательно в соседней со стеной клетке. Где-то слева от робота в стене есть проход. Робот должен обойти стену и оказаться в клетке, симметричной начальному положению относительно стены.

Задание 09-K

Робот находится снизу от бесконечной стены, не обязательно в соседней со стеной клетке. Напишите алгоритм, который передвигает робота по диагонали вправо-вверх до стены, затем робот «отражается» от стены и проходит такое же расстояние вправо-вниз. При этом робот должен закрасить все пройденные клетки.

Задание 09-L

Робот находится в левом конце горизонтального коридора. Коридор состоит из нечетного числа клеток. Переведите робота в среднюю клетку коридора.

Задание 09-M

Робот находится в горизонтальном коридоре, где-то справа от робота есть стена. Переместите робота в клетку, расстояние от которой до стены вдвое меньше, чем расстояние до стены от первоначального расположения робота (в случае нечетного расстояние «вдвое меньше» означает деление с отбрасыванием дробной части).

Задание 09-N

Робот находится в горизонтальном коридоре, где-то справа от робота есть стена. Переместите робота к стене, закрасив все клетки до стены через одну. Клетка, где первоначально находился робот, должна быть закрашена.
В этой задаче нельзя использовать циклы.



 
Файлов нет.[Показать файлы/форму]