Задание:
Исполнитель Черепаха передвигается по плоскости и оставляет след в виде линии. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова; Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.
В начальный момент Черепаха находится в начале координат и направлена вверх (вдоль положительного направления оси ординат), хвост опущен. Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что заданная последовательность из S команд повторится k раз.
Черепахе был дан для исполнения следующий алгоритм:
Повтори 2 [Вперёд 8 Направо 90 Вперёд 18 Направо 90]
Поднять хвост
Вперёд 4 Направо 90 Вперёд 10 Налево 90
Опустить хвост
Повтори 2 [Вперёд 17 Направо 90 Вперёд 7 Направо 90]
Определите, сколько точек с целочисленными координатами будут находиться внутри объединения фигур, ограниченного заданными алгоритмом линиями, включая точки на линиях.
Решение (аналитическое)
В первом цикле черепаха оставляет след в виде прямоугольника со сторонами 8 и 18, при этом заканчивает выполнение цикла в начальной точке.
После чего перемещается в точку на 4 выше и 10 правее, сохраняя ориентацию (голова направлена вверх).
Из этой точки рисуется еще один прямоугольник со сторонами 17 и 7. То есть имеем следующую схему
Разобьем полученный контур на две части: прямоугольник 8*18 и прямоугольник 7*13 (верхний прямоугольник без области пересечения).
Количество точек внутри прямоугольника 8*18: 9*19 = 171.
В прямоугольнике 7*13 необходимо убрать точки на линии внутри прямоугольника 7*17 (они уже учтены в прямоугольнике 8*18). То есть во второй части будет 8*13 = 104 точек. 171+104 = 275
Ответ: 275
Решение (КуМИР)
Ответ: 275
Решение (Python)
from turtle import *
import time
screensize(1200, 1200)
tracer(0)
lt(90)
pd()
for _ in range(2):
fd(8*20)
rt(90)
fd(18*20)
rt(90)
up()
fd(4*20); rt(90)
fd(10*20); lt(90)
down()
for _ in range(2):
fd(17*20)
rt(90)
fd(7*20)
rt(90)
up()
for x in range(30):
for y in range(30):
goto(x*20, y*20)
dot(5)
update()
time.sleep(10)
Вывод программы
Ответ: 275
Источник: Информатика с Джобсом | ЕГЭ