Курс№6. Черепаха0%
Теория · номер 6 из 27

Черепаха

Черепаха ходит по плоскости и рисует одну или две фигуры, а нам надо сосчитать точки внутри. Рисуем всё шаблоном из тетради, читаем углы фигур с картинки, а точки считаем ручками, умножением.

7 разделов~35 минут1 первичный балл
  1. 1Что проверяет номер
  2. 2Способ из тетради
  3. 3Как считать точки
  4. 4Объединение и пересечение
  5. 5Реальные задачи: числа большие
  6. 6Г-образная фигура и площадь
  7. 7Ловушки и домашка
Раздел 1 из 7

Что проверяет номер

Черепаха выполняет программу из команд «Вперёд», «Назад», «Направо», «Налево», «Поднять хвост», «Опустить хвост» и «Повтори». Получается одна или две замкнутые фигуры. Спрашивают почти всегда одно и то же:

Сколько точек

Сколько точек с целыми координатами внутри фигуры, в пересечении или в объединении двух фигур. С границей или без неё.

Какая площадь

Площадь фигуры или пересечения двух фигур. Иногда нужна только целая часть числа.

Решаем в два шага. Код рисует картинку, по ней читаем координаты углов. Сам счёт делаем ручками: это одно-два умножения.

Раздел 2 из 7

Способ из тетради

Шаблон один на все задачи. Копируем его и вместо комментария подставляем команды из условия.

python
from turtle import *
tracer(0)                   # без анимации, рисует мгновенно
screensize(10000, 10000)    # большой холст, чтобы фигура не вылезла

m = 20                      # масштаб: 1 шаг из условия = 20 пикселей
left(90)                    # в условии черепаха смотрит вверх
# --- команды из условия ---

# --- вывод точек ---
up()
for x in range(-20, 20):
    for y in range(-20, 20):
        goto(x * m, y * m)
        dot(3, 'blue')
update()
exitonclick()

Команды переводятся так:

В условииВ коде
Вперёд nfd(n * m)
Назад nbk(n * m)
Направо art(a), угол на масштаб не умножаем
Налево alt(a)
Поднять хвостup()
Опустить хвостdown()
Повтори k [ … ]for i in range(k): и все команды из скобок внутрь цикла

Пример. «Повтори 2 [Вперёд 8 Направо 90 Вперёд 5 Направо 90], Поднять хвост, Вперёд 3 Направо 90 Вперёд 2 Налево 90, Опустить хвост, Повтори 2 [Вперёд 4 Направо 90 Вперёд 9 Направо 90]». Нажми «Запустить», и рисунок появится под кодом.

python
from turtle import *
tracer(0)
screensize(10000, 10000)
m = 20
left(90)                                   # в условии черепаха смотрит вверх
for i in range(2):                         # первая фигура
    fd(8 * m); rt(90); fd(5 * m); rt(90)
up()
fd(3 * m); rt(90); fd(2 * m); lt(90)       # переезд к началу второй фигуры
down()
for i in range(2):                         # вторая фигура
    fd(4 * m); rt(90); fd(9 * m); rt(90)
up()
for x in range(-20, 20):
    for y in range(-20, 20):
        goto(x * m, y * m)
        dot(3, 'blue')
update(); exitonclick()

Серые линии на рисунке это оси, они пересекаются в начале координат. Там же начинается первая фигура, и от этой точки удобно считать клетки.

Зачем left(90)

В условии черепаха смотрит вверх, а в Python по умолчанию вправо. Без left(90) вся картинка будет повёрнута, но количество точек останется тем же. Мы пишем эту строку, чтобы рисунок совпадал с условием.

Раздел 3 из 7

Как считать точки

Прямоугольник считается одним умножением, и код для этого не нужен. Читаем углы с рисунка выше: первая фигура идёт от (0; 0) до (5; 8), вторая от (2; 3) до (11; 7).

Сколько целых значений от 2 до 5? Не три, а четыре: 2, 3, 4, 5. Отсюда главное правило: с границей значений на одно больше длины стороны.

Значит, первая фигура содержит 6 · 9 = 54 точки, а вторая 10 · 5 = 50 точек.

Если границу считать не надо, крайние значения выбрасываем: значений на одно меньше длины стороны. Внутри первой фигуры x от 1 до 4, y от 1 до 7, это 4 · 7 = 28 точек.

Сторона длиной nСколько значений
С границейn + 1
Без границыn − 1
Для площадипросто n
Попробуй самучебная задача

Повтори 2 [Вперёд 10 Направо 90 Вперёд 7 Направо 90]. Сколько точек с целыми координатами лежит внутри фигуры, не считая границу?

Раздел 4 из 7

Объединение и пересечение

Пересечение это точки, которые попали в обе фигуры сразу. Объединение это точки, которые попали хотя бы в одну.

Пересечение двух прямоугольников тоже прямоугольник, поэтому считаем его как обычно. В примере выше общая часть идёт по x от 2 до 5, по y от 3 до 7. С границей это 4 · 5 = 20 точек.

Объединение считаем по формуле:

Формула

|A ∪ B| = |A| + |B| − |A ∩ B|. Точки общей части попали и в первую, и во вторую фигуру, поэтому один раз их вычитаем.

В нашем примере получается 54 + 50 − 20 = 84 точки.

Попробуй самучебная задача

Повтори 2 [Вперёд 10 Направо 90 Вперёд 7 Направо 90], Поднять хвост, Вперёд 4 Направо 90 Вперёд 3 Налево 90, Опустить хвост, Повтори 2 [Вперёд 9 Направо 90 Вперёд 8 Направо 90]. Сколько точек с целыми координатами лежит в объединении фигур, включая границу?

Подсказка

Общая часть идёт по x от 3 до 7, по y от 4 до 10.

Раздел 5 из 7

Реальные задачи: числа большие

Способ тот же, шаблон тот же. Но в настоящих заданиях стороны от 20 до 100, например «Вперёд 86 Направо 90 Вперёд 47». Поэтому меняем две настройки:

Две тысячи точек по одной никто не считает. По сетке читаем углы фигур, а дальше снова умножаем.

Разбор на настоящей задаче ЕГКР 13.12.2025. Нужно пересечение без границы:

python
from turtle import *
tracer(0)
screensize(10000, 10000)
m = 10                                   # фигура 34 × 33, при m = 20 вылезет за экран
left(90)
for i in range(6):                       # Повтори 6 [Вперёд 33 Направо 90 Вперёд 20 Направо 90]
    fd(33 * m); rt(90); fd(20 * m); rt(90)
up()
fd(3 * m); rt(90); fd(9 * m); lt(90)     # Вперёд 3 Направо 90 Вперёд 9 Налево 90
down()
for i in range(6):                       # Повтори 6 [Вперёд 24 Направо 90 Вперёд 25 Направо 90]
    fd(24 * m); rt(90); fd(25 * m); rt(90)
up()
for x in range(-5, 40):
    for y in range(-5, 40):
        goto(x * m, y * m)
        dot(3, 'blue')
update(); exitonclick()

Первая фигура: x от 0 до 20, y от 0 до 33. Вторая: x от 9 до 34, y от 3 до 27. Общая часть: x от 9 до 20, y от 3 до 27.

Без границы x идёт от 10 до 19, это 10 значений, а y от 4 до 26, это 23 значения. Итого 10 · 23 = 230. Если бы граница считалась, вышло бы 12 · 25 = 300.

Раздел 6 из 7

Г-образная фигура и площадь

Считаем по строкам

Не всегда получается прямоугольник. «Вперёд 6 Направо 90 Вперёд 3 Направо 90 Вперёд 3 Налево 90 Вперёд 3 Направо 90 Вперёд 3 Направо 90 Вперёд 6» рисует букву Г: снизу прямоугольник 6 × 3, сверху ещё 3 × 3.

python
from turtle import *
tracer(0)
screensize(10000, 10000)
m = 30
left(90)
fd(6 * m); rt(90); fd(3 * m); rt(90); fd(3 * m); lt(90)
fd(3 * m); rt(90); fd(3 * m); rt(90); fd(6 * m)
up()
for x in range(-2, 9):
    for y in range(-2, 9):
        goto(x * m, y * m)
        dot(3, 'blue')
update(); exitonclick()

Режем фигуру на строки. С границей: в строках y = 0, 1, 2, 3 по 7 точек, в строках y = 4, 5, 6 по 4 точки. Всего 28 + 12 = 40. Строго внутри получается 16, их так же считаем по строкам.

Формула Пика как проверка

Есть формула, которая связывает площадь с точками: внутренних точек = S − Г / 2 + 1. Здесь S это площадь, а Г это число точек на границе. Если вершины целые, а стороны идут по линиям сетки, Г равно периметру.

Наша фигура: площадь 18 + 9 = 27, периметр 24. Значит, внутри 27 − 12 + 1 = 16, совпало. Основной способ это счёт по строкам, а формула нужна, чтобы проверить себя.

Задачи на площадь

Площадь прямоугольника это просто ширина на высоту, без всяких «плюс один». Для пересечения двух прямоугольников берём общую ширину и общую высоту.

Бывают и косые фигуры, например с углами 135° и 45°. «Повтори 2 [Вперёд 10 Направо 135 Вперёд 10 Направо 45]» рисует ромб со стороной 10 и острым углом 45°. Его площадь a · a · sin(45°) = 100 · 0,7071 ≈ 70,71. В ответ обычно просят целую часть, это 70.

Лишние повторы

Ромб замыкается за два повтора. Если в условии «Повтори 5», черепаха просто ходит по тем же линиям. Фигура от этого не меняется, смотри на рисунок.

Попробуй самучебная задача

Вперёд 8 Направо 90 Вперёд 4 Направо 90 Вперёд 4 Налево 90 Вперёд 6 Направо 90 Вперёд 4 Направо 90 Вперёд 10. Сколько точек с целыми координатами лежит строго внутри фигуры?

Раздел 7 из 7

Ловушки и домашка

Нечётное число повторов

Самая дорогая ловушка номера. Один повтор [Вперёд a Направо 90 Вперёд b Направо 90] обходит только половину прямоугольника, а замыкают его два повтора. Если повторов нечётное число, черепаха остаётся не в начале, а в противоположном углу и смотрит вниз. Вторая фигура начинается оттуда.

Настоящая задача с основной волны ЕГЭ-2026: «Повтори 5 [Вперёд 29 Направо 90 Вперёд 27 Направо 90], Поднять хвост, Вперёд 3 Направо 90 Вперёд 9 Налево 90, Опустить хвост, Повтори 5 [Вперёд 72 Направо 90 Вперёд 95 Направо 90]». После первых пяти повторов черепаха стоит в (27; 29), а не в (0; 0). Шаблон сам рисует всё правильно, поэтому углы читаем только с рисунка. Если считать в уме от начала координат, ответ будет неверным.

python
from turtle import *
tracer(0)
screensize(10000, 10000)
m = 3
left(90)
for i in range(5):
    fd(29 * m); rt(90); fd(27 * m); rt(90)
print(xcor() / m, ycor() / m, heading())   # где стоит черепаха и куда смотрит
up()
fd(3 * m); rt(90); fd(9 * m); lt(90)
down()
for i in range(5):
    fd(72 * m); rt(90); fd(95 * m); rt(90)
update(); exitonclick()

Строка с print необязательна. Это проверка, если сомневаешься, откуда пошла вторая фигура. Первая фигура идёт по x от 0 до 27, по y от 0 до 29, вторая по x от −77 до 18, по y от −46 до 26. Общая часть: 19 · 27 = 513 точек с границей.

Остальное одним списком

ЛовушкаКак не попасться
С границей или безЧитай конец условия. С границей значений n + 1, без неё n − 1
Умножили угол на масштабНа m умножаем только длины
Фигура вылезла за диапазон точекПроверь, что видны все углы, и расширь range
Точки слились в кашуМаленькая фигура: m больше, 20–40. Большая: m меньше и точки реже
Несколько команд в «Повтори»Все команды из скобок идут в тело цикла
Лишняя линия между фигурамиПеред переездом up(), после него down()
Перепутали объединение и пересечениеОбъединение: сумма минус общая часть. Пересечение: только общая часть

Домашка

Шесть задач с настоящих экзаменов. Кнопка «Решать здесь» открывает редактор с шаблоном, а код каждой задачи сохраняется. Рисуем, читаем углы, считаем ручками.

Перед запуском реши, какие m и range подойдут. Посмотри на длины в условии: при сторонах около 70 подойдёт m = 5 и диапазон от −10 до 100.

Где теряют балл в этих задачах

Во второй и четвёртой задачах есть углы по 45°: смотри на рисунок, а не считай, что это прямоугольник. В последней задаче нечётное число повторов и команда «Назад».

Ещё задачи этого вида лежат в разделе «Задания», №6.

Примеры и задачи «Попробуй сам» учебные, в домашке задачи с настоящих экзаменов и из банка ФИПИ. На сайте код рисует упрощённая черепаха, команды шаблона работают как на экзамене.