Перейти к содержимому

Задание 6 ЕГЭ по информатике 2027: исполнитель Черепаха

Задание 6до 1 баллаисполнитель Черепаха
Раздел
Алгоритмы и программирование
Максимальный балл
1 балл
Уровень
базовый
Что проверяет
Определение возможных результатов работы простейших алгоритмов управления исполнителями и вычислительных алгоритмов
Что нужно сделать
Выполнить программу для Черепахи и посчитать точки с целыми координатами внутри фигуры, в пересечении или объединении фигур.
Как записать ответ
только число: целое, без пробелов и единиц измерения
Время
Около 4 минут по обобщённому плану ФИПИ
Элемент кодификатора
3.3
Компьютер
Специальное ПО по плану ФИПИ не нужно: задание решают рассуждением, программа — для проверки
Файл к заданию
Нет — все данные в условии
В 2026 году
Тоже задание 6

Задание 6 ЕГЭ по информатике 2027 года проверяет, по формулировке обобщённого плана ФИПИ, «определение возможных результатов работы простейших алгоритмов управления исполнителями и вычислительных алгоритмов». Это задача про исполнителя Черепаха: дан алгоритм из команд «Вперёд», «Назад», «Направо», «Налево», «Поднять хвост», «Опустить хвост» и циклов «Повтори», а спросить могут, сколько точек с целыми координатами попало внутрь нарисованной фигуры, в её пересечение, в объединение или на границу.

Файла нет, специализированное ПО не требуется: все данные есть в тексте. Уровень базовый, около 4 минут, за верный ответ — 1 балл. В списке изменений 2027 года задание 6 не названо: «Изменения структуры КИМ отсутствуют». Средний процент выполнения по методическим рекомендациям ФИПИ — 39,8 в 2025 году и 63,6 в 2026 году.

Тренажёр задания 6

Десять заданий номера 6 из банка тренажёра — с файлами, как на станции КЕГЭ. Решайте в песочнице Python прямо на странице или у себя; ответ проверяется по ключу, после проверки — верный ответ, разбор и решение на Python, а при ошибке — разбор от ИИ. Кнопка «Ещё 5 таких» у типа задания ниже даёт задания одного типа.

Загружаем задание…

Задание 6 вместе с остальными — в вариантах целиком.

Типы задания 6 с решением

Пересечение фигур: точки с целыми координатами

Пример условия

Исполнитель Черепаха: старт в начале координат, голова вдоль оси ординат, хвост опущен. Дан алгоритм:

Повтори 2 [Вперёд 52 Направо 90 Вперёд 20 Направо 90]
Поднять хвост
Вперёд 43 Направо 90 Вперёд 12 Налево 90
Опустить хвост
Повтори 2 [Вперёд 5 Направо 90 Вперёд 30 Направо 90]

Сколько точек с целыми координатами лежит в пересечении фигур, включая границы? Для этого примера ответ — 54.

1. Первый цикл обводит прямоугольник 20 × 52 с углом в начале координат. 2. С поднятым хвостом Черепаха переходит в точку (12; 43) — там начинается прямоугольник 30 × 5. 3. На станции удобно нарисовать фигуры turtle в масштабе k = 10, отметить точки dot() в целых узлах и пересчитать их по рисунку.

На примере: первая фигура занимает 0 ≤ x ≤ 20 и 0 ≤ y ≤ 52, вторая — 12 ≤ x ≤ 42 и 43 ≤ y ≤ 48. Общая часть: 9 значений x и 6 значений y, ответ 9 · 6 = 54.

Решение на Python
import turtle

k = 10                      # масштаб: 1 единица условия — 10 пикселей
turtle.tracer(0)            # рисунок появляется сразу, без анимации
turtle.left(90)             # голова Черепахи смотрит вверх, как в условии


def rectangle(a, b):
    """Обводит прямоугольник: сторона a — вдоль головы, сторона b — поперёк."""
    for _ in range(2):
        turtle.forward(a * k)
        turtle.right(90)
        turtle.forward(b * k)
        turtle.right(90)


rectangle(52, 20)           # первая фигура: 0 <= x <= 20, 0 <= y <= 52

turtle.up()                 # Поднять хвост: перенос без следа
turtle.forward(43 * k)
turtle.right(90)
turtle.forward(12 * k)
turtle.left(90)
turtle.down()               # вторая фигура начинается в точке (12; 43)

rectangle(5, 30)            # вторая фигура: 12 <= x <= 42, 43 <= y <= 48

turtle.up()                 # точки отмечаем, не проводя лишних линий
count = 0
for px in range(12, 21):        # общая часть по x: 12 <= x <= 20
    for py in range(43, 49):    # общая часть по y: 43 <= y <= 48
        turtle.goto(px * k, py * k)
        turtle.dot(4)           # точка в целом узле сетки
        count += 1

turtle.update()
print(count)                # 9 · 6 = 54

Ответ: 54

Объединение фигур: точки с целыми координатами

Пример условия

Исполнитель Черепаха: старт в начале координат, голова вдоль оси ординат, хвост опущен. Дан алгоритм:

Повтори 2 [Вперёд 42 Направо 90 Вперёд 21 Направо 90]
Поднять хвост
Вперёд 13 Направо 90 Вперёд 5 Налево 90
Опустить хвост
Повтори 2 [Вперёд 18 Направо 90 Вперёд 31 Направо 90]

Сколько точек с целыми координатами лежит в объединении фигур, включая точки на линиях? Для этого примера ответ — 1231.

1. Первая фигура — прямоугольник 21 × 42: 0 ≤ x ≤ 21, 0 ≤ y ≤ 42; точки с границей 22 · 43 = 946. 2. Вторая — прямоугольник 31 × 18 с углом в (5; 13): 5 ≤ x ≤ 36, 13 ≤ y ≤ 31; точек 32 · 19 = 608. 3. Общая часть: 5 ≤ x ≤ 21 и 13 ≤ y ≤ 31, всего 17 · 19 = 323. 4. Общие точки вычитаем один раз.

На примере: 946 + 608 − 323 = 1231.

Решение на Python
DIR = {0: (1, 0), 90: (0, 1), 180: (-1, 0), 270: (0, -1)}


def figures(program):
    """Выполняет алгоритм Черепахи; возвращает контуры фигур в координатах."""
    def flat(cmds):                         # Повтори -> плоский список команд
        return [c for cmd in cmds
                for c in (flat(cmd[2]) * cmd[1] if cmd[0] == 'repeat' else [cmd])]

    x = y = 0
    angle, pen = 90, True                   # старт: начало координат, голова вверх
    paths, path = [], [(0, 0)]
    for c in flat(program):
        if c[0] == 'forward':
            dx, dy = DIR[angle % 360]
            x, y = x + c[1] * dx, y + c[1] * dy
            if pen:
                path.append((x, y))
        elif c[0] == 'right':
            angle -= c[1]
        elif c[0] == 'left':
            angle += c[1]
        elif c[0] == 'up':
            paths.append(path)
            pen, path = False, []
        else:                               # 'down'
            pen, path = True, [(x, y)]
    paths.append(path)
    return paths


PROGRAM = [
    ('repeat', 2, [('forward', 42), ('right', 90), ('forward', 21), ('right', 90)]),
    ('up',),
    ('forward', 13), ('right', 90), ('forward', 5), ('left', 90),
    ('down',),
    ('repeat', 2, [('forward', 18), ('right', 90), ('forward', 31), ('right', 90)]),
]


def box(path):
    """Габариты фигуры: (min x, max x, min y, max y)."""
    xs = [p[0] for p in path]
    ys = [p[1] for p in path]
    return min(xs), max(xs), min(ys), max(ys)


first, second = figures(PROGRAM)
x1, x2, y1, y2 = box(first)
a1, a2, b1, b2 = box(second)

first_count = (x2 - x1 + 1) * (y2 - y1 + 1)      # точки первой фигуры с границей
second_count = (a2 - a1 + 1) * (b2 - b1 + 1)     # точки второй фигуры
left, right = max(x1, a1), min(x2, a2)
bottom, top = max(y1, b1), min(y2, b2)
common = max(0, right - left + 1) * max(0, top - bottom + 1)

print(first_count + second_count - common)       # включение-исключение: 1231

Ответ: 1231

Точки внутри одной фигуры

Пример условия

Исполнитель Черепаха: старт в начале координат, голова вдоль оси ординат, хвост опущен. Дан алгоритм:

Повтори 2 [Вперёд 36 Направо 90 Вперёд 43 Направо 90 Вперёд 29 Налево 90 Вперёд 9 Направо 90 Вперёд 7 Направо 90 Вперёд 52 Направо 90]

Сколько точек с целыми координатами лежит внутри фигуры, включая точки на её границе? Для этого примера ответ — 1700.

1. Контур — прямоугольник 52 × 36, из которого вырезан угол 9 × 29; Повтори 2 обводит его дважды, каждый отрезок считаем один раз. 2. Площадь: S = 52 · 36 − 9 · 29 = 1611. 3. Граничные точки — сумма длин сторон: 36 + 43 + 29 + 9 + 7 + 52 = 176. 4. Формула Пика S = В + Г2 − 1; нужное число точек В + Г = S + Г2 + 1.

На примере: 1611 + 88 + 1 = 1700.

Решение на Python
import math

DIR = {0: (1, 0), 90: (0, 1), 180: (-1, 0), 270: (0, -1)}


def outline(program):
    """Выполняет алгоритм Черепахи; возвращает один обход контура без повторов."""
    def flat(cmds):                         # Повтори -> плоский список команд
        return [c for cmd in cmds
                for c in (flat(cmd[2]) * cmd[1] if cmd[0] == 'repeat' else [cmd])]

    x = y = 0
    angle, pen = 90, True                   # старт: начало координат, голова вверх
    path = [(0, 0)]
    for c in flat(program):
        if c[0] == 'forward':
            dx, dy = DIR[angle % 360]
            x, y = x + c[1] * dx, y + c[1] * dy
            if pen:
                path.append((x, y))
        elif c[0] == 'right':
            angle -= c[1]
        elif c[0] == 'left':
            angle += c[1]

    # Повтори обводит контур несколько раз: оставляем отрезки по одному разу
    adj = {}
    for seg in {frozenset(p) for p in zip(path, path[1:])}:
        a, b = tuple(seg)
        adj.setdefault(a, []).append(b)
        adj.setdefault(b, []).append(a)

    start = min(adj)
    cycle, prev, cur = [start], None, start
    while True:
        nxt = next(v for v in adj[cur] if v != prev)
        prev, cur = cur, nxt
        if cur == start:
            break
        cycle.append(cur)
    return cycle


PROGRAM = [
    ('repeat', 2, [
        ('forward', 36), ('right', 90),
        ('forward', 43), ('right', 90),
        ('forward', 29), ('left', 90),
        ('forward', 9), ('right', 90),
        ('forward', 7), ('right', 90),
        ('forward', 52), ('right', 90),
    ]),
]

cycle = outline(PROGRAM)
edges = list(zip(cycle, cycle[1:] + cycle[:1]))

double_area = sum(x1 * y2 - x2 * y1 for (x1, y1), (x2, y2) in edges)   # формула шнурков
border = sum(math.gcd(abs(x2 - x1), abs(y2 - y1)) for (x1, y1), (x2, y2) in edges)

# формула Пика S = В + Г/2 − 1, значит В + Г = S + Г/2 + 1
print(abs(double_area) // 2 + border // 2 + 1)

Ответ: 1700

Точки на границе фигуры

Пример условия

Исполнитель Черепаха: старт в начале координат, голова вдоль оси ординат, хвост опущен. Дан алгоритм:

Повтори 2 [Вперёд 32 Направо 90 Вперёд 4 Направо 90 Вперёд 22 Налево 90 Вперёд 45 Направо 90 Вперёд 10 Направо 90 Вперёд 49 Направо 90]

Сколько точек с целыми координатами лежит на линиях, ограничивающих фигуру? Для этого примера ответ — 162.

1. Контур — шесть отрезков, Повтори 2 обводит его дважды, каждый отрезок считаем один раз. 2. У отдельного отрезка с разностями координат (dx; dy) на нём gcd(|dx|, |dy|) + 1 целых точек, включая оба конца. Сумма gcd по всем отрезкам замкнутого контура даёт все точки на линиях: каждая вершина считается один раз. 3. Здесь отрезки идут вдоль осей, поэтому gcd равен длине.

На примере: 32 + 4 + 22 + 45 + 10 + 49 = 162.

Решение на Python
import math

DIR = {0: (1, 0), 90: (0, 1), 180: (-1, 0), 270: (0, -1)}


def outline(program):
    """Выполняет алгоритм Черепахи; возвращает один обход контура без повторов."""
    def flat(cmds):                         # Повтори -> плоский список команд
        return [c for cmd in cmds
                for c in (flat(cmd[2]) * cmd[1] if cmd[0] == 'repeat' else [cmd])]

    x = y = 0
    angle, pen = 90, True                   # старт: начало координат, голова вверх
    path = [(0, 0)]
    for c in flat(program):
        if c[0] == 'forward':
            dx, dy = DIR[angle % 360]
            x, y = x + c[1] * dx, y + c[1] * dy
            if pen:
                path.append((x, y))
        elif c[0] == 'right':
            angle -= c[1]
        elif c[0] == 'left':
            angle += c[1]

    # Повтори обводит контур несколько раз: оставляем отрезки по одному разу
    adj = {}
    for seg in {frozenset(p) for p in zip(path, path[1:])}:
        a, b = tuple(seg)
        adj.setdefault(a, []).append(b)
        adj.setdefault(b, []).append(a)

    start = min(adj)
    cycle, prev, cur = [start], None, start
    while True:
        nxt = next(v for v in adj[cur] if v != prev)
        prev, cur = cur, nxt
        if cur == start:
            break
        cycle.append(cur)
    return cycle


PROGRAM = [
    ('repeat', 2, [
        ('forward', 32), ('right', 90),
        ('forward', 4), ('right', 90),
        ('forward', 22), ('left', 90),
        ('forward', 45), ('right', 90),
        ('forward', 10), ('right', 90),
        ('forward', 49), ('right', 90),
    ]),
]

cycle = outline(PROGRAM)

# сумма gcd по замкнутому контуру — все целые точки на линиях, каждая вершина один раз
print(sum(math.gcd(abs(x2 - x1), abs(y2 - y1))
          for (x1, y1), (x2, y2) in zip(cycle, cycle[1:] + cycle[:1])))

Ответ: 162

Шаблон кода на Python

Черепаха: рисунок в масштабе и точки в узлах

Программу Черепахи переписываете командами turtle и умножаете длины на масштаб k. Точки в целых узлах помогают посчитать ответ по рисунку — в песочнице он появится под выводом.

Python
from turtle import *

tracer(0)    # рисовать сразу, без анимации
k = 20       # масштаб: единица условия — 20 точек экрана

left(90)     # голова Черепахи — вдоль оси ординат
for i in range(2):
    forward(8 * k); right(90); forward(12 * k); right(90)

# точки в целых узлах вокруг фигуры
up()
for x in range(-2, 15):
    for y in range(-2, 11):
        goto(x * k, y * k)
        dot(3)
done()

Вывода нет — в песочнице под кодом появится рисунок.

Шаблоны кода ко всем заданиям

Как выполнять задание

  1. Помните старт: Черепаха в начале координат, голова вдоль положительного направления оси ординат, хвост опущен — первое «Вперёд» ведёт вверх.
  2. Разверните циклы: Повтори k [ … ] повторяет команды k раз; проследите движение и выпишите координаты поворотов.
  3. При поднятом хвосте линия не рисуется: следующая фигура начинается из сдвинутой точки.
  4. Уточните вопрос: точки строго внутри, вместе с границей, в пересечении, в объединении или только на линиях.
  5. Если решаете программой, нарисуйте фигуры модулем turtle в масштабе k = 10 (перед рисованием нужен left(90) — в Python голова сначала смотрит вправо), отметьте точки dot() и пересчитайте их по рисунку либо посчитайте точки формулами по координатам фигур. В ответ идёт одно целое число.

Что нужно знать

  • Чтение алгоритма. Старт — начало координат, голова вдоль оси ординат. «Направо 90» поворачивает по часовой стрелке, «Налево 90» — против, «Назад n» ведёт против направления головы.
  • Цикл. Повтори k [Вперёд a Направо 90 Вперёд b Направо 90] при k ≥ 2 обводит один и тот же прямоугольник a × b; поднятый хвост линию не рисует, а переносит Черепаху.
  • Прямоугольник a × b со сторонами вдоль осей: строго внутри (a − 1)(b − 1) точек, вместе с границей (a + 1)(b + 1).
  • Пересечение и объединение. Пересечение — прямоугольник [max(x1, x3); min(x2, x4)] × [max(y1, y3); min(y2, y4)]; для объединения из суммы точек вычитают общую часть. Формула Пика: S = В + Г2 − 1.

Как оценивается

Проверка автоматическая, по ключу: ответ должен быть записан в форме из условия и полностью совпасть с эталоном. Код и черновики не проверяют — значение имеет только ответ. За верный ответ — 1 балл, частичного балла нет.

Критерии всех заданий экзамена — на странице критериев ЕГЭ.

Разбор задания демоверсии 2027

В демоверсии 2027 года первый цикл Повтори 6 [Вперёд 24 Направо 90 Вперёд 30 Направо 90] обводит прямоугольник 30 × 24 с углом в начале координат: за две итерации контур замыкается. Затем хвост поднят: Вперёд 2 уводит в точку (0; 2), после поворота Вперёд 10 — в (10; 2), там хвост опускается. Второй цикл рисует прямоугольник 71 × 75 с углом в (10; 2).

Спрашивают точки в пересечении: общая часть — 10 ≤ x ≤ 30 и 2 ≤ y ≤ 24. По x это 21 значение, по y — 23, всего 21 · 23 = 483. Ключ ФИПИ — 483.

Типичные ошибки

Направление головы прочитано как «вправо»

Голова направлена вдоль положительного направления оси ординат, то есть вверх. Кто считает, что она смотрит вправо, поворачивает всю фигуру на 90° и получает другой ответ.

Каждый повтор цикла принят за новую фигуру

Повтори 2 [Вперёд a Направо 90 Вперёд b Направо 90] за две итерации замыкает прямоугольник a × b, а следующие повторы обводят тот же контур: новых точек они не добавляют.

Поднятый хвост оставляет след

Пока хвост поднят, Черепаха только меняет положение. Лишний отрезок сдвинет вторую фигуру, и пересечение посчитается не там, где нужно.

При объединении фигуры просто складывают

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

Модуль turtle без поворота и масштаба

В модуле turtle голова сначала смотрит вдоль оси x, поэтому перед рисованием нужен left(90). Длины умножают на масштаб k = 10: без него фигура 52 × 20 сожмётся в точку и узлы сетки наложатся друг на друга.

Вопросы и ответы

Можно ли решить задание 6 без программы?

Да. Все данные есть в условии, а стороны фигур — десятки единиц. Хватает формул: число точек в прямоугольнике, в пересечении, в объединении, а для фигуры со «ступенькой» — формула Пика.

Как считать точки при объединении фигур?

По включению-исключению: точки первой фигуры плюс точки второй минус точки их пересечения. Иначе общие точки посчитались бы дважды.

Как выполнить алгоритм на Python или КуМире?

Команды КИМ совпадают с командами исполнителя Черепаха в КуМире и с модулем turtle в Python. В Python сначала поставьте left(90) — там голова смотрит вправо, — а длины умножьте на масштаб k = 10. Дальше либо пересчитайте точки по рисунку, либо посчитайте их формулами по координатам фигур.

Сколько баллов даёт задание 6 и сколько на него времени?

1 балл, частичного балла нет. По обобщённому плану ФИПИ отведено около 4 минут, уровень базовый, специализированное ПО не требуется.

Что изменилось в задании 6 в 2027 году?

Ничего. По спецификации «Изменения структуры КИМ отсутствуют», тематика задания 6 в списке изменённых тем 2027 года не названа.

Другие задания раздела «Алгоритмы и программирование»

По демоверсии, спецификации и кодификатору ФИПИ 2027
Обновлено:

Все задания ЕГЭ по информатике →