Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд (где
— целое число), вызывающая передвижение Черепахи на
единиц в том направлении, куда указывает её голова, Направо
(где
— целое число), вызывающая изменение направления движения на
градусов по часовой стрелке, и Налево
(где
— целое число), вызывающая изменение направления движения на
градусов против часовой стрелки.
Запись Повтори [Команда
Команда
…Команда
] означает, что последовательность из
команд повторится
раз.
Черепахе был дан для исполнения следующий алгоритм:
Повтори [Вперёд
Направо
Налево
Вперёд
Налево
Вперёд
Налево
Вперёд
Направо
Вперёд
Налево
Вперёд
Налево
Вперёд
Вперёд
Налево
Вперёд
Налево
].
Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.
Python:
from turtle import * # Модуль для работы с исполнителем Черепаха
m = 20 # Масштаб
tracer(0)
screensize(1200,1200) # увеличим размер окна
pd() # опускаем хвост
left(90) # поворачиваем голову в сторону положительного направления оси ординат
# Алгоритм
for i in range(10000):
forward(10 * m)
right(30)
left(210)
forward(10 * m)
left(90)
forward(25 * m)
left(180)
forward(5 * m)
right(180)
forward(5 * m)
left(90)
forward(10 * m)
left(90)
forward(20 * m)
forward(5 * m)
left(90)
forward(10 * m)
left(180)
pu() # поднимаем хвост
# Проставление точек
for x in range(-45, 45):
for y in range(-30, 40):
goto(x * m, y * m)
dot(3)
done()
Вывод программы:
Аналитически:
cnt = 0
for x in range(1, 100):
for y in range(1, 100):
if 0 < x < 25 and 0 < y < 10:
cnt += 1
print(cnt)