К содержанию

Задание 6 · Простейшие алгоритмы для исполнителей

Практика и итог

Вся тема на одной странице: как решилась задача темы, главное из подтем, порядок решения и частые ошибки.

Одна задача — вся тема

Задача темы — точки пересечения двух прямоугольников вместе с границей — решается приёмами первых трёх подтем по очереди. Пролистай решение: в подписи каждого шага — подтема, откуда приём.

  1. Подтема 1. По командам: прямоугольник A 8 × 6 от начала координат, сдвиг без следа в (3; 2) и прямоугольник B 7 × 5.
  2. Подтема 2. В одной фигуре A с границей (8 + 1) · (6 + 1) = 63 точки, строго внутри (8 − 1) · (6 − 1) = 35.
  3. Подтема 3. Пересечение: 3 ≤ x ≤ 8 и 2 ≤ y ≤ 6, это 6 · 5 = 30 точек. Ответ задачи темы — 30.

Остальные подтемы — для фигур, которые на черновике не нарисовать: рисунок программой на turtle (подтема 4), наклонные стороны (подтема 5) и подсчёт точек программой (дополнительный урок). Для задачи темы они дают тот же ответ — 30.

Карта темы

Каждая подтема дала несколько правил, и любое решение собирается из них. Сверху — путь от команд к ответу, ниже — по блоку на подтему. Заголовок блока ведёт на подтему.

  1. Командыначало, голова, повторы
  2. Фигурына черновике или программой
  3. Подсчётнужная область и граница

1Команды и след

  • состояниеположение, направление головы, хвост
  • Назаддвижение спиной, голова не поворачивается
  • Повтори kвыполнить все k раз
  • хвост поднятдвижение без линии

2Точки внутри и на границе

  • (a − 1)(b − 1)точек строго внутри прямоугольника a × b
  • (a + 1)(b + 1)точек вместе с границей
  • площадь, периметрдругие величины, не число точек

3Две фигуры

  • пересечениебо́льшая из левых границ, меньшая из правых
  • объединениеточки A + точки B − общие
  • касаниеплощадь 0, а точки есть

4Рисунок программой

  • setheading(90)голова вверх, как в условии
  • масштаб kумножать расстояния, а не углы
  • goto(x * k, y * k)сетка тем же масштабом

5Наклонные стороны

  • поворот180° минус угол фигуры
  • по столбцамцелые y между сторонами в каждом x
  • спорная точкапроверить по уравнению стороны

6Подсчёт программойдополнительный урок

  • in_a and in_bпересечение; or — объединение
  • ≥ и >с границей и без — ответы разные
Карта темы: путь к ответу сверху и главное из каждой подтемы. Номер блока — номер подтемы.

Как решать

Любое задание 6 решается одним порядком из пяти шагов. Каждому шагу ты уже учился — под ним номера подтем:

Главный шаг — фигуры: ошибки почти всегда случаются до подсчёта. Скажи движения словами — «вверх, вправо, вниз, влево» — и сверь с рисунком; если фигура не та, ищи ошибку в командах.

Частые ошибки

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

начальное направление
Черепаха начала вправо → голова вдоль оси ординат — вверх. Спроси себя: куда смотрит голова по условию?подтема 1
Назад
после «Назад» Черепаху развернули → голова смотрит туда же. Спроси себя: была ли команда поворота?подтема 1
сокращённый повтор
повторений меньше: «фигура та же» → выполнить все k повторений. Спроси себя: откуда начнётся следующий блок?подтема 1
граница
посчитали с границей, а спрашивали строго внутри → (a − 1)(b − 1) вместо (a + 1)(b + 1). Спроси себя: что сказано о точках на линиях?подтема 2
объединение сложением
точки A + точки B → точки A + точки B − общие. Спроси себя: не посчитаны ли общие точки дважды?подтема 3
угол × масштаб
t.right(90 * k) → t.right(90). Спроси себя: на k умножены только расстояния?подтема 4
сетка без масштаба
t.goto(x, y) → t.goto(x * k, y * k). Спроси себя: стоят ли точки на узлах рисунка?подтема 4
дорисованная линия
незамкнутую линию замкнули и посчитали область → считают только замкнутую фигуру. Спроси себя: вернулась ли Черепаха в начало контура?подтема 2

Итог

Тема пройдена: задача темы решена от команд до ответа 30. Вот что взять с собой.

  • ПорядокНачало, фигуры, область, граница, подсчёт.
  • КомандыГолова по условию, «Назад» без поворота, все повторы.
  • Две фигурыПересечение — общие границы, объединение — минус общие.
  • ПрограммойМасштаб — только расстояниям, сетка — тем же масштабом.
  • Задача темы3 ≤ x ≤ 8, 2 ≤ y ≤ 6: 6 · 5 = 30.

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1

Сколько точек с целыми координатами строго внутри прямоугольника 8 × 6? А вместе с границей?

ОтветСкрыть ответ
Ответ

Внутри (8 − 1) · (6 − 1) = 35, с границей (8 + 1) · (6 + 1) = 63.

Вопрос 2

Фигуры 0 ≤ x ≤ 8 и 3 ≤ x ≤ 10. Какие x у их пересечения?

ОтветСкрыть ответ
Ответ

3 ≤ x ≤ 8: левая граница — бо́льшая из левых, правая — меньшая из правых.

Вопрос 3

В фигуре A 63 точки, в B — 48, общих 30. Сколько точек в объединении?

ОтветСкрыть ответ
Ответ

63 + 48 − 30 = 81: общие точки иначе посчитаны дважды.

Вопрос 4

У фигуры наклонные стороны. Как считать её точки?

ОтветСкрыть ответ
Ответ

По столбцам: для каждого целого x — целые y между сторонами; спорные точки проверяют по уравнению стороны. Или программой.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Прямоугольник, обойдённый с половиной

Черепахе был дан для исполнения алгоритм «Повтори 7 [Вперёд 12 Направо 90 Вперёд 5 Направо 90]». Голова направлена вверх. Определи, сколько точек с целочисленными координатами находится внутри области, ограниченной линией. Точки на линии учитывать не следует.

Введите число.

Повторный обход влево

Черепахе был дан для исполнения алгоритм «Повтори 3 [Вперёд 4 Налево 90 Вперёд 9 Налево 90]». Голова направлена вправо. Определи, сколько точек с целочисленными координатами находится внутри области, ограниченной линией, включая точки на линии.

Введите число.

Пересечение двух фигур

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

Повтори 2 [Вперёд 10 Направо 90 Вперёд 8 Направо 90]Поднять хвостВперёд 3 Направо 90 Вперёд 1 Налево 90Опустить хвостПовтори 2 [Вперёд 9 Направо 90 Вперёд 7 Направо 90]

Введите число.

Треугольник, обойдённый дважды

Черепахе был дан для исполнения алгоритм «Повтори 6 [Вперёд 12 Направо 120]». Голова направлена вверх. Определи, сколько точек с целочисленными координатами находится внутри области, ограниченной линией. Точки на линии учитывать не следует.

Введите число.

Площадь фигуры Г

Черепахе был дан для исполнения алгоритм «Вперёд 8 Направо 90 Вперёд 4 Направо 90 Вперёд 5 Налево 90 Вперёд 6 Направо 90 Вперёд 3 Направо 90 Вперёд 10». Голова направлена вверх. Определи площадь области, ограниченной линией.

Введите число.