Задание 6. Черепаха и точки с целочисленными координатами
Условие (кратко): по данному алгоритму черепаха рисует фигуру. Нужно узнать,
сколько точек с целочисленными координатами находятся внутри получившейся фигуры (включая точки на границе).
|
1 2 3 4 5 6 |
Повтори 2 [Вперёд 14 Налево 270 Назад 12 Направо 90] Поднять хвост Вперёд 9 Направо 90 Назад 7 Налево 90 Опустить хвост Повтори 2 [Вперёд 13 Направо 90 Вперёд 6 Направо 90] |
(Демоверсия ЕГЭ 2026)
1. Решение с помощью черепахи (наглядный способ)
Этот способ полностью повторяет действия из условия, только в Python. Мы рисуем обе части фигуры,
а затем наносим на экран точки с шагом 1 (с учётом масштаба). По рисунку видно, какие точки попали внутрь.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
from turtle import * tracer(0) # отключаем анимацию, чтобы черепаха рисовала сразу left(90) # поворачиваемся вверх k = 20 # масштаб: 1 шаг = 20 пикселей screensize(2000, 2000) # 1) первая фигура (прямоугольник 13×15) for _ in range(2): forward(14 * k) # вверх на 14 right(90) # налево 270 = направо 90 backward(12 * k) # назад 12 → по факту влево на 12 right(90) # 2) переходим в точку начала второй фигуры (движение без следа) penup() forward(9 * k) # вверх на 9 right(90) backward(7 * k) # вправо на 7 left(90) pendown() # 3) вторая фигура (прямоугольник 7×8, но в координатах он 7×13, т.к. вверх 13) for _ in range(2): forward(13 * k) # вверх на 13 right(90) forward(6 * k) # вправо на 6 right(90) # 4) наносим сетку точек с шагом 1 penup() for x in range(-30, 31): for y in range(-30, 31): goto(x * k, y * k) dot(3, 'red') done() |
Что получается. Первая часть кода рисует большой прямоугольник
с целыми координатами x = 0..12, y = 0..14 (13 по горизонтали и 15 по вертикали).
Вторая часть рисует прямоугольник, смещённый вверх и вправо: x = 7..13, y = 9..16.
Вместе это даёт фигуру, состоящую из двух прямоугольных участков.

Подсчёт по рисунку:
|
1 2 3 4 |
13 × 15 = 195 7 × 8 = 56 195 + 56 = 251 |
Ответ: 251.
2. Решение через перебор координат (быстрый способ)
Рисовать черепахой необязательно. После того как мы восстановили координаты прямоугольников,
можно просто перебрать все целые точки и посчитать, какие из них попадают хотя бы в один прямоугольник.
Восстановленные координаты:
- нижний прямоугольник:
x1A = 0,x2A = 12,y1A = 0,y2A = 14 - верхний прямоугольник:
x1B = 7,x2B = 13,y1B = 9,y2B = 16
Перебираем точки в общем прямоугольнике, который точно накрывает обе фигуры: по x от 0 до 13, по y от 0 до 16.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# координаты первого участка (13 × 15) x1A, x2A = 0, 12 y1A, y2A = 0, 14 # координаты второго участка (7 × 8), смещённого вверх и вправо x1B, x2B = 7, 13 y1B, y2B = 9, 16 # общий диапазон для перебора x_min, x_max = 0, 13 y_min, y_max = 0, 16 count = 0 for x in range(x_min, x_max + 1): # перебор всех целых x for y in range(y_min, y_max + 1): # перебор всех целых y # проверяем, попала ли точка (x, y) в первый прямоугольник inA = (x1A <= x <= x2A) and (y1A <= y <= y2A) # проверяем, попала ли точка (x, y) во второй прямоугольник inB = (x1B <= x <= x2B) and (y1B <= y <= y2B) # нам нужно ОБЪЕДИНЕНИЕ двух участков if inA or inB: count += 1 print(count) # 251 |
Пояснения к коду:
inA— точка внутри первого прямоугольника;inB— точка внутри второго прямоугольника;if inA or inB:— берём все точки, которые попали хотя бы в одну фигуру;count— счётчик таких точек.
В результате получаем то же самое число, что и при решении через черепаху: 251.