Найти тему

Разбор номера 47246 ЕГЭ по информатике #6

Условие: № 47246

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

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

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

from turtle import *

left(90)
speed(10)
l = 20
for _ in range(4):
forward(14*l)
right(120)
done()

Описание к первой части решения задачи через библиотеку turtle

  1. импортируем все методы (*) библиотеки turtle
  2. -
  3. обязательно разворачиваем голову Черепахи вдоль оси ординат (как сказано в условии)
  4. увеличим скорость отрисовки пера, чтобы не ждать
  5. добавляем переменную L, отвечающую за масштаб фигуры на холсте
  6. удовлетворяя условию, повторяем 4 раза действия:
  7. вперед 14 шагов (пикселей на масштаб L)
  8. разворачиваем направление головы вправо на 120 градусов (не зависит от масштаба)
  9. команда done() необходима для фиксации отрисованной фигуры на холсте (чтоб она не закрывалась).
from turtle import *

left(90)
speed(10)
l = 20
for _ in range(4):
forward(14*l)
right(120)

color('red')
up()
for x in range(0, 15):
for y in range(0, 15):
goto(x * l, y * l)
dot('blue')
done()

Продолжим описание первого варианта решения задачи через библиотеку turtle, вторая часть:

10. меняем цвет пера на красный (или любой другой)

11. команда up() поднимает перо, чтобы не было лишних элементов на холсте

12. так как наша фигура лежит в первой четверти (можно увидеть по картинке и началу отрисовки), то перебираем x в диапазоне от 0 до большего шагу числа, чтобы покрыть всю фигуру

13. аналогичный перебор делаем для переменной y

14. команда goto() переносит наше перо в координату, не забываем про масштаб L

15. ставим точку на (цвет можно было поменять здесь, как указано на картинке)

Рассмотрим подробнее второй вариант решения задачи через библиотеку turtle :

7. возьмем полученную нами фигуру и зальем ее через begin_fill() и end_fill(), важно взять такое кол-во повторений итераций цикла for, чтобы фигура отрисовывалась ровно один раз. Не должно быть повторных кругов по кромке фигуры

11. заканчиваем заливку

12. создаём объект, используя метод getcanvas()

13. и счетчик count, для счета точек лежащих внутри заливки (фигуры)

14. этот вариант решения подходит для очень больших фигур, поэтому берем диапазон от -100 до 100 с соблюдением масштаба

15. создаем “прямоугольник” через метод find_overlapping(x, y, x, y) , но за счет передачи в него одной и той же точки - получается не прямоугольник, а точка в заливке

16. если точка лежит внутри заливки и совпадает с ее цветом

17. то добавляем такую точку к счетчику -

18. программа выведет в консоль подходящее число точек

Ответ: 78

Информатика ЕГЭ | itpy 👨‍💻

Присоединяйтесь и готовьтесь вместе с нами: https://t.me/+SIliQTddHE8xNTk6
Присоединяйтесь и готовьтесь вместе с нами: https://t.me/+SIliQTddHE8xNTk6