Тема 6. Алгоритмы – определение результата

6.01 Определение результатов работы простейших алгоритмов управления исполнителями

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгоритмы – определение результата
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#136857

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 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]

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

Показать ответ и решение

Идея решения:

Для моделирования движения Черепахи используем модуль turtle. Сначала реализуем первую фигуру через цикл с двумя повторами. Затем поднимаем хвост, смещаемся на нужное расстояние, поворачиваем, и опускаем хвост для построения второй фигуры (тоже через цикл). Чтобы было удобно анализировать пересечение, используем масштабирование (например, умножаем все отрезки на 12). После построения обеих фигур перебираем точки с целочисленными координатами в заданном диапазоне, отмечаем их на экране и в дальнейшем можно посчитать количество точек, попавших внутрь объединения.

Решение:

# Подключаем модуль для исполнителя Черепаха
from turtle import *

# Масштаб для увеличения фигур
m = 12

# Отключаем анимацию для быстрого выполнения
tracer(0)

# Опускаем хвост, начинаем рисовать
pd()

# Направляем голову вверх (по оси y)
left(90)

# Первая фигура, цикл из двух повторов
for i in range(2):
    # Двигаемся вперёд на 14 единиц
    forward(14 * m)
    # Поворачиваем налево на 270°
    left(270)
    # Двигаемся назад на 12 единиц
    backward(12 * m)
    # Поворачиваем направо на 90°
    right(90)

# Поднимаем хвост, чтобы перемещаться без рисования
pu()

# Смещаемся вперёд на 9 единиц
forward(9 * m)
# Поворачиваем направо на 90°
right(90)
# Смещаемся вперёд на 7 единиц
backward(7 * m)
# Поворачиваем налево на 90°
left(90)

# Опускаем хвост для рисования второй фигуры
pd()

# Вторая фигура, цикл из двух повторов
                                                                                                  
                                                                                                  
for i in range(2):
    # Двигаемся вперёд на 13 единиц
    forward(13 * m)
    # Поворачиваем направо на 90°
    right(90)
    # Двигаемся вперёд на 6 единиц
    forward(6 * m)
    # Поворачиваем направо на 90°
    right(90)

# Поднимаем хвост для проставления точек
pu()

# Перебираем точки с целыми координатами
for x in range(-50, 50):
    for y in range(-50, 50):
        # Переходим в точку (x,y)
        goto(x * m, y * m)
        # Ставим точку
        dot(3)

# Завершаем выполнение графики
done()

Необходимо посчитать количество точек внутри объединения фигур, включая точки на границах пересечения:

PIC

Получаем 56 красных точек и 195 зеленых, общее количество равно:

56 + 195 = 251
Ответ: 251

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!