6. Определение результатов работы простейших алгоритмов управления исполнителями
Ошибка.
Попробуйте повторить позже
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд (где — целое число), вызывающая передвижение Черепахи на единиц в том направлении, куда указывает её голова, Направо (где — целое число), вызывающая изменение направления движения на градусов по часовой стрелке, и Налево (где — целое число), вызывающая изменение направления движения на градусов против часовой стрелки.
Запись Повтори [Команда Команда …Команда] означает, что последовательность из команд повторится раз.
Черепахе был дан для исполнения следующий алгоритм:
Повтори [Вперёд Направо Налево Вперёд Налево Вперёд Налево Вперёд Направо Вперёд Налево Вперёд Налево Вперёд Вперёд Налево Вперёд Налево ].
Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.
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()
Вывод программы:
Аналитически:
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)
Ошибка.
Попробуйте повторить позже
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд (где — целое число), вызывающая передвижение Черепахи на единиц в том направлении, куда указывает её голова, и Направо (где — целое число), вызывающая изменение направления движения на градусов по часовой стрелке.
Запись Повтори [Команда Команда …Команда] означает, что последовательность из команд повторится раз.
Черепахе был дан для исполнения следующий алгоритм:
Повтори [Направо Вперёд Направо Вперёд Направо Вперёд Направо ].
Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.
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()
Вывод программы:
Посчитаем количество точек внутри фигуры, их получилось
Ошибка.
Попробуйте повторить позже
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд (где — целое число), вызывающая передвижение Черепахи на единиц в том направлении, куда указывает её голова, и Направо (где — целое число), вызывающая изменение направления движения на градусов по часовой стрелке.
Запись Повтори [Команда Команда …Команда] означает, что последовательность из команд повторится раз.
Черепахе был дан для исполнения следующий алгоритм:
Повтори [Вперёд Направо ].
Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.
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()
Вывод программы:
Необходимо посчитать количество точек внутри фигуры, их получилось
Ошибка.
Попробуйте повторить позже
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд 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