Тип 6 №47407
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. Черепахе был дан для исполнения следующий алгоритм:
Повтори 4 [Вперёд 8 Направо 90]
Повтори 3 [Вперёд 12 Направо 120]
Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом: Повтори 4 [Вперёд 8 Направо 90]
и находиться вне области, ограниченной линией, заданной данным алгоритмом: Повтори 3 [Вперёд 12 Направо 120]. Точки на линии учитывать не следует.
Комментарии к каждой строчке решения:
import turtle as t
- Импортируем модульturtle
и переименовываем его вt
для удобства.t.tracer(0)
- Отключаем анимацию для ускорения отрисовки картинки, зачем нам тратить время на экзамене.t.left(90)
- Поворачиваем голову черепахи на 90 градусов влево, чтобы соответствовать условию: “её голова направлена вдоль положительного направления оси ординат”.l = 30
- Инициализируем переменнуюl
для установки удобного нам мсштаба отрисовки.for _ in range(4):
- В соответсвии с псевдокодом задачи запускаем цикл для рисования квадрата.t.forward(8*l)
- Перемещение черепахи вперед на 8 шагов.t.right(90)
- Поворот черепахи на 90 градусов вправо.t.color('green')
- Установка цвета черепахи на зеленый, для удобства отрисовки второй фигуры.for _ in range(3):
- Запускаем второй цикл для рисования равностороннего треугольника (вторая фигура*).t.forward(12 * l)
- Перемещение черепахи вперед на 12 шагов.t.right(120)
- Поворот черепахи на 120 градусов вправо.t.up()
- Поднимем перо для перемещения без рисования.for x in range(-30, 30):
- Во вложенном цикле перебираем переменныех
иy
для отрисовки точек по сетке.for y in range(-30, 30):
t.goto(x * l, y * l)
- Перемещение черепахи в заданные координаты.t.dot(2, 'red')
- Рисование точки красным цветом с радиусом 2 (толщина пера).t.done()
- Завершение работы черепахи необходимо, чтобы окно не закрывалось до нажатия пользователя.
import turtle as t
t.tracer(0)
t.left(90)
l = 30
for _ in range(4):
t.forward(8*l)
t.right(90)
t.color('green')
for _ in range(3):
t.forward(12 * l)
t.right(120)
t.up()
for x in range(-30, 30):
for y in range(-30, 30):
t.goto(x * l, y * l)
t.dot(2, 'red')
t.done()
После успешного запуска нашей программы мы получаем вот такой рисунок и переносим его в paint для удобного масштабирования и счета точек:
Зачастую мы можем получить ошибочный результат из-за подобных спорных точек, предлагается сильно увеличить масштаб отрисовки (переменную l
) и присмотреться к этой точке снова (рисунок 2).