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

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

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

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

Задача 1#63331

Исполнитель Цапля действует на плоскости с декартовой системой координат. В начальный момент Цапля находится в начале координат, её клюв направлен вдоль положительного направления оси ординат, клюв опущен. При опущенном клюве Цапля оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует три команды: Вперёд n  (где n  — целое число), вызывающая передвижение Цапли на n  единиц в том направлении, куда указывает её клюв; Направо m  (где m  — целое число), вызывающая изменение направления движения на m  градусов по часовой стрелке; Дуга r,a,b,α  (где r,a,b,α  — целые числа), вызывающая передвижение Цапли из текущей точки с координатами (x,y)  по дуге окружности с центром в точке с координатами (x+ a,y+ b)  и радиусом r  , градусная мера дуги равна α  , движение по дуге идёт по часовой стрелке.

Запись Повтори k  [Команда1  Команда2  …КомандаS  ] означает, что последовательность из S  команд повторится k  раз.

Цапле был дан для исполнения следующий алгоритм:

Направо 180  Вперед 3  Направо 90  Вперед 48  Направо 90  Вперед 3

Повтори 6  [Дуга 4,4,0,180  ].

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

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

Решение 1: Руками

После анализа алгоритма получаем следующий рисунок.

PIC

В одной такой фигуре ровно 40  точек.

PIC

У нас таких фигур 6  . Также 2  точки находится на пересечении фигур. Получаем ответ 6 ⋅40+ 10 = 250  .

Решение 2: Программно

from turtle import *
left(90)

tracer(0)
k = 5

seth(90)
right(180)
forward(3 * k)
right(90)
forward(48 * k)
right(90)
forward(3 * k)

for i in range(6):
    seth(90)
    circle(-4 * k, 180)
penup()

for x in range(0, -50, -1):
    for y in range(-5, 10):
        goto(x * k, y * k)
        dot(2)
done()

Остается лишь посчитать количество точек у получившейся фигуры.

Ответ: 250

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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