Условие: Тип 6 №47407
• Статья подготовлена командой itpy
• Полный разбор задачи в Notion
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. Черепахе был дан для исполнения следующий алгоритм:
Повтори 4 [Вперёд 8 Направо 90]
Повтори 3 [Вперёд 12 Направо 120]
Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом: Повтори 4 [Вперёд 8 Направо 90]
и находиться вне области, ограниченной линией, заданной данным алгоритмом: Повтори 3 [Вперёд 12 Направо 120]. Точки на линии учитывать не следует.
Решение через Python и комментарии к нему:
- 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() - Завершение работы черепахи необходимо, чтобы окно не закрывалось до нажатия пользователя.
После успешного запуска нашей программы мы получаем вот такой рисунок и переносим его в paint для удобного масштабирования и счета точек:
Зачастую мы можем получить ошибочный результат из-за подобных спорных точек, предлагается сильно увеличить масштаб отрисовки (переменную l) и присмотреться к этой точке снова (рисунок 2).