Задание:
Исполнитель Черепаха передвигается по плоскости и оставляет след в виде линии. Черепаха может выполнять три команды:
По команде Вперёд n Черепаха перемещается вперёд на n единиц.
По команде Направо m Черепаха поворачивается на месте на m градусов по часовой стрелке, при этом соответственно меняется направление дальнейшего движения.
По команде Налево m Черепаха поворачивается на месте на m градусов против часовой стрелки, при этом соответственно меняется направление дальнейшего движения.
В начальный момент Черепаха находится в начале координат и направлена вверх (вдоль положительного направления оси ординат), хвост опущен. Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что заданная последовательность из S команд повторится k раз.
Черепахе был дан для исполнения следующий алгоритм:
Повтори 7 [Вперёд 10 Направо 120]
Определите, сколько точек с целочисленными координатами будет находиться внутри фигуры, ограниченной заданным алгоритмом линиями, не включая точки на линиях.
Решение (аналитическое)
Заметим, что исполнитель рисует правильный многоугольник с внешним углом 120 градусов. Или, соответственно, с внутренним 60 градусов. Значит, исполнитель в результате выполнения представленного алгоритма оставит след в виде правильного треугольника со стороной 10. Так как первая оставляемая линия лежит строго на оси ординат, мы можем заключить, что необходимо посчитать количество точек с целочисленными координатами на линиях, параллельных оси абсцисс и проходящих через точки с координатой y ∈ {1, 2, 3, 4, 5, 6, 7, 8, 9}. Координаты y = 0 и y = 10 нас не интересуют, так как мы исключает точки на контуре.
Для этого определим высоту треугольника, длины всех остальных линий от основания до стороны определим по свойствам подобных треугольников 0.2h, 0.4h, 0.6h, 0.8h, 1h, 0.8h, 0.6h, 0.4h, 0.2h, где h – высота.
Итого получаем 1 точку для 0.2h, 3 – для 0.4h, 5 – для 0.6h, 6 – для 0.8h, 8 – для 1h.
Или общее количество: 1 + 3 + 5 + 6 + 8 + 6 + 5 + 3 + 1 = 38
Ответ: 38
Решение (КуМИР)
Ответ: 38
Решение (Python)
from turtle import *
import time
# алгоритм для черепахе в увеличенном в 20 раз масштабе
tracer(0)
lt(90)
pd()
for _ in range(7):
fd(10*20)
rt(120)
up()
# наносим точки с целочисленными координатами
for x in range(20):
for y in range(20):
goto(x*20, y*20)
dot(5)
update()
time.sleep(10)
Вывод программы:
Ответ: 38
Источник: Информатика с Джобсом | ЕГЭ