Задание №6 ЕГЭ Информатика с ответом и решением
Ответ: 38
Условие
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд n (где n — целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова, и Направо m (где m — целое число), вызывающая изменение направления движения на m градусов по часовой стрелке. Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм: Повтори 12 [Направо 60 Вперёд 1 Направо 60 Вперёд 1 Направо 270].
Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.
Подсказки — как подойти к решению
- Шаги здесь совсем короткие, а поворотов много: сначала выпиши последовательность направлений и координат всех вершин, чтобы понять, какая фигура получается и замыкается ли линия.
- Убедись, что контур не пересекает сам себя и, возможно, проходится несколько раз: на количество точек это не влияет, важен только контур. По вершинам определи форму фигуры.
- Задай внутреннюю область неравенствами или через отрезки контура и перебери целые точки в диапазоне, охватывающем фигуру целиком; для наклонных сторон проверяй точки подстановкой. Учитывай только внутренние точки.
Решение
Решим эту задачу, используя язык программирования Python.
import turtle as t # Подключим модуль черепашка
k = 50 # коэффициент для настраивания более удобного масштаба
t.left(90)
for i in range(12): # пропишем алгоритм построения фигуры по условию
t.right(60)
t.forward(1 * k)
t.right(60)
t.forward(1 * k)
t.right(270)
t.up()
t.speed(10) # Увеличим скорость черепашки
for x in range(5, -4, - 1): # Алгоритм построения точек
for y in range(5, -10, - 1):
t.goto(x * k, y * k)
t.dot(4) # точки размером 4 пикселя
t.done()
Теперь посчитаем количество точек внутри нарисованной фигуры, получаем 38.
Ответ: 38.
Приведём построение рисунка Сергея Донец на языке PascalABC.NET.
uses turtle;
begin
down;
loop 12 do
begin
TurnRight(60); Forw(1);
TurnRight(60); Forw(1);
TurnRight(270);
end;
end.
Ответ: 38
Типичные ошибки
- Посчитаны и точки, лежащие на линии, а в условии сказано учитывать только внутренние. Вычти из результата точки на контуре.
- Перебор шёл только по неотрицательным абсциссам, а часть фигуры лежит левее оси ординат. Бери диапазон с запасом в обе стороны.
В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №6 по информатике