ЕГЭ 2027 · Информатика
Задание 6 ЕГЭ по информатике
Что проверяет линия, сколько она стоит, на чём теряют баллы и как решать — по нашим конспектам. В банке 200+ заданий этой линии с разбором.
Аналитика ЕГЭ: №6 (геометрический исполнитель Черепаха)
- Баллы
- 1 первичный балл
- Частота
- в каждом варианте
Частые ловушки
- Забывают, что в начале голова направлена вдоль оси ординат (вверх), а не вправо
- Путают направление: Направо — по часовой стрелке, Налево — против
- Не замечают, что Налево 270 и Направо 90 дают один и тот же поворот
- Считают все целые точки фигуры, хотя спрашивают строго внутренние — точки на самой линии не считаются
- Для непрямоугольных фигур пробуют формулу (a−1)(b−1), которая работает только для прямоугольника со сторонами по осям
Совет. Универсальный инструмент — теорема Пика: S = I + B/2 − 1, откуда I = S − B/2 + 1, где S — площадь, B — число целых точек на границе
Разборы
Разбор примера
Полный разбор задания 6: от команд до числа точек
Черепахе дан алгоритм: Вперёд 13, Направо 90, Вперёд 5, Налево 270, Вперёд 5, Направо 270, Вперёд 6, Налево 90, Вперёд 5, Направо 90, Вперёд 3, Направо 90, Вперёд 13, Направо 90, Вперёд 14. Сколько точек с целочисленными координатами лежит строго внутри полученной замкнутой фигуры?
Показать решение по шагам
- 1. Шаг 1. Стартуем в (0, 0), голова смотрит вверх. «Вперёд 13» → приходим в (0, 13).
- 2. Шаг 2. «Направо 90» — теперь голова смотрит вправо. «Вперёд 5» → (5, 13).
- 3. Шаг 3. «Налево 270» равносильно «Направо 90», голова смотрит вниз. «Вперёд 5» → (5, 8).
- 4. Шаг 4. «Направо 270» равносильно «Налево 90», голова смотрит вправо. «Вперёд 6» → (11, 8).
- 5. Шаг 5. «Налево 90» — голова вверх. «Вперёд 5» → (11, 13). Затем «Направо 90» (вправо) и «Вперёд 3» → (14, 13).
- 6. Шаг 6. «Направо 90» — голова вниз. «Вперёд 13» → (14, 0). «Направо 90» — голова влево. «Вперёд 14» → (0, 0): линия замкнулась ✔
- 7. Шаг 7. Считаем площадь по шнуровке для вершин (0,0), (0,13), (5,13), (5,8), (11,8), (11,13), (14,13), (14,0). Удобнее разбить фигуру: это прямоугольник 14 × 13 = 182 минус вырез 6 × 5 = 30 сверху между x = 5 и x = 11. S = 182 − 30 = 152.
- 8. Шаг 8. Считаем точки на границе. Все стороны вертикальные или горизонтальные, поэтому вклад каждой равен её длине: 13 + 5 + 5 + 6 + 5 + 3 + 13 + 14 = 64.
- 9. Шаг 9. Применяем теорему Пика: I = S − B/2 + 1 = 152 − 32 + 1 = 121.
- 10. Самопроверка: у сплошного прямоугольника 14 × 13 внутренних точек было бы 13 · 12 = 156; вырез убирает часть — 121 < 156, порядок правдоподобен ✔
Ответ: 121
Разбор примера
Простой случай: прямоугольник
Черепахе дан алгоритм: Вперёд 12, Направо 90, Вперёд 9, Направо 90, Вперёд 12, Направо 90, Вперёд 9. Сколько целых точек лежит строго внутри полученной фигуры?
Показать решение по шагам
- 1. Шаг 1. Отслеживаем координаты: (0,0) → вверх на 12 → (0, 12) → вправо на 9 → (9, 12) → вниз на 12 → (9, 0) → влево на 9 → (0, 0). Фигура замкнулась.
- 2. Шаг 2. Это прямоугольник со сторонами 9 и 12, параллельными осям.
- 3. Шаг 3. Для такого прямоугольника внутренние точки образуют решётку из (9 − 1) столбцов и (12 − 1) строк: I = 8 · 11 = 88.
- 4. Шаг 4. Проверим через Пика: S = 9 · 12 = 108; B = 2 · (9 + 12) = 42; I = 108 − 21 + 1 = 88 ✔ Оба способа совпали.
- 5. Вывод: формулу (a − 1)(b − 1) можно применять только к прямоугольнику со сторонами по осям; во всех остальных случаях считаем по Пику.
Ответ: 88
Разбор примера
Черепаха на Python: интерпретатор, шнуровка и Пик
Черепахе дан алгоритм: Вперёд 9, Направо 90, Вперёд 4, Налево 270, Вперёд 3, Направо 270, Вперёд 3, Налево 90, Вперёд 3, Направо 90, Вперёд 6, Налево 270, Вперёд 9, Налево 270, Вперёд 13. Линия замкнулась. Сколько целых точек лежит строго внутри? Написать программу, которая решает любое такое задание.
Показать решение по шагам
- 1.
Шаг 1. Считать такие задачи руками можно, но на экзамене команд бывает два десятка, а поворот на 270 путает всех. Надёжнее один раз написать интерпретатор и потом просто вставлять в него текст алгоритма. Программа целиком:
```python import math
- • programma = '''Вперёд 9
- • Направо 90
- • Вперёд 4
- • Налево 270
- • Вперёд 3
- • Направо 270
- • Вперёд 3
- • Налево 90
- • Вперёд 3
- • Направо 90
- • Вперёд 6
- • Налево 270
- • Вперёд 9
- • Налево 270
- • Вперёд 13'''
x = y = 0 ugol = 90 vershiny = [(0, 0)]for komanda in programma.split('\n'): slovo, chislo = komanda.split()
n = int(chislo) if slovo in ('Вперёд', 'Назад'): shag = n if slovo == 'Вперёд' else -n x += round(math.cos(math.radians(ugol))) * shag y += round(math.sin(math.radians(ugol))) * shag vershiny.append((x, y)) elif slovo == 'Направо': ugol = (ugol - n) % 360 else: ugol = (ugol + n) % 360print(vershiny) ```
- 2. Шаг 2. Ключевое решение здесь — хранить направление углом в градусах, а не парой сдвигов. Старт
ugol = 90— это и есть «голова вдоль положительного направления оси ординат»: косинус 90° равен нулю, синус — единице, то есть шаг вперёд увеличиваетy. Направо уменьшает угол, Налево увеличивает, остаток% 360держит его в пределах круга. - 3. Шаг 3. Зачем round вокруг косинуса? Потому что
math.cos(math.radians(90))возвращает не ровно ноль, а6.1e-17— обычная плата за вещественные числа. Без округления координаты станут дробными вроде3.9999999999999996, и дальше ни целые точки, ни НОД работать не будут. Для углов, кратных 90°,roundдаёт ровно 0, 1 или −1. - 4. Шаг 4. Проследим первые команды. Старт:
x = 0, y = 0, ugol = 90. Вперёд 9: косинус 0, синус 1 → точка становится (0, 9). Направо 90: угол 90 − 90 = 0, голова смотрит вправо. Вперёд 4: косинус 1, синус 0 → (4, 9). - 5. Шаг 5. Налево 270: угол 0 + 270 = 270, голова смотрит вниз. Заметьте, что это ровно то же, что Направо 90: 0 − 90 = −90, а −90 % 360 в Python даёт 270. Остаток от отрицательного числа в Python неотрицателен, и это именно то поведение, которое здесь нужно. Вперёд 3 → (4, 6).
- 6. Шаг 6. Дальше по тому же правилу: Направо 270 (угол 270 − 270 = 0, вправо), Вперёд 3 → (7, 6); Налево 90 (угол 90, вверх), Вперёд 3 → (7, 9); Направо 90 (угол 0, вправо), Вперёд 6 → (13, 9); Налево 270 (угол 270, вниз), Вперёд 9 → (13, 0); Налево 270 (угол 180, влево), Вперёд 13 → (0, 0). Вернулись в старт — линия замкнута.
- 7.
Шаг 7. Список вершин:
(0,0), (0,9), (4,9), (4,6), (7,6), (7,9), (13,9), (13,0). Теперь вторая половина программы — площадь и граница:```python
if vershiny[0] == vershiny[-1]: vershiny = vershiny[:-1]udvoennaya_ploshchad = 0 granica = 0 k = len(vershiny) for i in range(k):x1, y1 = vershiny[i] x2, y2 = vershiny[(i + 1) % k]
udvoennaya_ploshchad += x1 * y2 - x2 * y1 granica += math.gcd(abs(x2 - x1), abs(y2 - y1))S = abs(udvoennaya_ploshchad) / 2 vnutri = int(S - granica / 2 + 1) print('S =', S, 'B =', granica, 'внутри =', vnutri)```
- 8. Шаг 8. Выражение
vershiny[(i + 1) % k]замыкает обход: у последней вершины следующей становится нулевая. Это стандартный приём для многоугольников, и он избавляет от отдельной обработки последней стороны. Строка перед циклом убирает повторённую стартовую точку, иначе одна сторона нулевой длины посчитается дважды и НОД(0, 0) даст ноль — не ошибка, но путаницу. - 9. Шаг 9. Трассировка подсчёта. Формула шнуровки накапливает
x₁·y₂ − x₂·y₁по парам вершин; после обхода модуль суммы равен 216, значит S = 108. Граница: НОД по сторонам даёт 9 + 4 + 3 + 3 + 3 + 6 + 9 + 13 = 50 — как и обещано, для сторон вдоль осей это просто периметр. - 10. Шаг 10. Формула Пика:
I = S − B/2 + 1 = 108 − 25 + 1 =84. Программа печатаетS = 108.0 B = 50 внутри = 84. Проверить результат можно грубой силой — перебрать все целые точки в охватывающем прямоугольнике и посчитать попадания; на полях размером десятки единиц это мгновенно и служит отличной страховкой, если сомневаетесь в формуле. - 11. Шаг 11. Один раз набранный интерпретатор решает любое задание 6: меняется только текст в тройных кавычках. Тройные кавычки нужны как раз затем, чтобы вставить многострочный алгоритм как есть, ничего не переписывая. Это экономит на экзамене не столько минуты, сколько нервы: ошибку в повороте на 270 глазами найти почти невозможно, а программа её просто не делает.
Ответ: 84
Разбор примера
«Назад», повороты на 270 и вопрос «включая границу»
Алгоритм: Вперёд 14, Направо 270, Назад 6, Налево 90, Вперёд 5, Налево 270, Назад 4, Налево 90, Вперёд 9, Налево 270, Вперёд 10. Сколько целых точек находится внутри полученной области, включая точки на самой линии?
Показать решение по шагам
- 1. Шаг 1. Здесь сразу две ловушки: команда Назад и другая формулировка вопроса. Разберём сначала движение, шаг за шагом отслеживая и точку, и направление головы.
- 2. Шаг 2. Старт (0, 0), голова вверх. Вперёд 14 → (0, 14), голова вверх. Направо 270 — поворот на 270° по часовой стрелке, то есть голова смотрит влево.
- 3. Шаг 3. Назад 6 — сдвиг на 6 в сторону, противоположную голове, то есть вправо: точка становится (6, 14). И главное: направление головы не изменилось, она по-прежнему смотрит влево. Вот здесь теряют больше всего баллов — следующий поворот отсчитывается от «влево», а не от фактического направления движения.
- 4. Шаг 4. Налево 90 от направления «влево» даёт вниз. Вперёд 5 → (6, 9). Налево 270 от «вниз» даёт влево. Назад 4 — снова сдвиг в противоположную сторону, то есть вправо: (10, 9), голова смотрит влево.
- 5. Шаг 5. Налево 90 от «влево» → вниз. Вперёд 9 → (10, 0). Налево 270 от «вниз» → влево. Вперёд 10 → (0, 0). Линия замкнулась. Вершины:
(0,0), (0,14), (6,14), (6,9), (10,9), (10,0). - 6. Шаг 6. Проверим себя интерпретатором из предыдущего разбора — он обрабатывает
Назадтем же кодом, просто со знаком минус в шаге. Вывод:[(0, 0), (0, 14), (6, 14), (6, 9), (10, 9), (10, 0), (0, 0)]— ровно то, что мы получили руками. Ценность программы именно в этом: она не путается в «Назад после Направо 270». - 7. Шаг 7. Площадь. Фигура ступенчатая; разрежем её горизонталью
y = 9. Нижняя часть — прямоугольник 10 × 9 = 90, верхняя — 6 × 5 = 30. Итого S = 120. Формула шнуровки даёт то же самое, и на экзамене лучше довериться ей: разрезы легко сделать неправильно, если фигура сложнее ступеньки. - 8. Шаг 8. Граница. Все стороны вдоль осей, значит
Bравно периметру: 14 + 6 + 5 + 4 + 9 + 10 = 48. Обратите внимание, что длины берутся по координатам вершин, а не из текста алгоритма: команда «Назад 6» дала сторону длиной 6, но окажись в алгоритме два подряд движения в одну сторону, они слились бы в одну сторону двойной длины. - 9. Шаг 9. Число строго внутренних точек:
I = S − B/2 + 1 = 120 − 24 + 1 =97. Но вопрос задан иначе — «включая точки на самой линии». Значит, к внутренним точкам надо прибавить граничные:97 + 48 =145. - 10. Шаг 10. Вот цена невнимательности: 97 и 145 — два совершенно разных ответа для одной и той же фигуры, и оба «правильные» для своей формулировки. Перечитывать последнее предложение условия перед тем, как записать ответ, — обязательная привычка в линии 6. Формулировок ровно две: «строго внутри, точки на линии не учитываются» →
I; «включая точки на линии» →I + B.
Ответ: 145 (строго внутри было бы 97)
Уроки по этой линии
- Геометрические исполнители (Черепаха)
Потренируй задание 6
Задания этой линии с проверкой и разбором решения — после бесплатной регистрации. Ошибки сами попадут в план повторения.