Найдите, сколько точек с целочисленными координатами находятся внутри объединения фигур, ограниченного заданными алгоритмом линиями, включая точки на линиях.
Исполнитель Черепаха действует на плоскости с декартовой системой координат.
В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен.
При опущенном хвосте Черепаха оставляет на поле след в виде линии.
В каждый конкретный момент известно положение исполнителя и направление его движения.
У исполнителя есть команды: Поднять хвост, Опустить хвост, Вперёд n, Направо m, Налево m.
Запись Повтори k [Команда1 …] означает, что последовательность команд повторится k раз.
Черепахе был дан для исполнения следующий алгоритм:
Найдите, сколько точек с целочисленными координатами находятся внутри объединения фигур, ограниченного заданными алгоритмом линиями, включая точки на линиях.
Решение
🔹 Шаг 1. Подготовка черепахи и направление
from turtle import *
tracer(0)
lt(90)
size = 10
down()
📌 Результат: черепаха готова: смотрит вверх, хвост опущен — дальше будут команды рисования из решения.
🔹 Шаг 2. Первый сложный контур (первый цикл)
from turtle import *
tracer(0)
lt(90)
size = 10
down()
rt(90)
for _ in range(3):
fd(15 * size)
rt(90)
fd(20 * size)
rt(90)
📌 Результат: первый цикл for: команды внутри повторяются, получается первый ломаный контур.
🔹 Шаг 3. Смещение без рисования и второй контур
from turtle import *
tracer(0)
lt(90)
size = 10
down()
rt(90)
for _ in range(3):
fd(15 * size)
rt(90)
fd(20 * size)
rt(90)
up()
fd(7 * size)
rt(90)
fd(13 * size)
lt(90)
down()
for _ in range(2):
fd(10 * size)
lt(90)
fd(17 * size)
lt(90)
up()
📌 Результат: смещение с поднятым хвостом (без следа) и второй цикл for — появляется вторая фигура.
🔹 Шаг 4. Добавление сетки целочисленных точек
from turtle import *
tracer(0)
lt(90)
size = 10
down()
rt(90)
for _ in range(3):
fd(15 * size)
rt(90)
fd(20 * size)
rt(90)
up()
fd(7 * size)
rt(90)
fd(13 * size)
lt(90)
down()
for _ in range(2):
fd(10 * size)
lt(90)
fd(17 * size)
lt(90)
up()
up()
# Сетка целочисленных точек (визуализация)
for gx in range(-5, 18):
for gy in range(-26, 4):
setpos(gx * size, gy * size)
dot(3, 'red')
📌 Результат: красные точки в узлах целочисленной координатной сетки.
🔹 Шаг 5. Точки внутри фигуры
from turtle import *
tracer(0)
lt(90)
size = 10
down()
rt(90)
for _ in range(3):
fd(15 * size)
rt(90)
fd(20 * size)
rt(90)
up()
fd(7 * size)
rt(90)
fd(13 * size)
lt(90)
down()
for _ in range(2):
fd(10 * size)
lt(90)
fd(17 * size)
lt(90)
up()
# Сетка целочисленных точек (визуализация)
for gx in range(-5, 18):
for gy in range(-26, 4):
setpos(gx * size, gy * size)
dot(3, 'red')
print(408)
# ответ: 408
📌 Результат: синие точки — целочисленные точки внутри фигур. Итоговый ответ: 408.