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

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

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

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

Задача 61#88390Максимум баллов за задание: 1

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, ее голова направлена вдоль отрицательного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперед n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает ее голова; Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.

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

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

Повтори 2 [Налево 90 Повтори 12 [Вперёд 13 Направо 30] Вперед 5]

Определите периметр фигуры, полученной при пересечении фигур, полученных в ходе выполнения данного алгоритма.

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

Решение с помощью программы:

Напишем программу, используя библиотеку turtle для визуализации движения Черепахи по заданному алгоритму. Основная цель — построить фигуру по алгоритму, а затем проверить, какие точки с целочисленными координатами лежат внутри неё. Для этого сначала выполняется алгоритм Черепахи, который рисует границу области по заданному в условии алгоритму. После этого необходимо отрисовать точки с целочисленными координатами, для того чтобы после завершения алгоритма посчитать их и вычислить искомую величину. Для удобства визуализации применяется масштабирование (через переменную m), иначе фигура будет слишком маленькой. Все перемещения умножаются на m.

from turtle import * # Модуль для работы с исполнителем Черепаха
m = 10 # Масштаб для увеличения видимости рисунка
tracer(0) # Ускорение анимации
pd() # Опускаем хвост
# Начальная ориентация Черепахи
right(90)
for i in range(2): # Повторить 2 раза
    left(90) # Налево 90
    for j in range(12): # Повторить 12 раз
        forward(13 * m) # Вперёд на 13 * m
        right(30) # Направо 30
    forward(5 * m) # Вперёд на 5 * m
pu() # Поднять хвост
# Расставляем точки с целыми координатами
for x in range(-25, 35): # Перебор абсцисс точек
    for y in range(-20, 30): # Перебор ординат точек
        goto(x * m, y * m) # Перемещение к точке (x, y)
        dot(3) # Ставим точку размером 3
done() # Завершение работы (окно остаётся открытым)

PIC

Сторона многоугольника равна 13. Периметр состоит из четырех полных сторон многоугольника и двух неполных, равных 8. Значит, периметр равен 4⋅13 +2 ⋅8 = 68  .

 

Решение в Кумире:

PIC

Сторона многоугольника равна 13. Периметр состоит из четырех полных сторон многоугольника и двух неполных, равных 8. Значит, периметр равен 4⋅13 +2 ⋅8 = 68  .

Ответ: 68

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

Задача 62#88391Максимум баллов за задание: 1

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, ее голова направлена вдоль отрицательного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперед n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает ее голова; Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.

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

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

Повтори 4 [Вперёд 3 Направо 135 Вперёд 2 Направо 135]

Вперёд 2 Направо 180 Вперёд 4

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

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

Решение с помощью программы:

Напишем программу, используя библиотеку turtle для визуализации движения Черепахи по заданному алгоритму. Основная цель — построить фигуру по алгоритму, а затем проверить, какие точки с целочисленными координатами лежат внутри неё. Для этого сначала выполняется алгоритм Черепахи, который рисует границу области по заданному в условии алгоритму. После этого необходимо отрисовать точки с целочисленными координатами, для того чтобы после завершения алгоритма посчитать их и вычислить искомую величину. Для удобства визуализации применяется масштабирование (через переменную m), иначе фигура будет слишком маленькой. Все перемещения умножаются на m.

from turtle import * # Модуль для работы с исполнителем Черепаха
m = 40 # Масштаб для увеличения видимости рисунка
tracer(0) # Ускорение анимации
pd() # Опускаем хвост
# Начальная ориентация Черепахи
right(90)
# Основной алгоритм Черепахи
for i in range(4): # Повторить 4 раза
    forward(3 * m) # Вперёд на 3 * m
    right(135) # Направо 135
    forward(2 * m) # Вперёд на 2 * m
    right(135) # Направо 135
forward(2 * m) # Вперёд на 2 * m
right(180) # Направо 180
forward(4 * m) # Вперёд на 4 * m
pu() # Поднять хвост
# Расставляем точки с целыми координатами
for x in range(-25, 25): # Перебор абсцисс точек
    for y in range(-20, 30): # Перебор ординат точек
        goto(x * m, y * m) # Перемещение к точке (x, y)
        dot(3) # Ставим точку размером 3
done() # Завершение работы (окно остаётся открытым)

PIC

Получаем 8 точек на границах фигур.  

Решение в Кумире:

PIC

Получаем 8 точек на границах фигур.

Ответ: 8

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

Задача 63#88392Максимум баллов за задание: 1

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, ее голова направлена вдоль отрицательного направления оси ординат, хвост поднят. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперед n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает ее голова; Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.

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

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

Опустить хвост

Повтори 3 [Вперёд 4 Направо 60]

Повтори 3 [Налево 30 Вперёд 7 Направо 60 Вперёд 4 Направо 30 Вперёд 9 Налево 60]

Определите количество звеньев ломаной очерченной заданными алгоритмом. В ответе укажите только число.

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

Решение с помощью программы:

Напишем программу, используя библиотеку turtle для визуализации движения Черепахи по заданному алгоритму. Основная цель — построить фигуру по алгоритму, а затем проверить, какие точки с целочисленными координатами лежат внутри неё. Для этого сначала выполняется алгоритм Черепахи, который рисует границу области по заданному в условии алгоритму. После этого необходимо отрисовать точки с целочисленными координатами, чтобы проще было различить звенья. Для удобства визуализации применяется масштабирование (через переменную m), иначе фигура будет слишком маленькой. Все перемещения умножаются на m.

from turtle import * # Модуль для работы с исполнителем Черепаха
m = 10 # Масштаб для увеличения видимости рисунка
tracer(0) # Ускорение анимации
pd() # Опускаем хвост
# Начальная ориентация Черепахи
right(90)
screensize(1000, 1000) # Выставляем размер окна, чтобы иметь возможность скролла в случае,
# если рисунок выйдет за грань.

# Основной алгоритм Черепахи
for i in range(3): # Повторить 3 раза
    forward(4 * m) # Вперёд на 4 * m
    right(60) # Направо 60
for i in range(3): # Повторить 3 раза
    left(30) # Налево 30
    forward(7 * m) # Вперёд на 7 * m
    right(60) # Направо 60
    forward(4 * m) # Вперёд на 4 * m
    right(30) # Направо 30
    forward(9 * m) # Вперёд на 9 * m
    left(60) # Налево 60
pu() # Поднять хвост
# Расставляем точки с целыми координатами
for x in range(-25, 25): # Перебор абсцисс точек
    for y in range(-20, 40): # Перебор ординат точек
        goto(x * m, y * m) # Перемещение к точке (x, y)
        dot(3) # Ставим точку размером 3
done() # Завершение работы (окно остаётся открытым)

PIC

 

Решение в Кумире:

PIC

Посчитаем количество звеньев (без учета точки с черепашкой).

Ответ: 12

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

Задача 64#88393Максимум баллов за задание: 1

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, ее голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперед n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает ее голова; Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.

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

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

Повтори 2 [Назад 7 Направо 100 Вперёд 12 Налево 300]

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

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

Решение с помощью программы:

Напишем программу, используя библиотеку turtle для визуализации движения Черепахи по заданному алгоритму. Основная цель — построить фигуру по алгоритму, а затем проверить, какие точки с целочисленными координатами лежат внутри неё. Для этого сначала выполняется алгоритм Черепахи, который рисует границу области по заданному в условии алгоритму. После этого необходимо отрисовать точки с целочисленными координатами, для того чтобы после завершения алгоритма посчитать их и вычислить искомую величину. Для удобства визуализации применяется масштабирование (через переменную m), иначе фигура будет слишком маленькой. Все перемещения умножаются на m.

from turtle import * # Модуль для работы с исполнителем Черепаха
m = 30 # Масштаб для увеличения видимости рисунка
tracer(0) # Ускорение анимации
pd() # Опускаем хвост
# Начальная ориентация Черепахи
# (по умолчанию — вдоль оси X, поворачиваем на 90° влево)
left(90)

# Основной алгоритм Черепахи
for i in range(2):  # Повторить 2 раза
    backward(7 * m) # Вперёд на 7 * m
    right(100) # Направо 120
    forward(12 * m) # Вперёд на 12 * m
    left(300) # Налево 300

pu() # Поднять хвост
# Расставляем точки с целыми координатами
for x in range(-25, 25): # Перебор абсцисс точек
    for y in range(-20, 30): # Перебор ординат точек
        goto(x*m, y*m) # Перемещение к точке (x, y)
        dot(3) # Ставим точку размером 3
done() # Завершение работы (окно остаётся открытым)

PIC

Посчитаем количество точек.  

Решение в Кумире:

PIC

Посчитаем количество точек.

Ответ: 49

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

Задача 65#88394Максимум баллов за задание: 1

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, ее голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперед n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает ее голова; Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.

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

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

Направо 45

Повтори 3 [Вперёд 4 Направо 120]

Направо 10 Вперёд 3

Повтори 6 [Направо 60 Вперёд 5 Направо 120 Вперёд 2]

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

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

Решение с помощью программы:

Напишем программу, используя библиотеку turtle для визуализации движения Черепахи по заданному алгоритму. Основная цель — построить фигуру по алгоритму, а затем проверить, какие точки с целочисленными координатами лежат внутри неё. Для этого сначала выполняется алгоритм Черепахи, который рисует границу области по заданному в условии алгоритму. После этого необходимо отрисовать точки с целочисленными координатами, для того чтобы после завершения алгоритма посчитать их. Для удобства визуализации применяется масштабирование (через переменную m), иначе фигура будет слишком маленькой. Все перемещения умножаются на m.

from turtle import * # Модуль для работы с исполнителем Черепаха
m = 30 # Масштаб для увеличения видимости рисунка
tracer(0) # Ускорение анимации
pd() # Опускаем хвост
# Начальная ориентация Черепахи
# (по умолчанию — вдоль оси X, поворачиваем на 90° влево)
left(90)

# Основной алгоритм Черепахи

right(45) # Направо 45
for i in range(3): # Повторить 3 раза
    forward(4 * m) # Вперёд на 4 * m
    right(120) # Направо 120
right(10) # Направо 10
forward(3 * m) # Вперёд на 3 * m
for i in range(6): # Повторить 6 раз
    right(60) # Направо 60
    forward(5 * m) # Вперёд на 5 * m
    right(120) # Направо 120
    forward(2 * m) # Вперёд на 2 * m
pu() # Поднять хвост
# Расставляем точки с целыми координатами
for x in range(-25, 25): # Перебор абсцисс точек
    for y in range(-20, 30): # Перебор ординат точек
        goto(x*m, y*m) # Перемещение к точке (x, y)
        dot(3) # Ставим точку размером 3
done() # Завершение работы (окно остаётся открытым)

PIC

Видим внутри пересечения 3 точки.  

Решение в Кумире:

PIC

Видим внутри пересечения 3 точки.

Ответ: 3

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

Задача 66#136857Максимум баллов за задание: 1

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