Задание 6
Простейшие алгоритмы для исполнителей
Как восстановить фигуры по командам Черепахи и посчитать целые точки внутри — вручную, рисунком и программой.
6 подтем · 35 задач + 7 дополнительных · базовый · ≈ 4 мин
Подтема 1 из 6
Команды и след
Как Черепаха выполняет команды и где окажутся фигуры задачи темы.
Как устроена тема
В задании 6 Черепаха рисует фигуры по командам, а спрашивают, сколько точек с целыми координатами лежит внутри фигуры или в общей части двух фигур. Вот задача, которую мы будем решать всю тему:
«Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. Ей дали алгоритм:
Повтори 2 [Вперёд 6 Направо 90 Вперёд 8 Направо 90]Поднять хвостВперёд 2 Направо 90 Вперёд 3 Налево 90Опустить хвостПовтори 2 [Вперёд 5 Направо 90 Вперёд 7 Направо 90]Определи, сколько точек с целочисленными координатами находится внутри пересечения фигур, ограниченных заданными алгоритмом линиями. Точки на линиях учитывать».
Сначала по командам восстанавливают фигуры, потом считают точки той области, о которой спрашивают. Разберём, что сказано в условии:
| В условии | Что это значит |
|---|---|
| начало координат, голова вдоль оси ординат, хвост опущен | Черепаха стоит в (0; 0), смотрит вверх и сразу рисует |
| фигуры, ограниченные линиями алгоритма | алгоритм рисует два прямоугольника |
| пересечение фигур | общая часть двух прямоугольников |
| точки с целочисленными координатами | точки вроде (3; 2), а не (2,5; 1) |
| точки на линиях учитывать | точки на сторонах тоже считаем |
Тема состоит из шести подтем — у каждой своя страница. Идём по ним по порядку:
- Команды и след — ты сейчас здесь.
- Точки внутри и на границе — сколько точек в одной фигуре.
- Две фигуры — пересечение и ответ задачи темы: 30.
- Рисунок программой — та же задача рисунком на turtle.
- Наклонные стороны — фигуры, у которых стороны не по клеткам.
- Подсчёт программой — дополнительный урок: считаем точки без рисунка.
Состояние Черепахи
Черепаха выполняет команды буквально, и после каждой команды нужно знать три вещи: где она, куда смотрит голова и опущен ли хвост. Это и есть её состояние.
Положение записывают координатами (x; y): x отсчитывают вправо от начала координат, y — вверх, отрицательные значения — влево и вниз. Когда хвост опущен, Черепаха оставляет за собой линию; когда поднят — перемещается без следа.
Начальное состояние в условии описано словами. Их нужно перевести:
| В условии | Значит |
|---|---|
| находится в начале координат | в точке (0; 0) |
| голова направлена вдоль положительного направления оси ординат | смотрит вверх |
| голова направлена вдоль положительного направления оси абсцисс | смотрит вправо |
| хвост опущен | перемещения рисуют линию |
Начальное направление важно: та же программа при старте вправо нарисует фигуру, повёрнутую на 90°.
Движение и поворот
«Вперёд» и «Назад» меняют положение, «Направо» и «Налево» — только направление.
«Вперёд n» перемещает Черепаху на n единиц туда, куда смотрит голова. «Назад n» — на n единиц в обратную сторону, а голова при этом продолжает смотреть туда же. «Направо m» поворачивает голову на m градусов по часовой стрелке, «Налево m» — против часовой; Черепаха остаётся на месте.
Пусть Черепаха в (2; 3) и смотрит вверх. Каждая команда из таблицы выполняется из этого состояния:
| Команда | Положение | Голова |
|---|---|---|
| Вперёд 4 | (2; 7) | вверх |
| Назад 4 | (2; −1) | вверх |
| Направо 90 | (2; 3) | вправо |
| Налево 90 | (2; 3) | влево |
| Направо 180 | (2; 3) | вниз |
Поворот отсчитывают от текущего направления: если Черепаха уже смотрит вправо, «Направо 90» направит её вниз, а не вправо.
Повтори
«Повтори k [ … ]» выполняет команды в скобках k раз подряд, в том же порядке.
Первая часть алгоритма темы — «Повтори 2 [Вперёд 6 Направо 90 Вперёд 8 Направо 90]». За первое повторение Черепаха проходит 6 вверх, поворачивает вправо, проходит 8 вправо и поворачивает вниз. За второе — 6 вниз и 8 влево. Получается прямоугольник 8 × 6 с вершинами (0; 0), (0; 6), (8; 6), (8; 0), а Черепаха снова в (0; 0) и смотрит вверх.
За одно повторение здесь рисуются две стороны, поэтому для четырёх сторон хватает двух повторений: число повторений не обязано совпадать с числом сторон.
Лишние повторения проходят по уже нарисованным линиям: фигура не меняется, а положение Черепахи — меняется. «Повтори 5 [Вперёд 3 Направо 90]» рисует квадрат 3 × 3, а пятое повторение ещё раз проходит его левую сторону — Черепаха заканчивает в (0; 3). Если после такого блока идут другие команды, они начнутся именно оттуда.
Переход ко второй фигуре
С поднятым хвостом Черепаха перемещается без линии: так она переходит к началу следующей фигуры.
После первого прямоугольника Черепаха в (0; 0) и смотрит вверх. Хвост поднимается, и выполняются четыре команды:
| Команда | Положение | Голова |
|---|---|---|
| Вперёд 2 | (0; 2) | вверх |
| Направо 90 | (0; 2) | вправо |
| Вперёд 3 | (3; 2) | вправо |
| Налево 90 | (3; 2) | вверх |
Хвост опускается в (3; 2), голова смотрит вверх. Второй блок рисует оттуда прямоугольник высотой 5 и шириной 7, поэтому вторая фигура занимает 3 ≤ x ≤ 10 и 2 ≤ y ≤ 7. Весь алгоритм по шагам:
- Начало: (0; 0), голова вверх, хвост опущен.
- Вперёд 6: теперь (0; 6).
- Направо 90: голова вправо, положение то же.
- Вперёд 8: теперь (8; 6).
- Направо 90: голова вниз, положение то же.
- Вперёд 6: теперь (8; 0).
- Направо 90: голова влево, положение то же.
- Вперёд 8: теперь (0; 0).
- Направо 90: голова вверх, положение то же.
- Хвост поднят: дальше перемещения без линии.
- Вперёд 2: теперь (0; 2).
- Направо 90: голова вправо, положение то же.
- Вперёд 3: теперь (3; 2).
- Налево 90: голова вверх, положение то же.
- Хвост опущен: перемещения снова рисуют.
- Вперёд 5: теперь (3; 7).
- Направо 90: голова вправо, положение то же.
- Вперёд 7: теперь (10; 7).
- Направо 90: голова вниз, положение то же.
- Вперёд 5: теперь (10; 2).
- Направо 90: голова влево, положение то же.
- Вперёд 7: теперь (3; 2).
- Направо 90: голова вверх, положение то же.
Итак, первая фигура — прямоугольник 0 ≤ x ≤ 8, 0 ≤ y ≤ 6, вторая — 3 ≤ x ≤ 10, 2 ≤ y ≤ 7. Точки одной фигуры считаем в подтеме 2, общие точки двух — в подтеме 3.
Итого
- Состояниеположение (x; y), направление головы и хвост
- Вперёд, Назадменяют положение; «Назад» не поворачивает голову
- Направо, Налевоменяют только направление, от текущего
- Повтори kблок k раз по порядку; лишние повторы идут по тем же линиям
- Хвост поднятперемещение без линии — переход ко второй фигуре
Проверьте себя
Ответь сначала сам, потом открой ответ.
Черепаха в (0; 0), голова вверх. Выполни команды:
Вперёд 5Направо 90Вперёд 3Назад 1Налево 90Вперёд 2Где окажется Черепаха и куда будет смотреть?
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
Практика
Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.
Назад без разворота
Черепаха находится в начале координат, голова направлена вверх. Ей дали алгоритм «Вперёд 4 Направо 90 Вперёд 3 Назад 7 Налево 90 Вперёд 2». Определи координаты Черепахи после выполнения алгоритма.
Введите координаты x и y через пробел.
Подсказка
«Назад» перемещает Черепаху в обратную сторону, но голова продолжает смотреть туда же.
Решение
Черепаха поднимается до (0; 4), поворачивает вправо и доходит до (3; 4). «Назад 7» ведёт её влево до (−4; 4), а голова по-прежнему смотрит вправо. «Налево 90» направляет голову вверх, и последний шаг ведёт в (−4; 6).
Ответ: -4 6
Лестница из четырёх ступеней
Черепаха находится в начале координат, голова направлена вверх. Ей дали алгоритм «Повтори 4 [Вперёд 5 Направо 90 Вперёд 5 Направо 270]». Определи координаты Черепахи после выполнения алгоритма.
Введите координаты x и y через пробел.
Подсказка
«Направо 270» поворачивает голову так же, как «Налево 90».
Решение
За одно повторение Черепаха проходит 5 вверх, поворачивает вправо и проходит 5 вправо, а «Направо 270» снова направляет голову вверх. Четыре такие ступеньки: 4 · 5 = 20 вправо и 20 вверх.
Ответ: 20 20
Лишнее повторение треугольника
Черепаха находится в начале координат, голова направлена вверх. Ей дали алгоритм «Повтори 4 [Вперёд 10 Направо 120]». Определи координаты Черепахи после выполнения алгоритма.
Введите координаты x и y через пробел.
Подсказка
Три повторения замыкают треугольник и возвращают Черепаху в начало.
Решение
Три повторения рисуют равносторонний треугольник и возвращают Черепаху в (0; 0) головой вверх. Четвёртое повторение проходит первую сторону ещё раз — до (0; 10).
Ответ: 0 10
Где начнётся вторая фигура
Черепаха находится в начале координат, голова направлена вверх, хвост опущен. Ей дали алгоритм «Повтори 2 [Вперёд 9 Направо 90 Вперёд 7 Направо 90] Поднять хвост Вперёд 3 Направо 90 Вперёд 4 Налево 90 Опустить хвост». Определи координаты точки, в которой Черепаха опустит хвост.
Введите координаты x и y через пробел.
Подсказка
Сначала найди, где окажется Черепаха после прямоугольника и куда будет смотреть.
Решение
Два повторения обходят прямоугольник 7 × 9 и возвращают Черепаху в (0; 0) головой вверх. С поднятым хвостом она проходит 3 вверх — до (0; 3), поворачивает вправо и проходит 4 — до (4; 3), затем поворачивает вверх. Здесь хвост и опускается.
Ответ: 4 3