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

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

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

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

Задача 1#36162

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

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

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

Повтори 10000  [Вперёд 10  Направо 30  Налево 210  Вперёд 10  Налево 90  Вперёд 25  Налево   180  Вперёд 5  Направо 180  Вперёд 5  Налево 90  Вперёд 10  Налево 90  Вперёд 20  Вперёд 5  Налево    90  Вперёд 10  Налево 180  ].

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

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

Python:

from turtle import *  # Модуль для работы с исполнителем Черепаха

m = 20  # Масштаб
tracer(0)
screensize(1200,1200) # увеличим размер окна
pd() # опускаем хвост
left(90) # поворачиваем голову в сторону положительного направления оси ординат

# Алгоритм
for i in range(10000):
    forward(10 * m)
    right(30)
    left(210)
    forward(10 * m)
    left(90)
    forward(25 * m)
    left(180)
    forward(5 * m)
    right(180)
    forward(5 * m)
    left(90)
    forward(10 * m)
    left(90)
    forward(20 * m)
    forward(5 * m)
    left(90)
    forward(10 * m)
    left(180)



pu() # поднимаем хвост
# Проставление точек
for x in range(-45, 45):
    for y in range(-30, 40):
        goto(x * m, y * m)
        dot(3)
done()

Вывод программы:

PIC

Аналитически:

cnt = 0
for x in range(1, 100):
    for y in range(1, 100):
        if 0 < x < 25 and 0 < y < 10:
            cnt += 1
print(cnt)

Ответ: 216

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

Задача 2#36163

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

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

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

Повтори 10  [Направо 30  Вперёд 20  Направо 120  Вперёд 20  Направо 120  Вперёд 20  Направо 90  ].

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

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

Python

from turtle import *
screensize(1000, 1000)
tracer(0)
update()
r = 25
left(90)
for x in range(10):
    right(30)
    forward(20 * r)
    right(120)
    forward(20 * r)
    right(120)
    forward(20 * r)
    right(90)
up()
for x in range(-20, 20):
    for y in range(-20, 20):
        goto(x*r, y*r)
        dot(3)
done()

Вывод программы:

PIC

Посчитаем количество точек внутри фигуры, их получилось 163.

Ответ: 163

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

Задача 3#36178

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

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

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

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

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

Показать ответ и решение
cnt = 0
for x in range(-100, 100):
    for y in range(-100, 100):
        if (y < 1/3**0.5 * x + 10) and (y < 20 - 1/3**0.5 * x):
            if (x < 10 * 3**0.5) and (y > 1/3**0.5 * x - 10):
                if (y > -1/3**0.5 * x) and (x > 0):
                    cnt += 1
print(cnt)

Решение через модуль turtle в Python

from turtle import * # Модуль для работы с исполнителем Черепаха
m = 20 # Масштаб
tracer(0)
pd()
left(90)

# Алгоритм
for i in range(10):
    forward(10*m)
    right(60)

pu()
# Проставление точек
for x in range(-25, 25):
    for y in range(-20, 30):
        goto(x*m, y*m)
        dot(3)
done()

Вывод программы:

PIC

Необходимо посчитать количество точек внутри фигуры, их получилось 257.

Ответ: 257

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

Задача 4#62821

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

Повтори k [Команда1 Команда2 … КомандаS]

означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм:

Повтори N [ Вперёд 10 Направо 50 ]

Найдите минимальное значение числа N, при котором Черепаха оставит след в виде замкнутой ломанной линии.

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

Для нахождения замкнутой ломаной линии нужно, чтобы сумма поворотов была кратна 360. n можно найти простой программой на питоне:

for n in range(1, 100):
    if (50 * n) % 360 == 0:
        print(n)

Получаем 36

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