Объединение, есть «Назад» и «Налево 270»
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова; Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки. Запись Повтори k [Команда1 Команда2 ... КомандаS] означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм. Повтори 2 [Вперёд 14 Налево 270 Назад 12 Направо 90] Поднять хвост Вперёд 9 Направо 90 Назад 7 Налево 90 Опустить хвост Повтори 2 [Вперёд 13 Направо 90 Вперёд 6 Направо 90] Определите, сколько точек с целочисленными координатами находятся внутри объединения фигур, ограниченного заданными алгоритмом линиями, включая точки на линиях.
Источник: ФИПИ (Демо), № 23743
Показать разбор
- Возьми шаблон черепахи из урока и настрой его: m = 20, точки range(-15, 5) по x и range(-3, 25) по y.
- Вместо комментария подставь команды условия: for i in range(2): fd(14 * m); lt(270); bk(12 * m); rt(90), затем up(), fd(9 * m); rt(90); bk(7 * m); lt(90), down(), и for i in range(2): fd(13 * m); rt(90); fd(6 * m); rt(90).
- Запусти и прочитай углы с рисунка. Налево 270 это то же, что направо 90, а из-за «Назад» первая фигура уходит влево. Первая: x от −12 до 0, y от 0 до 14. Вторая: x от −7 до −1, y от 9 до 22. Общая часть: x от −7 до −1, y от 9 до 14.
- С границей у каждой стороны n + 1 значение. Посчитай точки в первой фигуре, во второй и в общей части, затем подставь в формулу: A + B минус общая часть.